Je n'arrive pas à faire comprendre le statut de ma lampe

Mon problème

Après différents essais infructueux pour intégrer mes lampes dans HA directement l’intégration KNX, je tente la solution d’une passerelle KNX <> MQTT.

La partie commande fonctionne bien, en envoyant le JSON

{\"type\":\"Buffer\",\"data\":[1]}
ou
{\"type\":\"Buffer\",\"data\":[0]}

Par contre, je n’arrive pas à récupérer et à faire comprendre correctement à HA le statut reçu :
value: "{\"value\":{\"type\":\"Buffer\",\"data\":[1]}}"

Mon dernier essai de configuration en date, après avoir essayé plusieurs variations :

light:
  - platform: mqtt
    schema: template
    object_id: "Mur Salon"
    name: "Salon - Applique"
    command_topic: "knx/1/0/3/write/dpt1"
    command_on_template: "{\"type\":\"Buffer\",\"data\":[1]}"
    command_off_template: "{\"type\":\"Buffer\",\"data\":[0]}"
    state_topic: "knx/1/3/3"
    state_template: "{{ value_json.value.data[0] }}"
    retain: true
    qos: 0
    icon: "mdi:lightbulb-outline"

Ma configuration


image


Bon, je me réponds moi-même, si ça peut en aider d’autres qui se perdraient ici :slightly_smiling_face:

L’astuce, c’est bien d’utiliser le « template schema » comme dans la config ci-dessus, mais le state_template n’était pas bien défini, il faut convertir la valeur reçue en « on » ou « off » :

mqtt:
  light:
    - schema: template
    name: "Salon applique"
    unique_id : "lumiere_salon_applique_id"
    command_topic: "knx/1/0/3/write/dpt1"
    command_on_template: "{\"type\":\"Buffer\",\"data\":[1]}"
    command_off_template: "{\"type\":\"Buffer\",\"data\":[0]}"
    
    state_topic: "knx/1/3/3"
    state_template : "{{ value_json.value.data[0]  | replace('0', 'off') | replace('1', 'on') }}"
    
    retain: true
    qos: 0
    icon: "mdi:lightbulb-outline"

( Au passage, j’ai fait la mise à jour vers 2022.6, d’où le mqtt → light au lieu light → platform :mqtt, mais je pense que ça ne joue pas ici )

Salut

Tu es obligé de protéger les doubles quotes ?
Au pire tu fais

    command_on_template: "{'type':'Buffer','data':'[1]'}"
    command_on_template: "{'type':'Buffer','data':'[0]'}"

Merci @Pulpy

Effectivement, je n’étais pas obligé de protéger.
Par contre, j’ai quand même dû le faire un peu différemment pour que ça fonctionne :

  command_on_template: '{"type":"Buffer","data":[1]}'
  command_off_template: '{"type":"Buffer","data":[0]}'

Étape suivante : Les volets :slight_smile:

1 « J'aime »