Moin, ich brauche Hilfe bei einer Payload die ich zu einem Heizungsthermostat schicken will. Nicht das es wichtig ist, aber ich möchte verstehen wie das funktioniert. Bis jetzt habe ich diesen Code.
show_name: true
show_icon: true
type: button
name: Heizung +1
icon: mdi:thermometer
tap_action:
action: call-service
service: mqtt.publish
data:
evaluate_payload: false
qos: 0
retain: false
topic: zigbee2mqtt/Wohnzimmer - Heizung Fenster/set
payload: >
{{ "{\"occupied_heating_setpoint\": " ~
(state_attr('climate.wohnzimmer_heizung_fenster', 'temperature') | float +
1) | int ~ "}" }}
Allerdings bei drücken des Knopfes kommt die Error Meldung: z2m: Invalid message ‘undefined’, skipping… Was mache ich falsch?
Diese Schreibweise hatte ich auch schon ausprobiert. MIt dem selben Ergebnis.
{{ '{"occupied_heating_setpoint": ' ~ ((state_attr('climate.wohnzimmer_heizung_fenster', 'temperature') | float + 1)) | int ~ '}' }}
Die Leerzeichen im topic stören nicht? Ich würde den topic in Anführungszeichen setzen. Muss hinter set nicht noch ein Slash hin?
1 „Gefällt mir“
Stört denke ich nicht, irgendwas am Template muss falsch sein. Wenn ich die Payload
{"occupied_heating_setpoint": 21}
mit dem gleichen Topic sende wird der Wert übernommen.
Ich habe keine Ahnung, frage mich aber, wozu im Code die Tilde dient?
Nachtrag: Ich habe deine Formel bei mir probiert. Das Ergebnis ist folgendes
{{ (state_attr('climate.wohnzimmer_heizung', 'temperature') | int) +1 }}
1 „Gefällt mir“
Das sollte sich alles ein bisschen besser zusammenfügen. Ich hatte gedacht HA würde so die Templates besser akzeptieren. Macht aber kein Unterschied ob mit oder ohne.
Ich versuche das ganze mal komplett nachzubauen.
payload: >
{{ "{\"occupied_heating_setpoint\": "}} {{ (state_attr('climate.wohnzimmer_heizung', 'temperature') | int) + 1 }} }
Bei mir in den Templates funktioniert es. Wenn du die Entität an deine anpasst, sollte es gehen.
1 „Gefällt mir“
Ja so war es bei mir auch. Hatte im Template Editor funktioniert. Ich habe aber gerade gesehen, was mir völlig entgangen war, die Button Card unterstützt keine Templates. Ich versuche mal etwas über die Skripte.
Edit:
Über die Skripte klappt es
alias: Heizung +1
sequence:
- variables:
msg:
occupied_heating_setpoint: >
{{ (state_attr('climate.wohnzimmer_heizung_fenster', 'temperature') + 1) | int(0) }}
- service: mqtt.publish
data:
topic: zigbee2mqtt/Wohnzimmer - Heizung Fenster/set
payload: "{{ msg | tojson }}"
1 „Gefällt mir“