2020-08-11
md
MQTT avec Domoticz
Programmation du Sonoff dans l'EDI Arduino (1)-> <-Gestion du travail avec un Raspberry Pi étêté

Dans le premier billet de cette série, j'ai montré comment installer Domoticz un serveur domotique sur un Raspberry Pi. Ci-dessous, j'installerai un serveur MQTT sur un Raspberry Pi 3. Il s'agit d'un protocole de communication qui sera utilisé comme intermédiaire entre le serveur Domoticz et le matériel basé sur la puce ESP8266 que j'utilise pour contrôler des dispositifs.

Pour l'essentiel, j'avais déjà examiné le sujet dans deux billets intitulés Add an MQTT Broker to the Raspeberry Pi et Add MQTT to Domoticz. Néanmoins, j'espère que la présentation qui suit est meilleure. Au moins, elle est disponible en français. Ci-dessous il est question d'une utilisation de MQTT avec un Raspberry Pi 3, mais il est possible de suivre les instructions et d'installer ce service sur n'importe quel modèle Raspberry Pi.

Table des matières

  1. Qu'est-ce que MQTT ?
  2. Installation de Mosquitto MQTT
  3. Test de Mosquitto MQTT
  4. Chaînes MQTT
  5. Ajout d'un commutateur virtuel dans Domoticz
  6. Activation de MQTT dans Domoticz
  7. Chaînes MQTT de Domoticz
  8. Test de MQTT dans Domoticz

Qu'est-ce que MQTT ? toc

Message Queue Telemetry Transport, MQTT pour abréger, est l'un des protocoles de messagerie plus utilisés pour la communication entre les dispositifs de l'« Internet des objets » (IdO). Fait intéressant, le protocole a été développé en 1999, alors que l'IdO, qui connaît une croissance rapide, en était à ses balbutiements.

Le MQTT utilise un paradigme de publication-abonnement. Nous comprenons tous les connexions point à point entre les pairs. C'est la base des conversations téléphoniques entre deux personnes. La connexion client-serveur est une autre liaison point à point bien connue. Pour afficher une page Web, un navigateur, qui est le client, demande la page à un serveur HTML qui peut envoyer la page ou qui peut refuser de le faire. Dans ces types de liens, chaque partie doit adresser ses messages à son interlocuteur intentionnellement. Avec MQTT, les dispositifs peuvent publier des données vers le serveur MQTT (appelé broker en anglais soit« courtier ») ou s'abonner au serveur pour recevoir des données . Certains appareils publient en même temps qu'ils sont abonnés. Lorsqu'un dispositif publie des données, il n'est pas nécessaire qu'il sache quels seront les dispositifs qui sont abonnés au serveur pour les recevoir. Un dispositif abonné reçoit des données lorsqu'elles sont disponibles sans avoir à les demander d'un dispositif particulier. Au lieu de cela, le serveur agit comme un centre d'information qui reçoit toutes les données publiées organisées par «sujets», et envoie ces données à tous les abonnés de chaque sujet spécifique.

L'utilisation d'un serveur signifie que la publication de données d'un à plusieurs dispositifs est possible en même temps que la lecture de données de plusieurs vers un seul dispositif. Voici un arrangement typique.

Source des icônes : EpicCoders de www.flaticon.com, licence CC 3.0 BY

Le climatiseur est enregistré auprès du serveur MQTT pour recevoir tous les messages au sujet de la «température» et de l'«humidité». Les capteurs de température et d'humidité ne sont pas enregistrés pour recevoir des messages, ils ne font que publier des messages vers le serveur.

Toutes les dix minutes, le capteur de température publie la température ambiante. Dans la pratique, cela signifie qu'il envoie un seul numéro, disons 23, sous le sujet «température» au serveur MQTT, pour signifier qu'il fait actuellement 23°C. De même, toutes les quinze minutes, le capteur d'humidité publie des messages avec un seul numéro au sujet de l'«humidité» vers le serveur MQTT, pour signifier que le facteur d'humidité est de 62%. À son tour, le serveur MQTT transmet ces messages à l'unité de conditionnement d'air. Cette dernière décide si elle doit s'allumer ou s'éteindre sur la base de ces deux mesures.

L'« Internet des objets » est donc constitué de dispositifs pouvant communiquer entre eux dont certains peuvent agir en fonction des données obtenues. Un programme de domotique qui prend en charge le protocole MQTT peut être ajouté au système pour fournir plus d'« intelligence » et contrôle. L'architecture du système pourrait être quelque chose comme ci-dessous.

Source des icônes : EpicCoders de www.flaticon.com, licence CC 3.0 BY

Le programme de domotique est abonné au serveur MQTT pour recevoir tous les messages aux sujets de la «température», de la «pression» et de l'«état du climatiseur». Le climatiseur est abonné au même serveur pour recevoir tous les messages sur le thème «climatisation».

Comme auparavant, les capteurs de température et d'humidité publient des données vers le serveur. Mais maintenant, le programme de domotique qui est abonné pour recevoir cette information décide si le climatiseur doit être allumé ou éteint en tenant compte des données du capteur, de l'heure, du délai depuis la dernière fois que l'appareil est allumé ou éteint, la présence de personnes dans la maison, etc. Il ordonne au climatiseur de se mettre en marche ou de cesser de fonctionner en publiant un message sur le thème «climatisation». Le climatiseur publie des modifications sur son état sous le thème "état du climatiseur". Parce que le programme de domotique est abonné à ce thème, il sait quand la climatisation a été activée ou désactivée par un individu.

Les choses ne sont pas aussi simples, bien sûr. MQTT est un protocole de "transport", il ne dit rien sur le contenu des messages. Ce 23 du capteur de température veut-il dire 23° centigrade ou 23° Fahrenheit ? À moins que les capteurs de température et d'humidité ne soient fabriqués par la même entreprise qui fait le climatiseur, et à moins que l'un de ces périphériques ne gère un serveur MQTT, il y a très peu de chances que cela fonctionne sans un travail de préparation plus ou moins important. Pour le vrai IdO, où l'on peut acheter des capteurs d'un producteur, des appareils d'un autre et un pont avec un logiciel de domotique d'une troisième entreprise, il faut une syntaxe de message IdO universelle que MQTT pourrait transporter.

Des efforts ont été déployés dans cette direction, voir Homie une convention MQTT pour l'IdO de Marvin Roger, par exemple. Autant que je sache, rien n'a encore émergé qui soit largement utilisé. Néanmoins, il est bon d'utiliser MQTT. Il est pris en charge par Domoticz. L'utilisation d'un protocole standard est toujours une meilleure idée que la création d'une solution ad hoc. Mais comme cela deviendra évident, il faut souvent beaucoup de "colle" pour regrouper des éléments disparates.

Installation de Mosquitto MQTT toc

La seule exigence réelle concernant l'hôte du serveur MQTT est que l'ordinateur soit toujours en marche et connecté au réseau local. Le Raspberry Pi hébergeant le serveur Domoticz est peut-être le meilleur choix pour la plupart. Heureusement, l'une des versions à source ouverte la plus connue de MQTT, Mosquitto, fonctionne sur le petit ordinateur.

Les instructions originales écrites pour Raspbian Jessie sont obsolètes. J'ai trouvé que les paquets Mosquitto contenus dans les référentiels Raspbian depuis Stretch ne sont peut-être pas les plus à jour, mais ils sont assez récents. Cela permet une installation simple.

pi@rpi2b:~ $ sudo apt udpate ... pi@rpi2b:~ $ sudo apt install mosquitto -y

Exécuter sudo apt upgrade -y après le update et de redémarrer avant d'installer le paquet mosquitto pourrait s'averer nécessaire. Voir Installation de mosquitto dans Serveurs domotiques sur Raspbian Buster Lite (an anglais seulement) pour plus de détails.

Instructions d'installation pour Raspian Jessie (désuet)

En suivant ces instructions, il a été possible d'installer le serveur MQTT sans problème . Pour utiliser le référentiel Mosquitto Debian sur Mosquitto.org, il faut préablement importer la clé de signature du référentiel, puis rendre le référentiel disponible pour apt.

pi@rpi2b:~ $ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key pi@rpi2b:~ $ sudo apt-key add mosquitto-repo.gpg.key pi@rpi2b:~ $ cd /etc/apt/sources.list.d/ pi@rpi2b:/etc/apt/sources.list.d $ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

Le paquet peut maintenant être installé et après, pour nettoyer, la clé du référentiel Mosquitto peut être effacée.

pi@rpi2b:/etc/apt/sources.list.d $ cd $home pi@rpi2b:~ $ sudo apt-get udpate pi@rpi2b:~ $ sudo apt-get install mosquitto pi@rpi2b:~ $ rm mosquitto-repo.gpg.key

Le serveur MQTT étant installé, assurons nous qu'il est en place :

pi@rpi2b:~ $ systemctl status mosquitto ● mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; disabled) Active: active (running) since Tue 2017-05-30 12:06:43 ADT; 9min ago Docs: man:mosquitto(8) https://mosquitto.org/ Main PID: 1547 (mosquitto) CGroup: /system.slice/mosquitto.service └─1547 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Redémarrez et assurez-vous que MQTT de Mosquitto est actif en demandant à systemctl le statut de mosquitto comme ci-dessus. Si le service mosquitto n'a pas démarré, vous pouvez essayer de l'activer explicitement :

pi@rpi2b:~ $ sudo systemctl enable mosquitto.service Synchronizing state for mosquitto.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d mosquitto defaults Executing /usr/sbin/update-rc.d mosquitto enable

Dorénavant, mosquitto devrait être lancé automatiquement lors du démarrage de Raspbian.

Il n'est pas nécessaire, mais vous pouvez installés les clients de Mosquitto sur le Raspberry Pi:

pi@rpi2b:~ $ sudo apt-get install mosquitto-clients

Des exemples d'utilisation des clients se trouvent dans la prochaine section.

Test de Mosquitto MQTT toc

Maintenant qu'un serveur MQTT est installé, je vous recommande de lire les excellentes instructions de Elliot Williams à Hackaday comme introduction à l'utilisation du protocole. Ou vous pouvez lire ce qui suit.

J'ai installé les clients Mosquitto sur mon bureau Ubuntu à l'aide de la logithèque. Cela peut aussi être fait avec Synaptic ou même avec apt-get dans une fenêtre de terminal. La combinaison de clavier qui ouvre un terminal dans Ubuntu est Alt Ctrl T.

michel@hp:~ $ sudo apt-get install mosquitto-clients

Autrement, vous pouvez ouvrir des sessions ssh avec le Raspberry Pi et utiliser ses clients Mosquitto s'ils sont installés.

Les clients sont deux programmes: mosquitto_sub pour s'abonner au serveur MQTT afin de recevoir des messages et mosquitto_pub pour publier des messages auprès du serveur. Nous allons ouvrir deux terminaux, celui qui s'abonne aux messages et l'autre pour publier des messages. Pour éviter toute confusion, j'ai changé les titres des terminaux (regardez dans le menu Terminal).

Dans le terminal Subscribe, abonnez-vous au serveur MQTT sur le Raspberry Pi à l'adresse IP 192.168.1.22 à tous les sujets qui commencent par «home»:

michel@hp:~$ mosquitto_sub -h 192.168.1.22 -v -t "home/#"

Comme on le voit sur l'image, il ne se passe rien. Le programme est en cours d'exécution, mais rien n'apparaîtra tant que le serveur MQTT n'obtienne un message sous le thème «home».

Dans le terminal Publish, publiez un message vers le serveur MQTT

michel@hp:~$ mosquitto_pub -h 192.168.1.22 -t "home/temperature" -m "21"

Le serveur enverra ce message vers le processus mosquitto_sub toujours en cours d'exécution dans le terminal Subscribe. Ce dernier affichera le message reçu: sujet en premier, et le message après

Continuez à expérimenter. Ouvrez un troisième terminal et abonnez-vous sur le même sujet. Ensuite, publiez un nouveau message et vous verrez que les deux clients abonnés afficheront le message. Publiez des messages sur d'autres sous-thèmes tels que «maison/humidité». Essayez de publier un message avec "test/temperature" en tant que sujet.

Pour quitter les clients abonnés, appuyez sur la combinaison de touches Ctrl C.

Chaînes MQTT toc

À partir de ce qui précède, il est évident que les chaînes ou sujets (topics en anglais) MQTT sont hiérarchiques et représentés d'une manière très similaire aux chemins de fichiers complets (en utilisant le séparateur Unix '/'). Et, un peu comme les pour les noms de fichiers, il existe des caractères génériques:

# qui représente toutes les chaînes de niveau inférieur. Par conséquent, s'abonner à maison/# signifie que le serveur enverra tous les messages avec des sujets tels que maison, maison/humidité, maison/température, maison/température/centigrade, maison/température/fahrenheit, et ainsi de suite.
+ qui représente un niveau unique dans la hiérarchie des sujets. Par conséquent, l'abonnement à maison/+/commutateurs signifie que les messages avec des sujets tels que maison/chambre/commutateurs et maison/cuisine/commutateurs seront reçus, mais pas ceux dont le sujet est maison/interrupteurs ni maison ni interrupteurs.

Pour des raisons évidentes, vous ne pouvez pas avoir un des caractères '/', '#' ou '+' dans le sujet. Il n'est pas judicieux d'inclure ces caractères dans un nom d'utilisateur ou un identifiant de client (voir le conseil de sécurité CVE-2017-7650 de mosquitto.org. Vous pouvez utiliser le texte codé UTF-8 dans des sujets tels que /saison/été. Au moins dans Linux. Pour ce qui est de Windows, qui utilise un codage Unicode 16 bits au lieu de UTF-8, je n'ai pas encore vérifié.

Lors du débogage de la communication avec un serveur MQTT, il peut s'avérer utile de s'abonner à toutes les chaînes:

michel@hp:~$ mosquitto_sub -h 192.168.1.22 -v -t "#"

Ajout d'un commutateur virtuel dans Domoticz toc

Jusqu'à présent, aucun périphérique n'a été ajouté à la base de données Domoticz sur le Raspberry Pi 3. Il sera difficile de tester M QTT en conjonction avec le programme de domotique sans au moins un commutateur virtuel. La procédure pour en ajouter un, qui sera éventuellement lié à un commutateur physique, est presque exactement la même que celle suivie dans le billet intitulé X10 On/Off Switches with a CM11A Interface in Domoticz.

La première étape consiste à créer un matériel "fictif", car Domoticz ne sait pas comment gérer les commutateurs WiFi que je vais installer ultérieurement.

  1. Cliquez sur l'onglet Setup.
  2. Selectionnez Hardware dans le menu déroulant.
  3. Entrez un nom pour le matériel; J'ai choisi Virtual.
  4. Comme Type selectionnez Dummy (Does nothing, use for virtual switches only) dans la liste déroulante.

    Add virtual hardware

  5. Cliquez sur le bouton Add. Le dispositif virtuel sera ajouté dans le tableau au haut de la page.

    Cette étape n'est à faire qu'une seule fois.

Pour ajouter un commutateur virtuel:

  1. Cliquez sur le bouton Create Virtual Sensors dans le nouveau materiel Virtual.
  2. Remplissez le champs Name, sélectionnez Switch dans la liste déroulante de Sensor Type dans la fenêtre Create Virtual Sensor.

Un message apparaîtra confirmant la création du capteur et indiquant qu'il peut être trouvé dans la liste des dispositifs. Pour voir la liste, cliquez sur l'onglet Setup puis sélectionnez Devices.

Le commutateur nouvellement créé se trouve également dans l'onglet Switches.

Cliquer sur l'icône de l'ampoule du commutateur virtuel, trouvé dans l'onglet Switches ou dans la liste des dispositifs, bascule son image vers l'état marche ou arrêt. Essayez-le et vous verrez apparaître un message pendant quelques secondes disant que le dispositif a été activé ou désactivé, le cas échéant. Bien sûr, rien ne se produit réellement car ce commutateur virtuel n'est pas encore connecté à un dispositif matériel. La façon de réaliser cette connexion avec le protocole MQTT est expliqué dans la section suivante.

Activation de MQTT dans Domoticz toc

La première étape pour ajouter des fonctionnalités MQTT à Domoticz consiste à ajouter le «matériel». La procédure est similaire à l'ajout du matériel fictif dans la section précédente

  1. Cliquez sur l'onglet Setup.
  2. Sélectionnez Hardware dans le menu déroulant.
  3. Entrez un nom pour le matériel. Démontrant de nouveau l'ampleur de mon imagination, j'ai choisi MQTT.
  4. Comme Type sélectionnez MQTT Client Gateway with LAN interface dans la liste déroulante.
  5. Définissez l'adresse ( Remote Address) et le port du serveur MQTT. Dans mon cas, le serveur est sur le même hôte que le serveur Domoticz, donc j'ai utilisé localhost, mais j'aurais pu utiliser l'adresse IP complète 192.168.1.22 ou peut-être 127.0.0.1. J'ai configuré le port vers 1883, qui la valeur par défaut de Mosquitto MQTT qui n'a pas été modifiée.
    Add virtual hardware Assurez-vous que le thème de publication (Publish Topic) est out; je pense que c'est la valeur par défaut.
  6. Cliquez sur le bouton Add. Le matériel ajouté sera inclus avec le matériel virtuel dans le tableau en haut de la page.

Chaînes MQTT de Domoticz toc

Il peut être judicieux de relire la section sur les chaines MQTT en général avant de lire ce résumé des sujets MQTT utilisés par le système domotique. Une fois que le « matériel » MQTT est activé dans Domoticz, ce dernier publiera des messages MQTT sur la chaîne domoticz/out chaque fois que l'état d'un dispositif change. En même temps, il s'abonne à la chaîne domoticz/in et prendra des mesures chaque fois qu'il recevra un message avec la syntaxe correcte. C'est aussi simple que cela, Domoticz n'utilise que deux sujets MQTT.

Chaîne : domoticz/out
Source : Domoticz
Abonnés : appareils domotiques
Objectif : Domoticz envoie des messages sous cette rubrique au serveur MQTT lorsqu'il souhaite qu'un ou plusieurs appareils effectuent une action telle que l'allumage / l'extinction de la lampe, le réglage du niveau de luminosité, etc.
Chaîne : domoticz/in
Source : appareil domotique
Abonné : Domoticz
Objectif : in appareil domotique envoie des messages sous cette rubrique au serveur MQTT lorsqu'il souhaite informer le serveur domotique que son état a changé généralement parce qu'il a été manuellement activé, désactivé, etc. Domoticz utilisera ces messages pour mettre à jour sa base de données d'appareils et son interface Web pour afficher le nouvel état de l'appareil.

Lorsque le «matériel» MQTT est activé dans Domoticz, ce dernier publiera un message MQTT à la chaîne domiticz/out chaque fois que l'état d'un appareil est modifié, que l'appareil soit contrôlé par des messages MQTT ou non. Par exemple, si le « matériel » météo a été activé, alors à chaque fois que les données météorologiques sont récupérées, Domoticz met à jour la base de données, met à jour la température, la vitesse du vent, etc. affichées sur l'interface Web et envoie un message avec comme sujet domiticz/out qui contient les données. Mon ferme-porte de garage «intelligent» utilise cette information pour décider du temps d'attente avant de fermer automatiquement la porte de garage.

Cette description des sujets de message n'est valide que si le champ Publish Topic du matériel MQTT Client Gateway with LAN interface est défini sur out (ou out + /).

Le protocole MQTT étant un service de publication/abonnement, il est facile d'envoyer des messages et d'écouter les messages. Ceci est fait dans la section suivante pour vérifier que tout fonctionne correctement.

Test de MQTT dans Domoticz toc

Il serait possible de s'abonner à la chaîne domoticz/out avec l'utilitaire mosquitto_sub dans un terminal.

michel@hp:~$ mosquitto_sub -h 192.168.1.22 -v -t "domoticz/out"

Ensuite, dans un autre terminal, il serait possible de s'abonner à la rubrique domoticz/in pour voir tous les messages MQTT liés à Domoticz.

michel@hp:~$ mosquitto_sub -h 192.168.1.22 -v -t "domoticz/in"

Bien entendu, la bonne adresse IP doit être utilisée. Cependant, un abonnement à la chaîne "#" comme indiqué ci-dessous afin de voir tous les messages envoyés au serveur MQTT est préférable. Cela signifie que les messages envoyés à Domoticz et les messages envoyés par Domoticz seront visibles dans l'ordre chronologique. Générez ensuite des messages MQTT sortant de Domoticz en activant et désactivant n'importe quel commutateur dans l'onglet Interrupteurs de l'interface Web de Domoticz.

michel@hp:~$ mosquitto_sub -h 192.168.1.22 -v -t "#" domomoticz/out { "Battery" : 255, "RSSI" : 12, "dtype" : "Light/Switch", "id" : "00014051", "idx" : 1, "name" : "Test Switch", "nvalue" : 1, "stype" : "Switch", "svalue1" : "0", "switchType" : "On/Off", "unit" : 1 } domoticz/out { "Battery" : 255, "RSSI" : 12, "dtype" : "Light/Switch", "id" : "00014051", "idx" : 1, "name" : "Test Switch", "nvalue" : 0, "stype" : "Switch", "svalue1" : "0", "switchType" : "On/Off", "unit" : 1 }

Laissez le terminal ouvert pour voir plus de messages plus tard.

Ce sont des messages typiques de Domoticz utilisant le format JSON. Pour plus d'informations sur leur syntaxe, voir Domoticz API/JSON URL's. Le commutateur de Wi-Fi devra les gérer pour s'allumer ou éteindre le cas échéant. Comme on le verra, cela est beaucoup plus simple qu'on pourrait croire grâce au travail de nombreuses personnes qui ont développé des bibliothèques open source pour l'ESP8266.

Inversément, l'interrupteur Wi-Fi devra publier des messages MQTT vers le serveur pour l'informer que quelqu'un a activé ou désactivé manuellement le commutateur. Le sujet de ces types de messages est domoticz/in parce que Domoticz est abonné à ce sujet. Le système domotique mettra alors à jour l'état du commutateur virtuel dans sa base de données et son état affiché sur l'interface Web. Voici un échange typique de messages qui se produit.

domoticz/in {"idx":86,"nvalue":1,"svalue":"","Battery":81,"RSSI":6} ... domoticz/out { "Battery" : 81, "RSSI" : 6, "description" : "", "dtype" : "Light/Switch", "id" : "000140A6", "idx" : 86, "name" : "zoozee3", "nvalue" : 1, "stype" : "Switch", "switchType" : "On/Off", "unit" : 1 }

Notez que le message envoyé par l'appareil est beaucoup plus court que ceux publiés par Domoticz. Notez également comment ce dernier répond presque immédiatement avec son propre message sortant confirmant que le commutateur est activé. Si vous ne disposez pas déjà d'un commutateur Wi-Fi qui envoie des messages MQTT, vous pouvez le simuler en publiant un message auprès du serveur MQTT. Je suppose que le commutateur virtuel qui a été installé dans la section précédente a un index (idx) égal à 1. L'index est affiché dans la liste des périphériques. Pour voir cette liste, cliquez sur l'onglet Réglages puis sélectionnez Dispositifs. Si ce n'est pas 1, ajustez la valeur avant de transmettre le message MQTT suivant dans un deuxième terminal

michel@hp:~$ mosquitto_pub -h 192.168.1.22 -t "domoticz/in" -m '{ "idx" : 1, "nvalue" : 1}'

Le terminal abonné au serveur MQTT montrera que le serveur a reçu le message.

... domoticz/in { "idx" : 1, "nvalue" : 1} ... domoticz/out { "Battery" : 81, "RSSI" : 6, "description" : "", "dtype" : "Light/Switch", "id" : "00014051", "idx" : 86, "name" : "Test Switch", "nvalue" : 1, "stype" : "Switch", "switchType" : "On/Off", "unit" : 1 }

Le journal de Domoticz montre aussi que le message de l'appareil a été reçu.

2017-05-31 13:14:38.446 MQTT: Topic: domoticz/in, Message: { "idx" : 1, "nvalue" : 1}

Pour voir le journal, cliquez sur l'onglet Réglages, puis sélectionnez Log. Ensuite, revenez à l'onglet Interrupteurs et vérifiez que l'icône de l'ampoule du commutateur virtuel est réglée sur l'état activé. Cela prend un peu de temps, soyez patient.

Pour désactiver l'état du commutateur virtuel, un message MQTT similaire peut être envoyé.

michel@hp:~$ mosquitto_pub -h 192.168.1.22 -t "domoticz/in" -m '{ "idx" : 0, "nvalue" : 0}'

Ajustez à nouveau la valeur de idx pour refléter l'index correct du commutateur virtuel. Encore une fois, le terminal dans lequel mosquitto_sub est exécuté affichera l'échange de messages MQTT.

... domoticz/in { "idx" : 1, "nvalue" : 0} ... domoticz/out { "Battery" : 81, "RSSI" : 6, "description" : "", "dtype" : "Light/Switch", "id" : "00014051", "idx" : 1, "name" : "Test Switch", "nvalue" : 0, "stype" : "Switch", "switchType" : "On/Off", "unit" : 1 }

Le vrai test sera l'ajout d'un périphérique matériel réel utilisant le protocole MQTT. Les appareils Shelly sont bien connus pour leur prise en charge de MQTT. Le micrologiciel d'autres appareils basés sur le ESP8266, tels que le Sonoff Basic, peut être remplacé pour utiliser le protocole MQTT. Bien qu'il existe d'autres possibilités, j'utilise Tasmota de Theo Arends depuis quelques années avec de bons résultats. J'ai fait des billets à sujet, dont Programmation du Sonoff dans l'EDI Arduino (1) et Téléversement de Tasmota sur un dispositif Sonoff en mode DIY dans Linux, mais qu'il existe de nombreux autres tutoriels sur le Web qui avec des approches plus simples. Anticipez voir beaucoup plus de messages MQTT lorsque vous effectuez les tests présentés ci-dessus avec un périphérique Tasmota car, par défaut, il publie souvent sur d'autres sujets, comme on peut voir ci-dessous.

15:49:31 MQT: tele/kitchen/LWT = Online (retained) 15:49:31 MQT: cmnd/kitchen/POWER = 15:49:31 MQT: tele/kitchen/INFO1 = {"Module":"Generic","Version":"6.4.1(tweak)","FallbackTopic":"cmnd/DVES_399992_fb/","GroupTopic":"sonoffs"} 15:49:31 MQT: tele/kitchen/INFO2 = {"WebServerMode":"Admin","Hostname":"kitchen","IPAddress":"192.168.0.129"} 15:49:31 MQT: tele/kitchen/INFO3 = {"RestartReason":"Software/System restart"} 15:49:31 MQT: stat/kitchen/RESULT = {"POWER":"OFF"} 15:49:31 MQT: stat/kitchen/POWER = OFF
Programmation du Sonoff dans l'EDI Arduino (1)-> <-Gestion du travail avec un Raspberry Pi étêté