IoT
openHAB 3.0 - création d'un switch qui publie son état via des messages MQTT

openHAB 3.0 - création d'un switch qui publie son état via des messages MQTT

Je ne suis pas un expert d’openHAB, loin de là. Fin 2020, pour les besoins d’un projet, je souhaitais utiliser openHAB pour collecter (facilement) les données remontées par des capteurs classiques et les “exporter” au travers de messages MQTT. Pourquoi une plateforme telle qu’openHAB ? Pour m’affranchir de la partie communication (et de tous les protocoles) avec les capteurs/actionneurs, et pouvoir ainsi utiliser la grande variété de matériels disponible dans le commerce. Il me suffisait de connecter openHAB à un broker MQTT et à déclencher l’envoi de message via des règles…

À cette époque c’était openHAB 2.x avec des modules MQTT en version 1 ou 2 (!) et j’avoue m’être perdu dans les différents tutoriaux… Comme je l’ai précisé au début, je ne suis pas un expert d’openHAB et j’en découvrais également l’architecture avec tous ses bindings, things, items, channels, etc. et ses interfaces Basic UI, Paper UI, HABmin, HABPanel, etc. Certains tutoriaux utilisant les GUI, d’autres les fichiers texte… Et comble de malchance, un crash en bonne et due forme de la carte SD de mon Raspberry fin décembre !

Heureusement, entre temps le Père Noël est passé par là et nous a apporté openHAB 3.0 ! Une bonne raison pour tout reprendre à zéro avec la nouvelle architecture. Dans ce tutoriel je vais vous expliquer comment créer un switch qui, à chaque fois qu’il sera actionné, publier un message MQTT avec son état on/off.

Pour information, voici ma configuration pour ce tutoriel. L’utilisation de Docker ne change rien; ça permet simplement de repartir à zéro rapidement… au cas où…

Les différentes étapes ont été réalisées via l’interface graphique d’openHAB3.


Création d’un switch

Il s’agit de créer un interrupteur on/off dans openHAB. Cet objet est “virtuel”, c’est-à-dire qu’il n’est connecté à aucun matériel physique.

  • ItemsBlue « + »Add Item → Name = TestSwitch001, Label = « Test Switch 001 », Type = SwitchCreate
  • le nouveau switch on/off est dispo dans l’interface sous l’onglet Items

Switch Item
Switch Item

Test Switch 001
Test Switch 001


Installation et configuration de MQTT dans openHAB 3.0

Je me suis basé pour cela sur le tutoriel [OH3] MQTT Setup and Configuration.

  • installation du binding MQTT dans openHAB3: SettingsBindingsBlue « + »MQTTInstall
  • connexion d’openHAB3 au broker MQTT: SettingsThingsBlue « + »MQTT BindingMQTT Broker
    • Broker Hostname/IP = localhostCreate Thing
    • le Bridge Thing apparaît dans la liste des Things et est ONLINE
    • NB: l’id du MQTT Broker est mqtt:broker:ccc94a5065

MQTT Broker
MQTT Broker


Création de règles pour publier des messages MQTT quand on active le switch

Pour comprendre le fonctionnement général des règles sous openHAB je me suis inspiré du tutoriel Linking a switch to an MQTT publish. Parmi les options proposées, j’ai choisi d’utiliser un script JavaScript. Par contre, en testant mon script via Run Now (Ctrl-R) les messages n’étaient pas envoyés. Après avoir vérifié que mon broker MQTT fonctionnait bien, j’ai été amené à utiliser la syntaxe présentée dans le post mqttAction in js in OH3.

Pour résumer, voici comment créer la règle qui enverra un message MQTT ON sur le topic testswitch001 quand le switch Test Switch 001 recevra la commande ON:

  • RulesBlue « + » → Name = « Test Switch 001 On »

  • WhenAdd TriggerItem EventShow non-semanticTest Switch 001Pickreceived a command ONDone

  • ThenAdd ActionRun ScriptECMAScript

    actions.get("mqtt","mqtt:broker:ccc94a5065").publishMQTT("testswitch001","ON")
    
  • Save

Rule Test Switch 001 On
Rule Test Switch 001 On

Script Test Switch 001 On
Script Test Switch 001 On

Idem pour créer la règle qui enverra un message MQTT OFF sur le topic testswitch001 quand le switch Test Switch 001 recevra la commande OFF.

Rules
Rules


Tests…

On utilise ensuite MQTT Explorer (par exemple) connecté sur notre broker pour voir les messages. Dans ItemsTest Switch 001 on peut actionner le switch ce qui déclenche bien l’envoi de messages MQTT !

Switch ON
Switch ON

Switch OFF
Switch OFF

Et voilà !


Conclusion

Voilà la synthèse de mes premières expérimentations sous openHAB 3.0. Si ça peut servir à d’autres personnes, ce sera avec plaisir. Je ne suis pas un expert d’openHAB, mais cette nouvelle version 3.0 me paraît plus intuitive et… j’ai réussi à faire fonctionner MQTT ;-) Si vous avez des remarques ou des suggestions, n’hésitez pas à me contacter sur manuel.munier@univ-pau.fr.

Prochaine étape:

  • reproduction de l’installation sur le Raspberry (sans Docker)
  • branchement et configuration des périphériques en Z-Wave (température, luminosité, etc.)
  • définition de règles/scripts pour publier en MQTT les données remontées par les capeurs