Présentation

Le plugin jMQTT permet de connecter Jeedom à un ou plusieurs serveurs MQTT (appelé Broker) afin de recevoir les messages souscrits et de publier ses propres messages. Ses principales fonctionnalités sont :

et encore beaucoup d’autres…

Qu’est-ce que MQTT ?

MQTT, pour “Message Queuing Telemetry Transport”, est un protocole open source de messagerie qui assure des communications non permanentes entre des appareils par le transport de leurs messages.

Il a été créé en 1999 par Andy Stanford-Clark, ingénieur chez IBM, et Arlen Nipper, chez EuroTech, principalement dans la communication M2M pour permettre à deux appareils utilisant des technologies différentes de communiquer. “Devenu une norme ISO en 2016, MQTT connectait déjà à cette date des millions d’appareils dans le monde entier, dans toutes sortes d’applications et d’industries. C’est une technologie d’avenir”, affirme Fabien Pereira Vaz, technical sales manager chez Paessler AG.

Les géants du web parmi lesquels AWS ou Microsoft utilisent MQTT pour remonter les données sur leur plateforme cloud.

MQTT est un protocole de Publication/Souscription qui est léger, ouvert, simple. Il apporte une très grande souplesse dans les échanges d’information entre capteurs/actionneurs/systèmes domotique/etc.

Comment fonctionne le MQTT ?

Pour comprendre MQTT rapidement, je vous conseille cette vidéo de 4 minutes qui explique les principes de base :

Principe MQTT Youtube

Crédit : François Riotte

Une analogie simple est possible entre le MQTT et la Poste :

Pour en savoir plus, ça se passe en anglais par ici : MQTT Essentials.

Configuration du plugin

Après installation, il suffit d’activer le plugin sur la page de configuration :

Configuration du plugin

Quelques instants sont nécessaires à l’installation des dépendances. Le suivi de la progression est possible via le log jMQTT_dep.

jMQTT est un Client MQTT pour Jeedom, il faut donc un Broker pour pouvoir d’utiliser. Par défaut, jMQTT n’installe plus automatiquement le Broker “Mosquitto” sur la machine hébergeant Jeedom pendant l’installation des dépendances. A présent jMQTT essaye de détecter si Mosquitto est installé par un autre plugin (ou non). Si vous n’avez pas encore de Broker et que jMQTT n’en voit pas un d’installé par un autre plugin, lancez l’installation de Mosquitto en cliquant sur le bouton Installer et attendez la fin de la procédure.

Il suffit ensuite de configurer vos modules domotique compatible MQTT pour qu’ils se connectent à votre Broker (s’il est installé par jMQTT l’IP du Broker est celle votre Jeedom sur le port 1883).

C’est tout pour la configuration générale, passons aux équipements.

Gestion des équipements

Dans Jeedom, dès que l’on souhaite récupérer ou interagir avec quelque chose, il faut créer un équipement. Donc, il faut créer un équipement dans jMQTT pour récupérer des données envoyées par d’autres Clients via un Broker.

Le plugin jMQTT est disponible dans le menu : Plugins → Protocole domotique → jMQTT.

Le panneau supérieur gauche, intitulé Gestion, permet de configurer le plugin :

Gestion du plugin

Détail des différents boutons :

En-dessous se trouve un champ de recherche, puis un panneau listant les équipements par Broker :

Brokers

jMQTT possède 2 types d’équipements. Il est très important de faire la distinction entre :

Sur les équipements Broker, un point de couleur indique l’état de la connexion au Broker :

Status Broker

A la suite du Broker se trouve tous les équipements rattachés à celui-ci.

Un équipement :

Il existe également une vue sous forme de table (TableView) :

Table View

Elle s’active en cliquant sur le bouton tout à droite du champ de recherche (dans l’encadré rouge ci-dessus).

En plus de retrouver dans cette vue les informations classiques (icône, objet, nom, s’il est activé), des icônes à droite permettent de retrouver rapidement des informations importantes.

Enfin tout à droite, il est possible d’accéder directement à la “Configuration avancée” de l’équipement.

Equipement Broker

Ajout

Dans la page de Gestion des équipements, cliquer sur le bouton + Ajouter un Broker et saisir son nom.

Suite à sa création, un message indique que la commande status a été ajoutée à l’équipement. Celle-ci donne l’état de connexion au Broker MQTT de l’équipement Broker. Elle prend 2 valeurs : online et offline. Elle est publiée de manière persistante auprès du Broker. Cet état permet à un équipement externe à Jeedom de connaitre son statut de connexion. Il peut aussi servir en interne Jeedom pour monitorer la connexion au Broker via un scénario.

Configuration

Configuration du Broker

Par défaut, un équipement Broker est créé lors de l’installation de Mosquitto par jMQTT et configuré pour s’y inscrire nativement.

Si cette configuration convient, activer l’équipement et sauvegarder. Revenir sur l’onglet Broker, le statut du démon devrait passer à OK.

Pour modifier les informations de connexion au Broker, les paramètres sont :

Attention: Le Client-Id doit être unique par client par Broker. Sinon les clients portant le même identifiant vont se déconnecter mutuellement.

Une aide contextuelle est également disponible pour chaque champ. Il est possible d’importer les certificats en déposant les fichiers sur les champs ou avec les boutons à leur droite. La sauvegarde de la configuration relance le client MQTT et la souscription au Broker MQTT avec les nouveaux paramètres. Il est aussi possible de relancer volontairement le client MQTT avec le bouton (Re)Démarrer (encadré 3) en haut de la page.

Info

Chaque équipement Broker possède son propre fichier de log (encadré 4) suffixé par le nom de l’équipement. Si l’équipement est renommé, le fichier de log le sera également.

Le mode Temps Réel (encadré 5) permet la visualisation en temps réel des messages qui arrivent.

Mode Temps Réel

La visualisation des messages MQTT en temps réel se situe dans l’onglet Temps Réel de chaque Broker :

Mode Temps Réel

Il faut d’abord configurer les Topics de souscription Temps Réel pour récupérer les messages, éventuellement les Topics exclus du Temps Réel, si les messages retenus par le Broker doivent être inclus dans le Temps Réel et la durée d’activation (encadré 1).

Le mode temps réel s’active, pour le Broker concerné, en cliquant sur le bouton Mode Temps Réel en haut à droite sur l’équipement Broker et se désactive en recliquant sur le même bouton (encadré 2), ou automatiquement après environ 3 minutes.

Les messages reçus sont stockés uniquement coté navigateur.

Selon les messages reçus, des icônes peuvent apparaitre dans la colonne Option (encadré 3) :

Une fois des messages identifiés, des outils sont disponibles en fin de ligne (encadré 4) pour les utiliser.

Gestion des Interactions

Il est possible d’envoyer en MQTT des demandes d’interaction à Jeedom au travers du “Topic des interactions de Jeedom” décrit dans la section Configuration de l’équipement Broker.

3 topics sont utilisés pour les interactions :

Equipement

Les équipements “classiques” portent les commandes info qui récupéreront des données envoyées par d’autres Clients via un Broker, ou les commandes action qui enverront des messages vers ce Broker.

3 onglets sont présents sur les équipements :

Onglet Equipement

Onglet principal d'un Equipement

Dans le premier onglet d’un équipement jMQTT, nous trouvons les paramètres communs aux autres équipements Jeedom, ainsi que cinq paramètres spécifiques au plugin :

Important

Une fois les commandes créées, il est conseillé de décocher la case Ajout automatique des commandes pour éviter la création d’informations non souhaitées.

Concernant les boutons en haut à droite :

Boutons sur un Equipement

Onglet Commandes - Type Information

Les commandes de type information (informations dans la suite) sont créés, automatiquement, uniquement si la case Ajout automatique des commandes de l’Onglet Equipement est cochée : lorsque le plugin reçoit un message dont le topic correspond au topic de souscription, il créé alors la commande correspondante lorsque celle-ci est nouvelle.

Voyons cela sur des exemples en fonction du type de payload.

Payload simple

Reprenons l’exemple de la payload MQTT publiant les messages simples suivants :

boiler/brand "viesmann"
boiler/burner 0
boiler/temp 70.0
boiler/ext_temp 19.3
boiler/hw/setpoint 50
boiler/hw/temp 49.0

Le plugin créé les informations suivantes :

Nom Sous-Type Topic Valeur
brand info boiler/brand viesmann
burner info boiler/burner 0
temp info boiler/temp 70.0
ext_temp info boiler/ext_temp 19.3
hw:setpoint info boiler/hw/setpoint 50
hw:temp info boiler/hw/temp 49.0

Note

  • Le nom de la commande est initialisé automatiquement par le plugin à partir du topic. Il peut ensuite être modifié comme souhaité.
  • Jeedom limite la longueur des noms de commande à 127 caractères. Dans le cas de commandes de longueur supérieure, jMQTT remplace le noms par un code de hashage md4 sur 32 caractères (par exemple 5182636929901af7fa5fd97da5e279e1). L’utilisateur devra alors remplacer ces noms par le nommage de son choix.
  • Lorsqu’un Payload binaire (ne correspondant pas à du texte) est reçu, jMQTT essaye dans un premier temps de le décompresser en zlib et de le convertir en texte. S’il n’y parvient pas ou que le résultat reste binaire, alors cette valeur binaire est envoyée envoyée dans la commande information encodée en base64.

Payload JSON

Dans le cas d’une payload JSON, le plugin sait décoder le contenu et créer les informations associées, et ceci indépendamment de l’état de la case Ajout automatique des commandes de l’Onglet Equipement.

Le champ “Chemin JSON” est utilisé pour sélectionner l’information à extraire. Il s’agit d’un chemin JSON suivant le format JSONPath, à travers l’implémentation de Galbar. Ce format est un outil très puissant pour analyser, transformer et extraire sélectivement des données à partir de structures JSON, à l’image de XPath pour le XML.

Voici un aperçu du langage et des possibilités qu’il renferme :

JSONPath Description
$ Objet/élément racine
@ Objet/élément courant
. / [] Operateur de sélection d’un enfant
.. Descente récursive
* Caractère générique : tous les objets/éléments indépendamment de leurs noms
[] Opérateur d’indice : opérateur natif d’un tableau
[,] Opérateur d’union : noms alternatifs ou indices de tableau en tant qu’ensemble
[start:end:step] Opérateur de découpage de tableau
?() Expression (script) de filtrage de données
in / not in Opérateurs de recherche dans un tableau ou une liste
.length Taille du tableau ou de la chaine de caractères

Le premier caractère ‘$’ est omis par la vue JSON de jMQTT dans un souci de lisibilité, mais le Chemin JSON reste parfaitement fonctionnel que le caractère ‘$’ soit présent ou non.

Prenons l’exemple de la payload JSON suivante :

esp/temperatures {"device": "ESP32", "sensorType": "Temp", "values": [9.5, 18.2, 20.6]}

Au premier message reçu, jMQTT créé automatiquement l’information suivante :

Nom Sous-Type Topic Chemin JSON Valeur
temperatures info esp/temperatures   {“device”: “ESP32”, “sensorType”: “Temp”, “values”: [9.5, 18.2, 20.6]}

En basculant dans la vue JSON, via le bouton dédié en haut à droite de la page, et en dépliant complètement l’arbre manuellement, nous obtenons :

#   Nom Sous-Type Topic Chemin JSON Valeur
>   temperatures info esp/temperatures   {“device”: “ESP32”, “sensorType”: “Temp”, “values”: [9.5, 18.2, 20.6]}
      info esp/temperatures [device] “ESP32”
      info esp/temperatures [sensorType] “Temp”
  >   info esp/temperatures [values] [9.5, 18.2, 20.6]
      info esp/temperatures [values][0] 9.5
      info esp/temperatures [values][1] 18.2
      info esp/temperatures [values][2] 20.6

Seule la première ligne est une commande, reconnaissable parce qu’elle a un id, un nom et des paramètres.

Pour créer des commandes associées à chaque température, il suffit de saisir un nom dans chaque commande (par exemple temp0, temp1 et temp2) et de sauvegarder.

L’affichage bascule dans la vue normale, montrant toutes les commandes de l’équipement ; dans notre cas :

Nom Sous-Type Topic Chemin JSON Valeur
temp0 info esp/temperatures [values][0] 9.5
temp1 info esp/temperatures [values][1] 18.2
temp2 info esp/temperatures [values][2] 20.6
temperatures info esp/temperatures   {“device”: “ESP32”, “sensorType”: “Temp”, “values”: [9.5, 18.2, 20.6]}

Si nous rebasculons dans la vue JSON, nous obtenons alors :

#   Nom Sous-Type Topic Chemin JSON Valeur
>   temperatures info esp/temperatures   {“device”: “ESP32”, “sensorType”: “Temp”, “values”: [9.5, 18.2, 20.6]}
      info esp/temperatures [device] “ESP32”
      info esp/temperatures [sensorType] “Temp”
  >   info esp/temperatures [values] [9.5, 18.2, 20.6]
    temp0 info esp/temperatures [values][0] 9.5
    temp1 info esp/temperatures [values][1] 18.2
    temp2 info esp/temperatures [values][2] 20.6

Note

  • Le nom des commandes peut être modifié comme souhaité, jMQTT se base sur le champ Topic pour associer la bonne valeur.
  • Une fois les commandes filles d’une commande JSON créé, il est possible de supprimer la commande mère sans affecter la mise à jour des commandes filles.

Onglet Commandes - Type Action

Les commandes de type action permettent au plugin jMQTT de publier des messages vers le Broker MQTT. Pour cela, créer une commande via le bouton + Ajouter une commande action et remplir les champs selon le besoin :

Commande Action

Sous-type Défaut

Les configurations suivantes :

Commande Action sous-type Defaut

Publieront respectivement :

Note

“Pub. Auto” est coché sur la commande set_hw_setpointAuto, donc à chaque changement de la commande #[home][boiler][hw_setpoint]#, jMQTT exécutera la commande set_hw_setpointAuto et publiera le nouveau payload.

Sous-type Curseur

Les configurations suivantes publieront la valeur saisie via un widget de type curseur :

Commande Action sous-type Curseur

Soit respectivement, en supposant que la valeur du curseur est 50 :

Note

Les 2 premières commandes ont le même comportement, il n’est pas nécessaire de préciser #slider# si c’est la seule valeur à publier.

Les champs Min/Max permettent de configurer la plage de valeurs de la jauge affichée pour une commande Curseur.

Sous-type Message

Les configurations suivantes publieront la valeur saisie via un widget de type message :

Commande Action sous-type Message

Pour un message dont le titre est ecs et le contenu est 50, la première publiera :

Pour un message dont le titre est test et le contenu est Lumière entrée allumée, la seconde publiera :

Note

Comme pour le sous-type Curseur, il n’est pas nécessaire ici de préciser #message# si c’est la seule valeur à publier, on le voit dans la seconde configuration. On notera aussi que dans ce cas le titre du message n’est pas utilisable.

Sous-type Couleur

La configuration suivante publiera le code couleur sélectionné via un widget sélecteur de couleur :

Commande Action sous-type Couleur

Pour une couleur rouge clair sélectionnée :

Note

Comme pour le sous-type Curseur, il n’est pas nécessaire ici de préciser #color# si c’est la seule valeur à publier, on le voit dans la seconde configuration.

Sous-type Liste

La configuration suivante publiera la valeur sélectionnée grâce à la liste de choix d’un widget liste :

Commande Action sous-type Liste

Soit respectivement, en supposant que la valeur sélectionnée sur le widget est “Auto” :

Ici, la liste de choix est pour les 2 commandes on|On;auto|Auto;off|Off. Cette liste est construite de la même façon que pour toutes les autres commandes Liste dans Jeedom : une suite de valeur|texte séparées entre elles par des points-virgules.

Note

Comme pour le sous-type Curseur, il n’est pas nécessaire ici de préciser #select# si c’est la seule valeur à publier, on le voit dans la seconde configuration.

Onglet Commandes - Vue Classic/JSON

Cassic/JSON buttons

Deux boutons en haut à droite de la page permettent de choisir entre 2 types du vue :

Ajout manuel d’un équipement

Il est possible de créer manuellement des équipements jMQTT.

Cliquer sur le bouton + de la page principale et saisir le nom de l’équipement à créer, ainsi que l’équipement Broker auquel il doit être attaché. Il est également possible sur cette page d’utiliser immédiatement un template au moment de la création. Dans ce cas, il est nécessaire de préciser aussi le “Topic de base” pour qu’il soit substitué dans le modèle.

Créer manuellement un équipement jMQTT

Dans la page Onglet Equipement, le topic de souscription définit les informations qui seront souscrites par l’équipement.

Pour plus d’information sur les topics MQTT, nous conseillons la lecture de MQTT Essentials Part 5: MQTT Topics & Best Practices.

Dupliquer un équipement

Un équipement peut être dupliqué via le bouton Dupliquer situé en haut à gauche de la page de configuration de l’équipement.

Une boite de dialogue demande le nom du nouvel équipement. Sont dupliqués :

Important

Le topic des commandes dupliquées de type action doit être modifié manuellement.

Note

Les commandes de type info ne sont pas dupliquées. Elles seront découvertes automatiquement après définition du topic de souscription et activation de l’équipement, si la case Ajout automatique des commandes est cochée.

Santé du plugin

Le bouton Santé, présent dans la page de Gestion des équipements, permet d’afficher une vue de la santé des Broker et des équipements :

Modal Santé

Les informations présentes sont : le nom, l’ID, le Topic de souscription, la date de Dernière communication, la Date de création, l’état des Brokers, ainsi que le nombre de commande sur chaque équipement.

Gestion des templates

jMQTT met à disposition de l’utilisateur une solution simple pour appliquer un modèle prédéfini (template) à un équipement. Les templates conservent toutes les commandes d’origine, leurs configurations et leurs paramètres avancés.

Dans un permier temps, il est possible de créer ou d’appliquer un template à un équipement existant, celà se passe directement sur un équipement :

Boutons sur un Equipement

Ensuite, le gestionnaire de Template est présent dans la section Gestion de la page principale du plugin. Il permet d’ajouter, de télécharger et de supprimer des templates et d’en visualiser les commandes.

Modal gestion des templates

Dans le gestionnaire, on distingue différentes sections :

  1. La liste des templates existants.

Ceux préfixés par [Perso] sont liés à votre installation, les autres arrivent directement avec jMQTT. Si vous souhaitez mettre à disposition vos templates, n’hésitez pas à ouvrir un ticket sur GitHub.

  1. Un bouton d’import de template dans jMQTT depuis un fichier json.

Lorsqu’un template est selectionné dans la liste, la partie de droite est renseignée :

  1. Un bouton permettant le téléchargement du template selectionné sur votre ordinateur.
  2. Un bouton pour supprimer le template selectionné (uniquement pour les templates Perso).
  3. Une prévisualisation de l’équipement et ses paramètres.
  4. Une prévisualisation des commandes disponibles et leurs paramètres.

Création d’un template depuis un équipement

La seule information à renseigner est le nom que vous souhaitez donner à votre template.

Créer un template

Une fois la fenêtre validée, un nouveau template est disponible sur le système et peut être utilisé.

Application d’un template sur un équipement

Quand on souhaite appliquer un template, 3 informations sont attendues :

Appliquer un template

Une fois la fenêtre validée, l’équipement est modifié et peut être utilisé.

Chiffrement TLS

L’objectif du MQTTS (Chiffrement des flux MQTT en TLS) est d’établir une communication chiffrée de bout en bout entre un Broker et des clients MQTTS, afin de garantir la confidentialité des échanges.

Il existe de nombreux Broker MQTT gratuits ou payants disponibles en ligne pour connecter un large ensemble d’équipements IoT, par exemple :

La grande majorité de ces Brokers ne supportent pas de communication “en clair” sur Internet, et demandent la connexion via MQTT over TLS ou MQTTS. Cela est tout à fait compréhensible, car “en clair” n’importe qui peut en lire le contenu des messages, ou pire, envoyer des messages/ordres à votre place.

Depuis mai 2021, jMQTT supporte la connexion aux Broker publique ou privé en MQTTS. Est aussi implémenté un mecanisme de validation du Certificat du Serveur et l’emploi une paire de clés cryptographique personnalisée (Certificat & Clé Privée Client) pour un chiffrement asymétrique de bout en bout.

Il est aussi possible de configurer son propre Broker pour supporter le MQTTS. Je vous renvoie vers l’excellent article MQTTS : Comment utiliser MQTT avec TLS ? [Version en cache], l’auteur, Julien Grossholtz, n’est nullement associé au plugin jMQTT ou à Jeedom.

Voici un exemple de commandes pour générer les certificats CA, de Mosquitto et d’un client MQTT avec des “Subject Alternative Name” (SAN) :

# Génération de la paire de certificat de la CA
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 9999 -subj "/C=FR/CN=MQTT-CA" -key ca.key -out ca.crt

# Génération de la paire de certificats pour le Broker (avec les SAN suitants : mon.domaine.net, localhost, 127.0.0.1 et ::1)
openssl genrsa -out mosquitto.key 2048
openssl req -new -subj "/C=FR/CN=MQTT-mosquitto" -key mosquitto.key -out mosquitto.csr
openssl x509 -req -extfile <(printf "subjectAltName = DNS:mon.domaine.net,DNS:localhost,IP:127.0.0.1,IP:::1") -in mosquitto.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out mosquitto.crt -days 9999 -sha256

# Génération d'une paire de certificats pour un client MQTT
openssl genrsa -out client.key 2048
openssl req -new -subj "/C=FR/CN=MQTT-client001" -key client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 9999 -sha256

Il faudra alors modifier la configuration du service mosquitto et ajouter (à minima) les lignes suivantes, pour que mosquitto écoute sur le port 8883 :

listener 8883
protocol mqtt
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/mosquitto.crt
keyfile /etc/mosquitto/certs/mosquitto.key

Il s’agit d’une opération complexe réservée à ceux qui en comprennent les implications et savent utiliser les certificats.

FAQ

Le Broker n’est pas disponible suite à l’installation du plugin

Il peut arriver que l’installation du plugin se bloque. Cela se produit si le serveur est relancé pendant l’installation (voir log jMQTT_dep). Pour se débloquer, se connecter au Jeedom et supprimer le fichier /tmp/jeedom/jMQTT/progress_dep.txt.

J’ai changé le niveau de log mais je n’ai pas plus de détails

Si vous changiez le niveau de log, le démon devait être relancé dans les anciennes versions. Pour cela, il fallait désactiver puis réactiver l’équipement Broker concerné.

Note

Aujourd’hui, le démon est automatiquement informé que le niveau de log a changé et les nouveaux logs arrivent.

Le démon se déconnecte avec le message “Erreur sur jMQTT::daemon() : The connection was lost.”

Vérifier qu’il n’y a pas 2 clients ayant le même identifiant, voir Client-Id dans l’onglet Broker de l’équipement Broker concerné.

Problèmes inconnus

Les problèmes en cours d’investigations sont sur GitHub : Issues jMQTT.

Quelles données fournir pour investigation en cas de problèmes ?

En cas de problèmes à l’installation, fournir les fichiers de log jMQTT (niveau Debug) et jMQTT_dep.

En cas de problèmes à l’utilisation, passer le plugin et les Brokers en niveau de log Debug reproduire le problème et fournir :

    mosquitto_sub -h localhost -v -t "#" | xargs -d$'\n' -L1 bash -c 'date "+%Y-%m-%d %T.%3N $0"' | tee /tmp/diag_jmqtt.log

En remplaçant, si besoin, localhost par le nom ou l’IP de la machine hébergeant le Broker MQTT. Si une authentification est requise, ajouter -u username et -p password avant le -v.

Exemples d’utilisation

Commander un Virtuel via un message MQTT

Supposons un équipement virtuel, appelé Saison Virtuel, dont une commande action de sous-type Liste permet de définir la saison (été, hiver). L’objectif est de pouvoir définir cette saison via un message MQTT envoyé par une application externe.

Supposons donc également un équipement jMQTT que nous aurons créé, appelé Saison_jMQTT, souscrivant au topic saison/#, dont une commande info est saison/set.

Nous souhaitons que lorsqu’une application publie le message saison/set hiver sur le Broker, la commande info saison du virtuel soit mise à jour avec hiver.

Pour ce faire, il faut créer une deuxième commande action côté virtuel (commande set_saison ci-dessous) qui met à jour l’information saison du virtuel à partir de celle de l’équipement jMQTT. Le virtuel est donc configuré comme ceci :

saison virtuel

Côté équipement jMQTT, nous avons la configuration simple suivante :

saison jmqtt

Ensuite, il y a deux solutions pour lier les commandes :

saison action sur valeur

Attention, quel que soit la solution, il est important de configurer la Gestion de la répétition des valeurs de la commande info [Saison jMQTT][set] à Toujours répéter pour que toutes les valeurs remontent au virtuel. Pour cela, toujours en cliquant sur la roue crantée à droite de cette dernière, onglet Configuration:

saison répétition

Conservation de l’état précédant une coupure de courant (exemple commande action avec “Retain”)

Les Messages Retain ont beaucoup d’intérêt pour renvoyer des valeurs à la reconnexion d’un périphérique.

Par exemple, une prise connectée Sonoff sera OFF de base après une coupure de courant.

Si on souhaite remettre la prise dans le dernier état avant la coupure, il peut être intéressant de passer les commandes action d’allumage/extinction de la prise dans jMQTT en Retain.

En effet, publier le message ON et OFF en Retain permet d’assurer qu’à la reconnexion au Broker, le Broker l’informe directement du dernier état demandé et la prise revient en ON si c’était le cas. (Il faut bien publier ON et OFF en retain dans ce cas, pour que le Broker envoie aussi OFF si elle était OFF, car un message non-Retain n’écrase pas la valeur Retain dans le Broker).

Ce site utilise des cookies. Ils sont indispensables au fonctionnement du site. En poursuivant votre navigation sur le site, vous consentez à l'utilisation de ces cookies.
This site uses cookies. They are essential to the operation of the site. By continuing to use the site, you consent to the use of these cookies.