Bonjour,
Ma question semble simple mais je n’ai trouvé la réponse ni dans la doc ha ni dans les forums anglais.
J’ai des interrupteurs (double poussoirs aqara lumi) qui sont reliés à un zigbee2mqtt déporté.
Mon HA recoit le message MQTT suivant. Mon but est de pouvoir déclencher des actions quand le bouton est pressé.
Les parties intéressantes sont « action »: « single_left » et « click »: « left ». Idéalement les 2 expressions devraient se trouver mais déjà avec une seule je serais heureux.
Je suppose que mon payload_press est mauvais.
J’ai aussi essayé avec un value_json.action mais ma syntaxe était mauvaise.
Etant donné que HA ne fait que recevoir une info, j’ai commencé par définir un binay sensor, mais à la réflexion, j’ai pensé qu’un button serait plus logique. Il me semble qu’il faut raisonner globalement lorsque deux machines communiquent. Sinon chaque sensor sur une machine deviendrait un switch sur l’autre et on ne s’en sortirait pas. Je me trompe ?
La partie click du payload est dépréciée, voir sur le site z2m
Une fois ton configuration.yaml modifié comme indiqué, dans une automatisation HA tu utilise simplement MQTT en trigger avec single/double left ou single/double right comme charge utile du payload
Merci pour ta réponse, @Krull56 !
En effet, j’ai vu hier que click était déprécié. J’avais édité mon message et effectué la modification sur la config du z2m déporté (en dehors de HA).
Depuis sur MQTT explorer, je vois que le payload a évolué et qu’il n’y a plus le click. Juste le single_left accompagné de toutes les autres infos qui m’intéressent moins.
Je suppose que dans HA il y a deux manières de faire. Soit en définissant les devices sur mqtt.yaml soit directement comme tu le proposes sur les automatisation.
Mais dans les deux cas je suis confronté au même problème de syntaxe. Comment mettre en place un filtre sur la valeur du champ action du payload ?
Pourrais tu stp m’aiguiller ?
merci
Donc « action »: se trouve dans le payload et pas dans le sujet mqtt, mais je l’ai fait « remonter » dans la partie sujet. Le problème vient il de là ?
Quoi qu’il en soit l’automation n’est jamais déclenchée alors que les messages mqtt arrivent bien.
Peut-être crer un sensor qui aurait comme état le payload MQTT. Le json quoi!
Ensuite avec un template, il doit y avoir moyen d’extraire ce que tu veux du json.
Mais, là je ne suis pas capable de te donner le code.
@vdomos : Je confirme que mon z2m est déporté sur un pi zero dédié qui fonctionne très bien.
Mon problème est un problème de syntaxe. J’ai corrigé le titre de la discussion pour plus de clareté.
Comment déclencher une action lorsqu’un message mqtt donné contient dans son payload ‹ « action »: « single_left » › ??
Est il possible de faire une sorte de value_json.action == single_left ??
@Krull56 : il me semble que ton exemple de code fonctionnerait si « action » faisait partie du sujet mais là il est dans le payload…
Curieux que ca ne fonctionne pas pour moi.
Chez toi Z2M est installé sur la même machine, il n’est pas déporté comme chez moi ? mais normallement ca de devrait faire aucune différence…
Je ne comprends pas…
Tu n’as rien indiqué de particulier dans ta conf yaml concernant ce sujet mqtt ?
Non, dans mon intégration mqtt (core-mosquitto) je n’ai pas d’entrées correspondant aux devices.
J’utilise beaucoup de devices mqtt que j’ai tous définis dans mon mqtt.yaml (un nabaztag pi, un ovms pour la voiture électrique, et plusieurs ESP8266 sans esphome). Tous ces appareils communiquent bien en mqtt.
Ils sont définis en yaml mais j’aurais aussi bien pu le faire dans des automations, a priori ca revient au meme.
Chez toi ils sont présents dans l’interface web de ton intégration mqtt ??
Ca doit plutot être dans z2m, non ?
Sinon l’intégration mqtt permet d’écouter des sujets. Lorsque je met mon sujet zigbee2mqtt/Inter_varangue_jardin, ha voit bien le payload exactement comme sur mqtt explorer. En revanche si je met zigbee2mqtt/Inter_varangue_jardin/action il ne voit plus rien.
Bonsoir,
J’ai aussi zigbee2mqtt sur un rpi distant et pas besoin de jouer avec les topics mqtt, il y a un paramètre pour que zigbee2mqtt utilise le mqtt discovery de ha et du coup les entités sont créés automatiquement dans ha . Par exemple une entité « action » pour l’état des boutons d’une télécommande