Trigger mqtt avec une sous partie de la payload du message

Mon problème

Bonjour,
je souhaite déclencher une automatisation avec un trigger mqtt en n’exploitant qu’une partie de la payload du message mqtt

  • la payload a cette forme : {"action":"on","action_group":16389,"linkquality":87}
  • les deux valeurs qui m’intéressent sont « action » et « action_group »

Idéalement je voudrais pouvoir faire un trigger comme ci-dessous.

trigger:
  - platform: mqtt
    topic: zigbee2mqtt/remote1
    payload: " {\"action\":\"on\",\"action_group\":16389}"

ou alors une condition dans l’automatisation pour ne considérer que les cas où "action_group": 16389
J’imagine qu’il faut utiliser les templates pour arriver au résultat. Mais j’avoue qu’après avoir chercher qq heures, j’apprécierais un petit coup de pouce :slight_smile:

Merci

Hello

je suis pas calé sur le sujet des payload trigger mais ceci tu as essayé

mqtt:
  switch:
    - unique_id: bedroom_switch
      name: "Bedroom Switch"
      state_topic: "home/bedroom/switch1"
      command_topic: "home/bedroom/switch1/set"
      availability:
        - topic: "home/bedroom/switch1/available"
      payload_on: "ON"
      payload_off: "OFF"
      state_on: "ON"
      state_off: "OFF"
      optimistic: false
      qos: 0
      retain: true

lien du model

merci @ClassicRed, j’avais aussi essayé en définissant un switch, mais je me retrouve confronté au même problème : définir un état basé sur 2 des 3 attributs du message json mqtt.
Dans l’exemple que tu cites, le message n’a qu’une valeur et la payload du message ressemble à : {"ON"}.

Mais dans mon cas, la payload ressemble à {"action":"on", "action_group"=16389, "linkquality"= <une valeur numérique> }

Je ne sais pas comment exprimer payload_on avec les valeurs de action="on" ET la valeur de action_group=16389

1 « J'aime »

je m’auto réponds avec une première proposition basée sur le templating pour n’extraire que les deux valeurs du message mqtt qui m’intéressent
Si vous trouvez une forme plus élégante, je suis preneur

trigger:
  - platform: mqtt
    topic: zigbee2mqtt/remote1
    payload: "('on', 16389)"
    value_template: "{{ value_json.action , value_json.action_group }}"
1 « J'aime »

Hello

ravi que tu es résolu et partagé la solution.
Comme dis pas calé .

La seule fois ou j’ai joué avec mqtt et et json …
c’étais pour mes nuts

C’est intéressant, je vois que tu as utilisé le templating pour formater tes valeurs. Ca va m’aider aussi car le message mqtt que j’essayais d’interpréter est produit par une télécommande zigbee ( Müller Licht 404022/404049C)
Et je pense que je vais définir un device complet pour me faciliter l’intégration des messages dans mes automatisations.

Et si le payload que je veux récupérer est une variable (0/256), une idée ?