Mini--tuto - Piloter via MQTT un objet d'Home Assistant depuis une entrée digitale de l'IPX800V5 et un relais de l'IPX800V5 depuis Home Assistant

Le but est de piloter un appareil depuis une entrée digitale de l’IPX800V5

Dans IPX800 V5 - API Deck (https://download.gce-electronics.com/data/005_IPX800_V5/IPX800_V5.07.00.zip) il y a la possibilité de voir les valeurs que génère l’IPX pour une entrée digitale

On voit que la valeur qui est changée par l’entrée digitale est "on": true ou "on": false

{
"_id": 65552,
"name": "[IPX]Digital input 1",
"link0": 12582912,
"link1": 10485787,
"virtual": false,
"on": true
}

on peut aussi le voir par en mettant directement l’URL http://192.168.1.120/api/core/io/65552?ApiKey={mettre apikey de l’ipx}

si on modifie dans l’IPX l’entrée digitale

ca modifiera le json (il faut rafraichir avec F5)

Donc comme indiqué ca envoie 2 valeurs true et false mais on a un appareil (prise, ruban etc) qui n’accepte que des valeurs ON ou OFF (ou autres)


1. Création du Publish coté IPX800V5

On clique sur 'Ajouter MQTT Publish"

on clique sur édition et on paramètre

On a le Publish


2. Liaison du Publish à l’entrée digitale de IPX800V5

Donc dans l’édition de lien, on va relier la sortie digitale 1 à un « MQTT publish » en cliquant sur le « + » à droite

et y glisser le « MQTT publish »

On valide et on a maintenant

Donc maintenant à chaque changement d’état de l’entrée digitale cela enverra la valeur true ou false sur « zigbee2mqtt/IPX800V5-DIN1 »


3. Lecture des infos de l’appareil dans Home Assistant

Maintenant il faut aller dans home assistant dans l’interface zigbee2MQTT

aller sur l’appareil et cliquer, on obtient (ici une prise NOUS A1Z)

Par défaut le nom l’appareil a la valeur de la valeur de « Router », on peut l’éditer pour rendre plus clair ici j’ai renommé de « 0xa4c1388f14e47818 » (dans mon cas) à « NOUS-1AZ-A » que l’on utilisera dans les automatismes d’Home Assistant ensuite.

on clique sur l’onglet « Etat », on voit la valeur state qui accepte ON et OFF


4. Création d’une automatisation pour transformer la valeur true en ON et false en OFF

Dans Home Assistant / Paramètres / Automatisations et scènes / Créer une automatisation / Créer une nouvelle automatisation / Ajouter un déclencheur / MQTT / Message MQTT Recu

4.1. Pour le true de l’IPX vers ON de l’appareil

4.1.a On ajoute un déclencheur avec le nom zigbee2mqtt/IPX800V5-DIN1 {"state":true}

On clique sur
image

on choisit « MQTT » et « Message MQTT reçu »

on sélectionne dans le cadre « MQTT Déclencheur » « modifier en yaml »

alias: zigbee2mqtt/IPX800V5-DIN1 {« state »:true}
trigger: mqtt
options:
topic: zigbee2mqtt/IPX800V5-DIN1
payload: « {"state":true} »

On obtient

4.1.b on ajoute une action avec le nom zigbee2mqtt/NOUS-1AZ-A/set {"state":"ON"}

On clique sur
image

on choisit « MQTT » et « Publier »

au format yaml

alias: « zigbee2mqtt/NOUS-1AZ-A/set {"state": "ON"} »
action: mqtt.publish
metadata: {}
data:
qos: 0
retain: false
topic: zigbee2mqtt/NOUS-1AZ-A/set
evaluate_payload: true
payload: « {"state":"ON"} »

puis on enregistre l’automatisation avec le nom suivant (c’est long mais permet une clarté dans la liste des automatisations, on peut utiliser un autre nom si besoin )

zigbee2mqtt/IPX800V5-DIN1 {"state":true} => zigbee2mqtt/NOUS-1AZ-A/set {"state":"ON"}




4.2. Pour le false de l’IPX vers OFF de l’appareil

4.2.a On ajoute un déclencheur avec le nom zigbee2mqtt/IPX800V5-DIN1/set {"state":false}

image

on choisit « MQTT » et « Message MQTT reçu »

au format yaml

alias: zigbee2mqtt/IPX800V5-DIN1 {« state »:false}
trigger: mqtt
options:
topic: zigbee2mqtt/IPX800V5-DIN1
payload: « {"state":false} »

4.2.b on ajoute une action avec le nom zigbee2mqtt/NOUS-1AZ-A/set {"state": "OFF"}

image


on choisit « MQTT » et « Publier »

au format yaml

alias: « zigbee2mqtt/NOUS-1AZ-A/set {"state": "OFF"} »
action: mqtt.publish
metadata: {}
data:
qos: 0
retain: false
topic: zigbee2mqtt/NOUS-1AZ-A/set
evaluate_payload: true
payload: « {"state":"OFF"} »

puis on enregistre avec le nom suivant (c’est long mais permet une clarté dans la liste des automatisations, on peut utiliser un autre nom)

zigbee2mqtt/IPX800V5-DIN1 {"state":false} => zigbee2mqtt/NOUS-1AZ-A/set {"state": "OFF"}

On obtient les deux automatisations

qu’on peut tester dans l’IPX800V5




On peut selon les mêmes principes piloter n’importe quelle action sur Home Assistant et depuis Home Assistant envoyer un « publish MQTT » qu’on recevra sur l’IPX800V5 sur un MQTT"Suscribe"

1. Création du subscribe sur l’IPX800V5

on ajoute un MQTT subscribe

que l’on paramètre ainsi

On clique sur « Edition lien »

on clique sur « + »
image

Et on fait glisser un

On sélectionne un relais

On obtient

Voilà on a lié le subscribe au relais 1 de l’IPX800V5

2. Création de l’automatisme

Toujours dans Home Assistant / Paramètres /

image

image

On ajoute un déclencheur
image

On sélectionne « Heure et lieu » puis « Soleil »

on ajoute une action

On sélectionne « MQTT » puis « Publier »

On enregistre en le nommant Lever de soleil + 1h => IPX800V5-Relais-1 {"state": true}

On a l’automatisation
image

On clique sur les trois petits points et « Dupliquer »
On modifie le déclencheur (on peut mettre un offset négatif selon Sun - Home Assistant)

et l’action

et on enregistre en nommant Coucher de soleil => IPX800V5-Relais-1 {"state": false}

On a maintenant les deux automatisations qui active le relais 1 de l’IPX800V5 entre le lver du soleil plus une heure et le coucher du soleil (partique pour les volets roulants ! :slight_smile:

Voila le principe est posé, rien n’empêche de faire plein de chose et lier plein d’objets zigbee (ou autres) à l’IPX800V5 et inversement !

On peut installer Home Assistant sur le NRX800 via l’image dédiée

Voila on a fait le tour !

5 « J'aime »

@cce66 Merci beaucoup pour ce tuto super détaillé et le temps passé à le faire.

La mise en oeuvre de Mqtt n’est pas forcément évidente pour les néophytes et cela permettra de se lancer plus facilement :slightly_smiling_face:

3 « J'aime »

Top merci pour ton tuto, ça fait longtemps que je voulais le faire mais je n’avais pas réussi à l’époque et je n’avais pas cherché à comprendre.

J’en ai vraiment besoin maintenant et ton tuto tombe à pic.

Par contre, si je peux ajouter des infos :

Attention à votre de passe, il doit être simple et court ! A chaque fois dans la config de MQTT broker (côté IPX) j’avais une erreur car il n’arrivait pas à se connecter… mon mot de passe était trop long :sweat_smile:
Je ne sais plus quand, mais j’avais déjà eu un problème de mot de passe car j’utilisais un “$” il me semble. Donc si vous avez des problèmes pour vous connecter, essayez avec un mot de passe très simple, ça vous évitera de chercher toute la journée.

Sinon dans ton tuto, pourquoi tu utilises Z2M ? Je ne suis clairement pas expert, mais je pense qu’il serait mieux de passer directement via Mosquitto, non ? Etant donné qu’on n’utilise pas un équipement Zigbee, autant ne pas le rendre dépendant de cette application. Il y a peut-être une subtilité que je ne maitrise pas.

1 « J'aime »

Alors il y a la technologie Zigbee qui est un protocole radio qui permet de faire communiquer les objets via des ondes radio (parfois via un routeur zigbee si les objets sont trop éloignés de la passerelle) vers une passerelle Zigbee et sur la passerelle il y a toujours la nécessité de transformer le protocole Zigbee en protocole TCP/IP qu’est MQTT pour communiquer vers un broker MQTT (Mosquitto par exemple) sur lequel l’IPX800V5 peut communiquer via des Publish/Subscribe MQTT (on peut considérer le broker MQTT comme un serveur de mails sur lequel viennent se connecter des clients) .

Voici un schéma explicatif illustrant l’interaction entre un objet Zigbee et un IPX800V5 via MQTT.

Ca va dans les deux sens (comme montré dans le tuto !)

Il y a d’autre technologie comme Zwave ou Enocean et pour faire communiquer des objets utilisant ces technologies il faudrait procéder de même.

Voila j’espère que cela te parait plus clair ! :wink:

1 « J'aime »

J’ai bien compris le principe, mais faut garder ton explication comme référence car je ne crois pas qu’on puisse faire plus clair !

Ce que je veux dire par là c’est ton topic tu l’appelles “zigbee2mqtt/IPX800-DIN1“ et ensuite tu dis dans ton chapitre 3 :
Maintenant il faut aller dans home assistant dans l’interface zigbee2MQTT

Bon le topic on peut l’appeler comme on le souhaite j’en conviens, tu aurais pu mettre “jaimelechocolat/ipx-din1”. Mais pourquoi passer par Z2M plutôt que par les entites MQTT directement ?
Pour le moment je fais des tests, et j’ajoute mon topic directement dans le fichier config et je le vois apparaitre dans les entités MQTT

Parce que c’est les topics exposés par HomeAssistant (qu’on voit passer avec MQTT Explorer ou MQTTX) et qu’on fait l’automatisation dans Home Assistant pour transformer true en ON et false en OFF si l’objet à controler accepte en payload les valeurs true ou false qu’envoie l’IPX800V5 alors oui on peut commander directement en MQTT (et là plus besoin de tuto ! :wink: quoique c’est le principe qui compte).
Et il faut comprendre :

  1. objet MQTT parlant TCP/MQTT <=> [traducteur MQTT/Zigbee qui est Zigbee2(To)Mqtt) ] <=> objet parlant Radio/Zigbee
  2. objet MQTT parlant TCP/MQTT <=> objet MQTT parlant TCP/MQTT (pas besoin de traducteur ils parlent le même langage !