Utilisateur de Domoticz depuis de nombreuses années, j'ai pu constaté qu'il est un peu en retard côté intégrations et plugins par rapport à ceux disponibles dans Home Assistant. En effet ils sont souvent moins poussés, ou pire non fonctionnels.
Voyons comment réunir le meilleur des 2 mondes, grâce à MQTT qui va permettre d'envoyer dans Domoticz les données des capteurs collectés par HomeAssistant.
Ce tutoriel est proposé par TurboX, fidèle lecteur du blog, pensez à laisser un commentaire si le contenu vous plaît 😍
J'utilise Home Assistant qui tourne en docker sur un NAS Synology ainsi que Domoticz, que je trouve plus adapté à mon besoin (ça c'est personnel) qui tourne sur un Raspberry Pi.
Home Assistant récupère toutes les informations de mes NAS, de mon cozytouch, de mes panneaux solaires (enphase), etc. Voyons donc comment faire pour les données récupérées dans HomeAssistant remontent dans Domoticz.
Tutoriel
Pré requis :
- Home Assistant
- Domoticz
- un broker MQTT
MQTT explorer pourra être utilisé pour vérifier les données MQTT
Il faut installer paho-mqtt et pyyaml :
pip3 install paho-mqtt sudo pip install pyyaml
Il y a deux fichiers à copier (dans mon cas sur le Raspberry).
Soit vous téléchargez les fichiers soit vous faites un git clone :
- MQTTlink.py : script qui permet de faire la déclaration des appareils sur un broker MQTT. En utilisant l'autodiscovery sous Domoticz les appareils seront ajouté automatiquement en s'abonnant au topic
- config.yaml : fichier de configuration
Stockez les deux fichiers dans un répertoire (par ex sur le Raspberry /home/pi/scripts)
Il suffit de modifier le fichier de configuration selon sa configuration (exemples présents).
ℹ Si l'accès au broker MQTT demande un mot de passe, il faut décommenter et éditer les lignes 13 et 14 du fichier .py.
Puis :
chmod +x MQTTlink.py python3 MQTTlink.py
Dans MQTT explorer, on peut vérifier que le topic a bien été créé avec la configuration des capteurs.
Côté Domoticz
Dans Configuration/Matériel > ajouter "MQTT Auto Discovery Client Gateway with LAN interface"
Configurez en adaptant l'IP du MQTT (avec identifiant/mdp si nécessaire).
Une fois ajouté allez dans les logs : vous devriez voir la découverte des dispositifs MQTT.
Maintenant il reste à envoyer de Home Assistant vers le broker MQTT.
Côté HomeAssistant
Dans Paramètres/Appareils et services : installez l'intégration "MQTT" (configurer le broker si besoin).
Ensuite dans Paramètres/Automatisations et scènes, il faut créer une scène par capteur (pour ceux sont à l'aise on peut aussi le faire via le automations.yaml)
code:
service: mqtt.publish data: topic: Qdata/last/envoy/1/value/1 payload: >- {"value":{{states('sensor.xxxxx')}},"nodeName":"consommation_electric_w_value","nodeLocation":""}
Code yaml :
alias: Consommation_w description: "" trigger: - platform: state entity_id: - sensor.xxxxx condition: [] action: - service: mqtt.publish data: topic: "Qdata/last/envoy/1/value/1" payload: >- {"value":{{states('sensor.xxxxxx')}},"nodeName":"consommation_electric_w_value","nodeLocation":""} mode: single
A la ligne "topic", il faut renseigner tel que:
"Qdata/last/" + name + "/" + str(i) + "/value/1"
Name étant le nom du capteur et l'ID dans le fichier config.yaml.
Conclusion
Et voilà ! Chaque mise à jour du capteur sous Home Assistant sera récupéré par Domoticz. Ce script a été testé avec succès sur des capteurs d'énergie.
A noter que pour les capteurs d'énergie qui remontent la puissance (W) et l'énergie (kWh) il suffit de mettre le même nom pour que la puissance soit bien remontée dans les deux capteurs de Domoticz, comme dans l'exemple ID1 et ID2 du config.yaml.
Je vais essayer de maintenir et développer le script, vous pourrez donc faire un git pull pour récupérer la dernière mise à jour. J'aimerai aussi passer le tout en docker, si quelqu'un à les connaissances et est intéressé pour le faire je suis preneur.
Merci à TurboX pour ce tuto 👍
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
3 commentaires
Avec plaisir.
Je viens de tester le script avec un capteur de température et cela fonctionne aussi.
Merci !
Bonjour
Je débute en homeassiatnt et je suis tres interessé de voir mes capteurs tuya sur mon domoticz
Je dois rater des étapes voici mon code :
service: mqtt.publish
data:
topic: Qdata/last/temp_camille_temperature/1/value/1
payload: >-
{"value":{{states('sensor.temp_camille_temperature')}},"nodeName":"temperature","nodeLocation":""}
Pouvez vous m'aider ?
Merci