Nous vous avons déjà montré comment intégrer des capteurs Yoctopuce à Home Assistant, en configurant dans un hub Yoctopuce l'échange de données vers un broker MQTT sur le réseau local. Mais comment procéder pour intégrer à Home Assistant des capteurs distants, sur un autre site sans accès au réseau local, voire au milieu de la nature avec seulement une connexion GSM ?
La solution proposée par la plupart des vendeurs d'objets connectés consiste à offrir un service Cloud propriétaire pour gérer les objets distants, et parfois à proposer un plug-in pour l'intégrer dans Home Assistant. Le problème de cette approche, c'est que quand le vendeur ferme boutique ou décide simplement d'abandonner le produit, l'objet connecté devient complètement inutilisable. C'est ce qui est arrivé avec les produits Nest Revolv, SmartDry, etc. et qui arrivera encore...
Vous l'aurez deviné, nous n'aimons pas cette solution. Plutôt que cela, pour gérer vos modules Yoctopuce distants, nous proposons depuis quelques temps une solution nommée VirtualHub (for Web), disponible gratuitement avec le code source, que vous pouvez installer sur l'hébergement Web de votre choix. Vous gardez ainsi le contrôle de vos modules de bout en bout, sans limite de temps. L'outil offre un accès distant presque complet aux modules, avec une interface très similaire à celle fournie en direct par les modules Yoctopuce.
Par contre, cette solution étant destinée à être hébergée sur un serveur public sur Internet, elle ne peut pas se connecter directement au serveur MQTT sur votre réseau local pour l'intégration à Home Assistant. C'est là qu'intervient le nouvel outil que nous vous proposons aujourd'hui: la passerelle Yoctopuce MqttBridge.
Yoctopuce MqttBridge
Notre MqttBridge est un petit outil que vous trouverez sur la page d'utilitaires de notre site Web. Il est destiné à être installé sur une machine de votre réseau local, typiquement sur la machine qui exécute le broker MQTT (mosquitto ou autre). Il fonctionne en ligne de commande et ne consomme que très peu de ressources. Il est disponible pour la plupart des plateformes directement sous forme binaires, mais nous vous fournissons aussi son code source (en pur C).
Le principe de cet outil est très simple: il se connecte par l'API Yoctopuce à une instance de VirtualHub (for Web) et la raccorde à un broker MQTT local, exactement comme l'aurait fait un YoctoHub ou un VirtualHub local configuré pour faire des callbacks HTTP de type MQTT:
Principe de fonctionnement de notre outil MqttBridge
Les topics utilisés par MqttBridge sont les mêmes que ceux gérés par les hubs Yoctopuce, décrits en détail dans cet article. Les topics informatifs de MQTT discovery permettant l'intégration directe dans Home Assistant sont bien entendus inclus. Comme pour la configuration sur les hubs, vous pouvez choisir le root topic à utiliser pour publier les valeurs, ainsi que décider si vous voulez un accès en lecture seule ou si vous voulez permettre d'envoyer des commandes aux modules à travers MQTT (par exemple pour commuter des relais).
Si vous lancez l'utilitaire avec l'option --help, il vous donnera toutes ses options:
--registerHub <yoctohub_ip_or_url>
--mqtt_broker <hostname_or_ip>
[--mqtt_port <port> | --mqtts_port <port>]
[--mqtt_user <username> --mqtt_pass <password>]
[--root_topic <mqtt_root_topic>]
[--allow_remote_control]
[--no_instant_sensor_values]
[--no_retain_flag]
[--cacert <ca_cert_file>]
[--ignore_cert]
Special command-line options :
-c <conffile> : load config from JSON file to avoid long cmdline
(config file uses key names identical to the options listed above)
-g <logfile> : log debug infos into a <logfile>
-i : install as a service (with the arguments specified)
-u : uninstall as a service
-d : run as a daemon (when running as a service on Unix)
-v : show the version of the executable
Pout éviter une ligne de commande immense, comportant des mots de passe, il est recommandé d'utiliser un fichier de configuration séparé. Le fichier de configuration utilise les mêmes mots-clés, mais au format JSON:
"mqtt_broker": "192.168.168.168",
"mqtt_port": 1883,
"mqtt_user": "secret-username",
"mqtt_pass": "secret-password",
"root_topic": "mqttbridge",
"allow_remote_control": true,
"no_instant_sensor_values": true,
"no_retain_flag": true,
"ignore_cert": true
}
L'outil MqttBridge est basé sur notre librairie de programmation v2.0, et supporte donc les connections sécurisées par TLS, aussi bien pour contacter VirtualHub (for Web) que pour se connecter au serveur MQTT. Par contre, dans ce cas, vous devrez soit fournir avec l'option cacert les certificats d'autorité permettant de vérifier l'identité des serveurs, soit mettre l'option ignore_cert pour désactiver la vérification des certificats.
Pour conclure
En plus de permettre l'intégration de modules Yoctopuce distants à Home Assistant, ce nouvel outil peut naturellement aussi être utilisé avec un YoctoHub local sur lequel vous auriez déjà configuré un autre callback HTTP, par exemple pour stocker les données sur une base InfluxDB. Vous avez désormais le choix entre une connexion MQTT initiée de manière entièrement autonome par le hub, ou initiée par un PC sur votre réseau local.
Notez que cet outil étant tout neuf, il n'est certainement pas entièrement exempt de bugs. N'hésitez pas à les signaler à support@yoctopuce.com et nous ferons notre possible pour les corriger au plus vite.