openHAB 3.0 - mise à jour d'un item via des messages MQTT
L’objectif de ce tutoriel est de montrer comment mettre à jour l’état d’un item sous openHAB 3.0 lors de la réception de messages MQTT. Nous allons pour cela nous inspirer du tutoriel [OH3] Tasmota relay via MQTT (Sonoff Basic with optional DHT22) pour « lier » un Item au topic testswitch002
de notre broker MQTT. Il nous faut cependant l’adapter à nos besoins:
- le broker MQTT est déjà configuré dans openHAB (cf. mon précédent tutoriel openHAB 3.0 - création d’un switch qui publie son état via des messages MQTT)
- l’Item que nous allons créer n’aura pas à commander un device réel (ex: via envoi de messages MQTT); il ne s’agira que d’un Switch « virtuel » dans l’interface d’OH3
- le nommage de nos topics et les contenus des messages sont très simplifiés par rapport à de vrais capteurs MQTT…
La configuration utilisée est la même que dans openHAB 3.0 - création d’un switch qui publie son état via des messages MQTT et, là aussi, les différentes étapes ont été entièrement réalisées via l’interface graphique d’openHAB3.
Création d’un Generic MQTT Thing
- Settings → Things → Blue « + » → MQTT Binding → Generic MQTT Thing
- Label =
Generic MQTT Thing 001
- Parent Bridge =
MQTT Broker
(cf. tests précédents ici)
- Label =
- le Generic MQTT Thing apparaît dans la liste des Things et est ONLINE
Configuration d’openHAB3 pour lire les valeurs reçues sur le topic MQTT
- création d’un Channel de type Switch: Settings → Things → Generic MQTT Thing 001 → Channels → Add Channel
- Id =
mqttchanneltestswitch002
- Label =
MQTT Channel Test Switch 002, On/Off Switch
- Channel type =
On/Off Switch
- MQTT State Topic =
testswitch002
- cliquer sur Create
- Id =
- création d’un Item lié à ce Channel: Settings → Things → Generic MQTT Thing 001 → Channels → Add Points to Model
- sélectionner le Channel précédemment créé →
MQTT Channel Test Switch 002, On/Off Switch
- cliquer sur Add to Model
- le Point ainsi créé apparaît sur notre Channel
- sélectionner le Channel précédemment créé →
- le Point que nous venons de créer apparaît dans la liste des Items; nous pouvons alors utiliser n’importe quel client MQTT pour envoyer les messages
ON
ouOFF
sur le topictestswitch002
→ la valeur de cet Item est mise à jour
Remarques
- les tests ont été réalisés avec MQTT Explorer et avec l’Item
TestSwitch002
créé dans le tutoriel openHAB 3.0 - accès à l’état d’un item depuis JavaScript - seules les chaînes de caractères
ON
etOFF
sont « acceptées » pour mettre à jour l’Item, ce qui est logique étant donné qu’il s’agit d’un switch on/off…
Conclusion
Après différents tests réalisés à partir d’informations glanées par ci par là sur Internet (parfois relatives à d’autres versions d’openHAB, utilisant parfois des configurations à base de fichiers textes), voici une méthode « simple » sous openHAB3 pour lier l’état d’un item au contenu de messages MQTT reçus sur un topic particulier. Si vous avez des remarques ou des suggestions, n’hésitez pas à me contacter sur manuel.munier@univ-pau.fr.