Interface domotique LCD tactile
Écran tactile LCD programmable qui peut être installé dans un boîtier standard à la place d'un interrupteur d'éclairage.
Présentation
Le contrôleur HMI (Human Machine Interface) se connecte à votre système domotique via réseau WiFi pour envoyer et recevoir des messages MQTT en réponse aux interactions des utilisateurs sur l'écran ou aux événements qui se produisent dans votre résidence. Le résultat est un contrôleur attrayant et hautement personnalisable pour votre système domotique que vous pouvez construire vous-même!
Le contrôleur HMI utilise un écran tactile LCD Nextion 2,4" monté dans un boîtier imprimé en 3D comme panneau tactile pour le contrôle de la résidence et l'affichage des informations. Un microcontrôleur basé sur ESP8266 fournit la connectivité WiFi et le contrôle du système. Le projet a été développé pour s'intégrer à Home Assistant et OpenHAB mais est compatible avec toute autre plate-forme d'automatisation compatible MQTT telle que Domoticz, Node-Red, Wink, SmartThings, Vera, HomeKit, etc.
Le code Arduino pour l'ESP8266 fournit une passerelle générique entre le protocole MQTT et le jeu d'instructions Nextion. Un fichier d'affichage IHM Nextion de base a été inclus avec plusieurs pages de différentes dispositions pour fournir des commandes utilisateur ou pour présenter des informations en réponse aux messages MQTT envoyés au périphérique.
Nomenclature
Pour construire une version simple de ce contôleur HMI, vous aurez au minimum besoin de l'écran Nextion et du WeMos D1 Mini, de 4 fils de connexion et d'un câble USB pour alimenter les deux appareils.
Une version complète prête à installer nécessitera les composants suivants:
- Écran tactile LCD 2,4 pouces Nextion
- Microcontrôleur WiFi WeMos D1 Mini ESP8266
- Plaque de montage imprimée en 3D
- Boîtier arrière imprimé en 3D
- Mean Well IRM-03-5 AC à 5VDC Alimentation
- PCB
- Transistor 2N3904 NPN
- Résistance 1k Ohm
Tout d'abord, une note de précaution
Ce projet nécessite une connaissance de base de la soudure, de l'électronique, de la programmation Arduino, du protocole MQTT et des mesures de précaution concernant le travail avec le courant alternatif. Ce point mérite d'être répété, alors essayons une police plus grande pour nous assurer que tout le monde l'obtient:
CE PROJET IMPLIQUE LE TRAVAIL AVEC DE LA TENSION ÉLECTRIQUE ET VOUS POURRIEZ VOUS TUER ET / OU METTRE LE FEU À VOTRE RÉSIDENCE.
Le résultat final est un boîtier qui se connecte au réseau électrique et qui sera placé dans une boîte électrique pour les années à venir. Il ne portera aucune sorte de certification UL / ULC / CE / etc. Procédez avec une extrême prudence.
Commençons!
Si vous voulez pas trop lire et vous lancer directement, suivez les étapes ci-dessous pour construire et configurer votre appareil. Continuez à lire après cela pour avoir des informations sur la façon dont tout cela fonctionne réellement.
Instructions étape par étape
Étape 1 - Arduino Sketch
Commencez par déployer votre code sur l'ESP8266 et le connecter au WiFi et à votre serveur MQTT.
Étape 2 - Nextion HMI
Ensuite, vous transférerez le micrologiciel de l'écran tactile Nextion avec le logiciel fourni.
Étape 3 - Assemblage électronique
Nous pouvons maintenant raccorder l'ESP8266 à l'écran tactile Nextion et fournir de l'énergie aux composantes.
Étape 4 - Finalitée du projet
Il est temps de passer du prototype à une boîte électrique adaptée au montage dans votre mur.
Étape 5 - Assistant à domicile
Utilisez les automatisations Home Assistant fournies pour contrôler et interagir avec le contrôleur HMI.
Étape 6 - Protocole MQTT
Il est temps de retirer les petites roues d'entraînement et d'apprendre à envoyer des commandes vers et depuis le l'interface via le protocole MQTT.
Transfert du micrologiciel vers l'ESP8266
La première chose à faire sera de transférer le micrologiciel fourni sur ce site vers l'ESP8266. Vous pouvez le faire en utilisant le NodeMCU Flasher (facile, Windows uniquement) ou l'IDE Arduino (moins facile, mais multiplate-forme). Vous ne devez exécuter ce processus qu'une seule fois, car les futures mises à jour du micrologiciel pourront être appliquées via l'interface Web embarquée.
Logiciel NodeMCU Flasher
Si vous utilisez Windows et que vous souhaitez simplement commencer sans travailler avec Arduino, suivez ces étapes. Ce sera probablement votre meilleure option.
Téléchargements requis
Procédez à l'écriture du micrologiciel sur l'ESP8266
-
Branchez votre WeMos D1 sur un port USB disponible sur votre PC
-
Lancez le le logiciel Flash NodeMCU et sélectionnez le COM Port de votre appareil dans le menu déroulant Port COM.
-
Sélectionnez l'onglet Configuration (1), puis cliquez sur la roue d'entée (2) la plus à droite pour ouvrir un navigateur de fichiers.
-
Accédez à l'image du micrologiciel que vous avez téléchargé et cliquez sur Ouvrir pour la sélectionner.
-
Revenez à l'onglet Operation et cliquez sur Flash (F).
Passez maintenant à la première configuration pour vous connecter à votre réseau WIFI.
Arduino IDE
Téléchargez l'IDE de votre plate-forme et suivez ces instructions pour ajouter la prise en charge de la plate-forme ESP8266. Le programme du contrôleur HMI est actuellement compilé avec le noyau Arduino pour ESP8266 version 2.5.0. Vous pouvez consulter le tutoriel suivant: L'essentiel sur Lolin NodeMCU v3 pour installer le noyau. Une fois celui-ci installé, sélectionnez dans le menu Outils, puis Type de carte la carte suivante: LOLIN (WEMOS) D1 R2 & mini. Par la suite, il est important de bien défénir le Flash size dans le même menu qui est de 4M (1M SPIFFS).
Bibliothèques requises
Ensuite, vous devrez ajouter plusieurs bibliothèques à votre environnement Arduino. Vous pouvez consulter le tutoriel suivant:
Gradateur de lumière IdO pour la procédure d'installation de librairies.
ArduinoJson JSON library for Arduino and embedded C++.
ArduinoMQTT MQTT library for Arduino.
WiFiManager ESP8266 WiFi Connection manager with web captive portal.
Configuration initiale
Une fois que le micrologiciel à été transféré dans le contrôleur HMI, redémarrez-le et connectez-vous au SSID WiFi et au mot de passe affichés sur le panneau LCD (ou à la sortie série si vous n'avez pas le LCD prêt).
Vous devriez être invité à ouvrir une page Web de configuration pour configurer votre réseau WiFi et votre mot de passe.
Vous pouvez définir les informations du courtier MQTT et les informations d'identification d'administrateur maintenant, ou utiliser l'interface Web pour le faire ultérieurement. Une fois que vous avez enregistré les paramètres, le contrôleur HMI se connecte à votre réseau. Félicitations, vous êtes maintenant en ligne!
SSID: YOUR_WIFI_SSID password: YOUR_WIFI_PASSWORD
MQTT Server: HA_SERER_IP_ADDRESS
MQTT User: YOUR_USERNAME MQTT Password: YOUR_PASSWORD
Vérifiez la connectivité du contrôleur HMI en allant sur l'addresse IP affichée sur le panneau LCD.
Vérifiez également la connectivité du contrôleur HMI sur votre serveur MQTT en allant sur l'add-on Mosquitto broker de Home Assistant.
Mises à jour du micrologiciel
Après le déploiement initial du micrologiciel, vous devriez pouvoir télécharger un nouveau micrologiciel via l'interface d'administration Web ou utiliser les mises à jour Arduino OTA sans vous connecter à votre appareil via USB.
Nextion HMI
Première utilisation de base**
Pour la plupart des utilisateurs, le déploiement du micrologiciel Nextion est simple. Il suffit de copier l'image compilée du micrologiciel sur une carte microSD au format FAT32, d'insérer la carte microSD dans l'écran LCD Nextion, puis d'appliquer 5VDC aux broches d'alimentation de l'écran. Ce dernier doit démarer son système d'exploitation, reconnaître le fichier .TFT et mettre à jour l'écran automatiquement. Une fois la mise à jour du micrologiciel terminée, vous pouvez couper l'alimentation et éjecter la carte microSD.
Les fichiers TFT compilés sont inclus pour les versions de base et améliorée du panneau. Ce projet n'utilise actuellement aucune fonctionnalité offerte dans le panneau amélioré et le périphérique amélioré ne tient pas dans le boîtier fourni. Il est fortement recommandé de ne pas utiliser l'affichage amélioré.
Une fois le projet assemblé, les futures mises à jour du micrologiciel Nextion peuvent être gérées par liaison WIFI en utilisant l'interface Web intégrée ou en émettant une commande MQTT avec une URL vers le fichier TFT cible.
Une fois le micrologiciel Nextion écrit, vous pouvez passer à la section Assemblage électronique pour tester le système assemblé.
Éditeur Nextion
Pour une personnalisation avancée, vous devrez télécharger l'éditeur Nextion (Windows uniquement).
Si vous souhaitez modifier l'interface du contrôleur HMI existante, vous devrez probablement supprimer certaines pages afin d'ajouter vos propres créations, car le projet consomme presque tout l'espace mémoire du panneau de base Nextion. Si vous souhaitez démarrer une nouvelle interface à partir de zéro, copiez la page Page 0 existante car le micrologiciel ESP8266 utilise la page 0 pour les interactions utilisateur et la configuration WiFi. Les automatisations de Home Assistant devront probablement être modifiées si des modifications majeures sont apportées au contrôleur HMI.
ID de page et d'objet Nextion
Les objets sont référencés par le numéro de page (pas le nom de la page) et l'ID d'objet (pas le nom de l'objet) comme indiqué dans l'éditeur Nextion. La notation Nextion pour chaque objet est de la forme p [1] . b [2]
signifiant la page numéro 1, l'ID d'objet 2. Il faut être prudant, car la notation peut sembler confuse, les noms des objets de bouton commenceront par b0
mais il pourrait s'agir de l'ID d'objet 2 ou 7, etc. D'autres objets seront nommés de manière similaire avec des lettres différentes. Par exemple, le premier champ de texte de la page sera automatiquement nommé t0
. Ignorez ces noms. Ils n'ont rien à voir avec l'ID d'objet et tous les objets, quel que soit leur type, ils sont toujours référencés de la manière suivante p [<numéro de page>]. B [<id d'objet>]
Un objet aura plusieurs attributs, dont certains peuvent être modifiés. Par exemple, un bouto nommé p [1] .b [2]
peut avoir un attribut "txt" que nous appellerions p [1] .b [2] .txt
. Tous les attributs ne peuvent pas être modifiés au moment de l'exécution, ceux qui peuvent être affichés dans une police verte dans l'éditeur Nextion (voir le volet droit de l'image ci-dessus).
Jeu d'instructions Nextion
Le Nextion accepte et envoie des commandes via l'interface série. Votre système domotique enverra des instructions Nextion enveloppées dans un message MQTT à remettre par le contrôleur HMI à votre écran. Un guide détaillé du jeu d'instructions Nextion est disponible ici.
Codes couleur Nextion
L'environnement Nextion utilise l'encodage RGB 565. Utilisez ce convertisseur pratique pour sélectionner vos couleurs et convertir au format RVB 565. Référence d'objet HASP Nextion
Référence d'objet du contrôleur HMI Nextion
Polices par défaut du contrôleur HMI
...
Utilisation des icônes FontAwesome
...
Exécuter ce logiciel avec un ESP8266 uniquement
Une des fonctionnalités de l'éditeur Nextion est le simulateur Nextion, qui permet à l'utilisateur de déboguer une HMI en cours de modification. Vous l'avez probablement utilisé si vous avez travaillé sur la modification de votre propre fichier HMI. Vous pouvez parcourir les écrans à l'aide de votre souris pour émettre des commandes tactiles et les alimenter et voir la sortie dans les zones de texte fournies.
Le simulateur Nextion vous permet d'exécuter du matériel en boucle avec votre microcontrôleur. Si vous avez un deuxième UART USB qui tourne (vous pouvez utiliser un deuxième WeMos ou Arduino si vous en avez un à portée de main), connectez l'UART RX à la broche D4 et le TX à la broche D7 qui sont les broches que vous utiliseriez pour brancher un vrai panneau. Dans le Nextion Simulator, vous pouvez ensuite sélectionner «User MCU Input», sélectionner le port COM de vos UART, régler le Baud sur 115200, puis cliquer sur Start.
Maintenant, le simulateur acceptera l'entrée et enverra la sortie à votre ESP8266 sans avoir un écran Nextion sous la main!
Assemblage électronique
Assemblage de test
Une fois que les images du micrologiciel ESP8266 et Nextion ont écrites, vous pouvez connecter les deux appareils ensemble en utilisant la schéma de câblage suivant:
WeMos Pin | Nextion Cable |
---|---|
5V | Red |
GND | Black |
D7 | Blue |
D4 | Yellow |
AVERTISSEMENT: ne connectez pas l'alimentation secteur et USB en même temps, car il est possible que vous puissiez endomager vos ports USB. Débranchez toujours l'alimentation AC avant de connecter le port USB ou série à l'ESP8266 et au panneau Nextion (ou de faire quoi que ce soit d'autre sur l'appareil d'ailleurs).
Modification de l'écran LCD de Nextion
L'écran LCD Nextion peut être modifié pour donner un peu plus d'espace autour des cosses à vis, ce qui peut aider au montage dans certains boîtiers. Si vous avez les moyens de le faire, vous pouvez utiliser un pistolet à air chaud pour retirer le connecteur JST XHP à 4 broches du PCB, puis utiliser le modèle de boîtier arrière lcdmod pour un espace supplémentaire dans votre boîte. Attention à ne pas arracher les traces de cuivre, car c'est facile à faire lors de l'application d'une force mécanique sur le connecteur.
Dans tous les cas, vous devrez souder le faisceau de câbles inclus avec l'écran Nextion directement aux broches comme indiqué dans l'image ci-dessous. Cela montre un panneau avec le connecteur retiré et un faisceau de câbles directement soudé au traces de cuivre du connecteur existant avec un simple fer à souder.
Schéma d'assemblage de la carte électronique
Ce projet a été initialement construit sur un protoboard. Notez que cette approche est probablement dangereuse, car la tenssion secteur 120VAC et les protoboards font mauvais mélange.
Clôture du projet
Boîtier imprimé en 3D
Le boîtier fourni comprend des fichiers STL prêts à être découpés et les modèles source modifiables dans l'édition gratuite de SketchUp Make.
Assemblage complet du projet
Câblage CA sur tension du secteur
Les câbles d'alimentation CA doivent être des câbles toronnés d'au moins 18 AWG 300 V avec une gaine blanche soudée au plot AC / N sur le PCB et un fil similaire avec une gaine noire soudée à AC / L. ces derniers, passeront dans un passe-fil en caoutchouc monté dans le boîtier arrière.
Inserts filetés
Les deux moitiés du boîtier sont maintenues ensemble par quatre vis à tête plate M2 de 20 mm à l'arrière du boîtier dans un ensemble de quatre inserts filetés M2 de 3 mm installés dans la plaque avant.
...
L'installation du circuit imprimé nécessite une paire de petites vis m2, j'utilise des vis M2 6 mm auto-taraudeuses mais la plupart des vis M2 4-6 mm devraient également fonctionner correctement.
Une fois que tout est assemblé, il suffit de faire passer les quatre vis de 20 mm m2 à l'arrière pour maintenir les deux moitiés du boîtier ensemble. Encore une fois, faites attention de ne pas les serrer trop fort car les vis peuvent briser les filets de la partie avant de la plaque d'interrupteur. Vous devriez maintenant être prêt à monter dans le mur!
Intégration à Home Assistant
La configuration de Home Assistant pour le contrôleur HMI nécessite d'apporter des modifications de base à votre configuration et de télécharger les packages dans votre installation. Il existe trois façon de réaliser l'intégration:
- Pour une installation standard de Home Assistant dans un conteneur (HassOS, HassIO, Docker, etc.).
- Si vous exécutez Home Assistant Core (venv, hassbian ou similaire).
- Si vous préférez effectuer toutes les modifications vous-même.
Installation standard de Home Assistant
Avant de déployer votre premier contrôleur HMI, vous devrez installer et configurer le courtier Mosquitto et les modules complémentaires Terminal & SSH à partir du tutoriel fourni sur ce site. Assurez-vous de suivre les instructions de configuration fournies pour les deux modules complémentaires.
Tutoriel sur l'installation de Home Assistant
Le package mosquitto broker nécessite un nom d'utilisateur et un mot de passe. Assurez-vous de les configurer sur le contrôleur HMI avec un utilisateur valide à partir de votre configuration Home Assistant, et définissez le broker sur l'adresse IP de votre installation Hass.io. Vous devrez également configurer l'intégration MQTT. Pour ce faire, dans la page fronticipice de Home Assistant, allez dans le menu Configuration, Intégrations, MQTT: Msquitto broker puis sur l'icône Options système pour Mosquitto broker et cocher la case Activer la découverte.
Une fois ceux-ci installés, configurés et démarrés, vous pouvez ouvrir le terminal et exécuter la commande suivante:
bash <(wget -qO- -o /dev/null https://git.sebastienjean.me/jeans/hmiinterface/raw/master/Home_Assistant/deployhasp.sh)
On vous demandera un nom de périphérique et le script fera le reste.
Une fois terminé, le script affichera une configuration Lovelace que vous pourrez coller dans votre interface Home Assistant existante via l'éditeur Lovelace.
Pour appliquer vos modifications, redémarrez Home Assistant de la manière suivante: Configuration, Contrôles du serveur, Gestion du serveur et REDÉMARRER, puis passez à la section Configuration initiale ci-dessous pour initialiser votre environnement.
Installation pour Home Assistant Core
Avant de déployer votre premier contrôleur HMI, vous devrez installer et configurer un courtier MQTT pour Home Assistant (voir la procédure ci-dessus).
Vous devrez accéder à votre installation Home Assistant en tant qu'utilisateur ayant accès à l'écriture dans votre installation Home Assistant. Pour la plupart des installations, ce sera homeassistant
sudo su -s /bin/bash homeassistant
cd ~/.homeassistant
bash <(wget -qO- -o /dev/null https://git.sebastienjean.me/jeans/hmiinterface/raw/master/Home_Assistant/deployhasp.sh)
Vous serez invité à entrer un nom de périphérique et le script fera le reste. Une fois terminé, redémarrez votre service Home Assistant pour appliquer les modifications, puis passez à la section Configuration initiale ci-dessous pour initialiser votre environnement.
Installation manuelle pour Home Assistant
Modifications du fichier configuration.yaml
Pour déployer votre premier contrôleur HMI dans Home Assistant, quelques modifications simples devront être apportées à votre fichier de configuration configuration.yaml
. Consultez la documentation pour le processus général de modification de ce fichier. Ces modifications ne doivent être effectuées qu'une seule fois, si vous ajoutez des contrôleusr HMI supplémentaires à une installation existante, vous pouvez passer directement à la section deployhasp.sh
ci-dessous.
Packages
Les fichiers de configuration et d'automatisation pour le contrôleur HMI sont regroupés sous forme de packages Home Assistant. Activez les packages dans la section homeassistant en haut de votre configuration.yaml
en ajoutant la ligne suivante:
homeassistant:
packages: !include_dir_named packages
MQTT
Ce projet repose sur la communication avec un broker MQTT. Vous devrez activer la prise en charge MQTT de Home Assistant en suivant le tutoriel précédant.
Recorder
Le composant Home Assistant Recorder est requis pour permettre à Home Assistant d'enregistrer la configuration et l'état de certains contrôles du contrôleur HMI lors des redémarrages. Vous pouvez activer l'enregistreur Home Assistant en ajoutant la ligne suivante à votre configuration.yaml
:
# Example configuration.yaml entry
recorder:
deployhasp.sh
Vous devez maintenant copier le répertoire des packages et le modifier pour votre nouvel appareil. Le nom du dossier, les noms de fichier et le contenu des fichiers .yaml devront tous avoir remplacé plate01 par votre nouveau nom de périphérique.
Le script deployhasp.sh
automatisera cette tâche et peut être exécuté avec les commandes suivantes:
sudo su -s / bin / bash homeassistant
cd ~ / .homeassistant
bash <(wget -qO- -o / dev / null https://git.sebastienjean.me/jeans/hmiinterface/raw/master/Home_Assistant/deployhasp.sh)
Enfin, vous devrez redémarrer Home Assistant pour appliquer vos modifications, puis passer à la section Configuration initiale ci-dessous pour initialiser votre environnement.
Configuration initiale
Configuration de Lovelace
Lovelace ne prend pas en charge l'automatisation de l'interface utilisateur, donc quelques étapes manuelles doivent se produire ensuite
Au démarrage, le fichier d'affichage HMI par défaut contient des boutons vides sans texte. Dans la page principale de Lovelace, sélectionnez le trois points verticaux ⁝, Configurer l'interface utilisateur, puis encore les trois points verticaux ⁝ et Éditeur de configuration. Ajoutez le texte suivant sous title: Home
:
- badges:
- entity: binary_sensor.plate01_connected
- entity: sensor.plate01_status
cards:
- entity: automation.hasp_plate01_00_firsttimesetup
hold_action:
action: more-info
name: Click here for HASP plate01 First-Time Setup
show_icon: false
show_name: true
tap_action:
action: call-service
service: automation.trigger
service_data:
entity_id: automation.hasp_plate01_00_firsttimesetup
type: entity-button
- entities:
- entity: input_select.hasp_plate01_theme
- entity: light.hasp_plate01_selected_foreground_color
icon: 'mdi:palette'
name: plate01 Selected Foreground Color
- entity: light.hasp_plate01_selected_background_color
icon: 'mdi:palette'
name: plate01 Selected Background Color
- entity: light.hasp_plate01_unselected_foreground_color
icon: 'mdi:palette'
name: plate01 Unselected Foreground Color
- entity: light.hasp_plate01_unselected_background_color
icon: 'mdi:palette'
name: plate01 Unselected Background Color
show_header_toggle: false
title: plate01 Colors
type: entities
- entities:
- entity: input_number.hasp_plate01_activepage
- entity: input_number.hasp_plate01_pagebutton1page
- entity: input_text.hasp_plate01_pagebutton1label
- entity: input_select.hasp_plate01_pagebutton1font
- entity: input_number.hasp_plate01_pagebutton2page
- entity: input_text.hasp_plate01_pagebutton2label
- entity: input_select.hasp_plate01_pagebutton2font
- entity: input_number.hasp_plate01_pagebutton3page
- entity: input_text.hasp_plate01_pagebutton3label
- entity: input_select.hasp_plate01_pagebutton3font
show_header_toggle: false
title: plate01 Page Selection
type: entities
- entities:
- light.plate01_backlight
show_header_toggle: false
title: plate01 Backlight
type: entities
path: plate01
title: plate01
Cliquez sur Enregistrer puis sur X pour quitter l'éditeur texte et encore sur X pour quitter la modification de Lovelace.
Dans l'onglet PLATE01, cliquez sur Click here for HASP plate01 First-Time Setup et redémarez le seveur par la suite.
Contrôle MQTT
MQTT
MQTT est un protocole IdO standard largement utilisé partout, des petits projets domotiques aux environnements IdO industriels mondiaux. Considérez-le comme un "twitter pour les appareils" - cela fonctionne de la même manière. MQTT est un bus de messages "publier / s'abonner", où les appareils connectés peuvent publier des messages sur des sujets, et d'autres appareils peuvent s'abonner à ces sujets pour recevoir le message publié. MQTT nécessite un serveur MQTT central que nous appelons un "broker". Les services de broker MQTT intégrés sont disponibles dans Home Assistant et OpenHAB ou vous pouvez exécuter votre propre instance autonome. Le broker Mosquitto MQTT est une solution open source commune et est probablement un bon point de départ pour un usage domestique.
À la base, le contrôleur HMI sert de passerelle entre MQTT et l'écran LCD Nextion. Il "s'abonnera" aux messages MQTT envoyés par votre logiciel domotique et transmettra le contenu de ces messages à l'écran LCD Nextion. Les interactions de l'écran LCD, telles qu'un utilisateur appuyant sur un bouton, sont renvoyées à votre système domotique sous forme de messages MQTT publiés.
Afin d'utiliser le contrôleur HMI à son plein potentiel, vous devrez comprendre comment l'écran LCD Nextion envoie et reçoit des commandes et comment faire interagir votre système domotique avec ces commandes via MQTT.
Exemples de messages MQTT
Avec les informations ci-dessus, nous pouvons maintenant jeter un œil à quelques exemples de transactions MQTT. Pour commencer, personnalisons le texte apparaissant sur un bouton. Le bouton le plus haut sur la première page est p [1] .b [4]
. Si nous voulons définir le texte de ce bouton pour lire le contrôleur HMI, nous pouvons envoyer le message MQTT suivant:
topic: hasp / plate01 / command / p [1] .b [4] .txt
message: "HASP"
Le contrôleur HMI nommé plate01
sera abonné à la commande hasp / plate01 / topic
. Quand il voit ce message, il enverra au Nextion LCD la commande p [1] .b [4] .txt = "HASP"
qui mettra à jour le texte sur notre bouton.
Essayons maintenant l'un dans l'autre sens. Lorsqu'un utilisateur appuie sur ce bouton, le contrôleur HMI va publier un message MQTT qui ressemble à ceci:
topic: hasp / plate01 / state / p [1] .b [4]
message: ON
Votre système domotique sera abonné à hasp / plate01 / state
. Lorsque l'exemple de message ci-dessus est publié, votre système domotique saura que quelqu'un a appuyé sur le bouton p [1] .b [4]
sur le contrôleur HMI nommé plate01
et peut prendre les mesures appropriées en réponse.
Exemple d'automatisation Home Assistant
Le contrôleur HMI comprend un certain nombre d'automatisations Home Assistant pour vous permettre d'être opérationnel. Pour tirer pleinement parti de votre contrôleur HMI, vous souhaiterez personnaliser ces automatisations en fonction de vos propres besoins. Les exemples d'automatisations fournis sont divisés en pages, et les idées présentées s'appuient les unes sur les autres pendant que vous parcourez chaque page dans l'ordre numérique. Si vous cherchez à comprendre comment cela fonctionne, commencez par la page 1 et progressez dans le reste.
Jetons un coup d'œil à un exemple d'automatisation pour gérer le bouton p [1] .b [4]
avec lequel nous venions de travailler. Les automatisations discutées ici seront spécifiques à Home Assistant mais les concepts devraient s'appliquer à n'importe quelle plate-forme domotique.
Envoyer des commandes de Home Assistant au contrôleur HMI
Le premier bloc de la page 1, comme la plupart des automatisations Home Assistant, commence par un déclencheur. Le nôtre ressemble à ceci:
- alias: hasp_plate01_p1_ScenesInit
trigger:
- platform: state
entity_id: 'binary_sensor.plate01_connected'
to: 'on'
- platform: homeassistant
event: start
Ce déclencheur se déclenche chaque fois que la plate01
du contrôleur HMI se connecte à Home Assistant, ou chaque fois que Home Assistant démarre. Lorsque le contrôleur HMI démarre, il n'y a pas de texte sur les boutons, donc la première chose que nous ferons est de commencer à envoyer des commandes pour dire au contrôleur HMI ce que nous voulons que nos boutons disent. Regardons la section action:
action:
- service: mqtt.publish
data:
topic: 'hasp/plate01/command/p[1].b[4].font'
payload: '2'
- service: mqtt.publish
data:
topic: 'hasp/plate01/command/p[1].b[4].txt'
payload: '"Lights On"'
La première action indique à Home Assistant de publier le message 2
sur le sujet hasp / plate01 / command / p [1] .b [4] .font
. Cette commande définit la police de notre bouton sur la police numéro 2 "Consolas 48 points". Cette police nous permet de placer 10 caractères dans un bouton de taille standard.
Notre prochaine action indique à Home Assistant de publier le message "Lights On"
sur le sujet hasp / plate01 / command / p [1] .b [4] .txt
. Notez l'utilisation de guillemets ici, car nous envoyons du texte au lieu d'une valeur numérique. Cette commande programme le bouton p [1] .b [4]
pour afficher le texte Lights On
.
Si vous souhaitez que ce bouton dise autre chose, vous pouvez apporter cette modification maintenant et redémarrer Home Assistant pour voir ce qui se passe.
Envoyer des commandes de HASP à Home Assistant
Le deuxième bloc de la page 1 dans notre exemple ressemble à ceci:
# Trigger scene.lights_on when p[1].b[4] pressed
- alias: hasp_plate01_p1_SceneButton4
trigger:
- platform: mqtt
topic: 'hasp/plate01/state/p[1].b[4]'
payload: 'ON'
action:
- service: scene.turn_on
entity_id: scene.lights_on
Cette automatisation est déclenchée lorsque Home Assistant reçoit le message ON
dans la rubrique hasp / plate01 / state / p [1] .b [4]
. L'action: appelle une scène Home Assistant appelée lights_on
qui a été définie ailleurs.
Vous pouvez changer l'action pour qu'elle soit tout ce que Home Assistant peut faire - allumer une lumière, jouer une chanson, avertir un utilisateur par SMS ou tout ce que vous pouvez penser.
Espace de noms MQTT
Par défaut, l'appareil s'abonne à hasp / <node_name> / command / #
pour accepter les commandes entrantes. L'appareil s'abonne également à hasp / <group_name> / command / #
pour accepter les commandes entrantes destinées à un groupe d'appareils.
Il existe deux sous-thèmes pour envoyer des commandes et recevoir des messages du panneau:
-
command
enverra des commandes ou définira l'attribut de l'affichage, comme le texte du bouton ou la luminosité de l'écran. L'attribut spécifique doit être ajouté en tant que sous-thème, la valeur à définir étant fournie comme charge utile. Par exemple, la commande suivante définira le texte affiché à la page 1 / bouton 4 sur "Lampe allumée":mosquitto_pub -h mqtt -t hasp/plate01/command/p[1].b[4].txt -m '"Lamp On"'
-
state
l'état sera envoyé par le panneau en réponse aux interactions des utilisateurs locaux ou aux commandes reçues qui fournissent une sortie en retour. Par exemple, si un utilisateur appuie sur le bouton 4 à la page 1, le panneau publiera un message:'hasp/plate01/state/p[1].b[4]' 'ON'
Syntaxe des commandes
Les messages envoyés au panneau sous la rubrique de commande seront traités selon les règles suivantes:
-t 'hasp/plate01/command' -m 'dim=50'
Une commande sans sous-thème enverra directement la commande dans la charge utile au panneau.-t 'hasp / plate01 / command / page' -m '1'
Le sous-thème de commande de page définira la page en cours sur l'appareil au numéro de page inclus dans la charge utile.-t 'hasp / plate01 / command / json' -m '["dim = 50", "page 1"]'
Le sous-sujet de commande json enverra un tableau JSON de commandes une par une au panneau.-t 'hasp / plate01 / command / p [1] .b [4] .txt' -m '"Lamp On"'
Une commande avec un sous-sujet définira l'attribut nommé dans le sous-sujet sur la valeur envoyée dans la charge utile.-t 'hasp / plate01 / command / p [1] .b [4] .txt' -m ''
Une commande avec un sous-sujet et une charge utile vide demandera la valeur actuelle de l'attribut nommé dans le sous-sujet à partir du panneau. La valeur sera renvoyée sous la rubrique d'état sous la forme 'hasp / plate01 / state / p [1] .b [4] .txt' -m '"Lamp On"'-t 'hasp / plate01 / command / statusupdate'
statusupdate publiera une chaîne JSON indiquant l'état du système.-t 'hasp / plate01 / command / reboot'
La commande reboot redémarrera le périphérique HASP.-t 'hasp / plate01 / command / factoryreset'
La commande factoryreset effacera les détails du WiFi, du nom de noeud et du courtier MQTT enregistrés pour réinitialiser l'appareil aux paramètres par défaut.-t 'hasp / plate01 / command / lcdupdate'
Le sous-sujet de commande lcdupdate sans message tentera de mettre à jour le Nextion à partir du référentiel HASP GitHub.-t 'hasp / plate01 / command / lcdupdate' -m 'http://192.168.0.10:8123/local/HASwitchPlate.tft'
Le sous-sujet de la commande lcdupdate tente de mettre à jour le Nextion à partir de l'URL HTTP nommée dans la charge utile.-t 'hasp / plate01 / command / espupdate'
Le sous-sujet de commande espupdate sans message tentera de mettre à jour l'ESP8266 à partir du référentiel HASP GitHub.-t 'hasp / plate01 / command / espupdate' -m 'http://192.168.0.10/local/HASwitchPlate.ino.d1_mini.bin'
Le sous-sujet de la commande espdupdate tente de mettre à jour l'ESP8266 à partir de l'URL HTTP nommée dans la charge utile.
Dans chacune de ces commandes, vous pouvez remplacer le
Code d'erreures MQTT (rc=n)
Si le contrôleur HMI ne peut pas se connecter au MQTT, il affichera un code retour sur l'écran comme RC = n. Ces codes sont spécifiés par la spécification MQTT ici.
Value | Return Code Response | Description |
---|---|---|
0 | 0x00 Connection Accepted | Connection accepted |
1 | 0x01 Connection Refused, unacceptable protocol version | The Server does not support the level of the MQTT protocol requested by the Client |
2 | 0x02 Connection Refused, identifier rejected | The Client identifier is correct UTF-8 but not allowed by the Server |
3 | 0x03 Connection Refused, Server unavailable | The Network Connection has been made but the MQTT service is unavailable |
4 | 0x04 Connection Refused, bad user name or password | The data in the user name or password is malformed |
5 | 0x05 Connection Refused, not authorized | The Client is not authorized to connect |
6-255 | Reserved for future use |