Problemfall senden eines Payload Template in MQTT

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“