YAML Syntax Error im Template Sensor

atrost

Active member
Hallo Forum,
ich habe an meiner Fritzbox Comet Dect Heizkörperthermostate.
Die Fritzbox Smarthome Integration liefert mir für jeden Thermostat ein Gerät "climate.raum" mit den entsprechenden Sensoren.
Im Wohnzimmer habe ich 2 davon und möchte aus diesen beiden nur die gemittelte Temperatur rausziehen.

Leider bekomme ich immer eine Fehlermeldung:
Invalid config for 'template' at configuration.yaml, line 29: invalid template (TemplateSyntaxError: expected token ',', got 'climate') for dictionary value 'sensor->0->state', got '{% set rt_couch = states(\'state_attr(\'climate.wohnzimmer_couch\',\'temperature")\' ) | float(0) %} {% set rt_tuer = states(\'state_attr(\'climate.wohnzimmer_tur\', \'temperature")\' ) | float(0) %} \n{{ ((rt_couch + rt_tuer) / 2) | float(0) }}\n'

YAML:
template:
  - sensor:
    # Climate Wohnzimmer von Fritzbox
    - name: "Wohnzimmer_Raumtemp"
      unique_id: "wohnzimmer_raumtemperatur"
      unit_of_measurement: "°C"
      device_class: "temperature"
      state_class: "measurement"
      state: >
            {% set rt_couch = states('state_attr('climate.wohnzimmer_couch','temperature")' ) | float(0) %}
            {% set rt_tuer  = states('state_attr('climate.wohnzimmer_tur', 'temperature")' ) | float(0) %}
 
            {{ ((rt_couch + rt_tuer) / 2) | float(0) }}

Erkennt jemand den Fehler und hat eine Lösung
 

Anhänge

  • Screenshot 2024-01-05 18.53.12.png
    Screenshot 2024-01-05 18.53.12.png
    55,6 KB · Aufrufe: 5
  • Screenshot 2024-01-05 18.54.29.png
    Screenshot 2024-01-05 18.54.29.png
    55,9 KB · Aufrufe: 4
Also zwei Fehler springen mir sofort ins Auge.
Code:
            {% set rt_couch = states('state_attr('climate.wohnzimmer_couch','temperature")' ) | float(0) %}
            {% set rt_tuer  = states('state_attr('climate.wohnzimmer_tur', 'temperature")' ) | float(0) %}
temperatur alle beide.
vorne ein ', hinten ein ", das klappt nicht.

Versuch es mal so.
Code:
            {% set rt_couch = states('state_attr('climate.wohnzimmer_couch','temperature') ) | float(0) %}
            {% set rt_tuer  = states('state_attr('climate.wohnzimmer_tur', 'temperature') ) | float(0) %}
 
YAML:
template:
  - sensor:
    # Climate Wohnzimmer von Fritzbox
    - name: Wohnzimmer Raumtemp
      unique_id: 924ee4e4-dd9e-4726-9ac0-c644dc5596b5
      unit_of_measurement: "°C"
      device_class: "temperature"
      state_class: "measurement"
      state: |
        {% set rt_couch = state_attr('climate.wohnzimmer_couch','temperature') | float(0) %}
        {% set rt_tuer  = state_attr('climate.wohnzimmer_tur', 'temperature')  | float(0) %}
        {{ ((rt_couch + rt_tuer) / 2) | float(0) }}
 
Würde das Ergebnis vielleicht nicht nochmal erneut als Float formatieren, sondern z.B. auf 2 Stellen nach dem Komma aufrunden.
YAML:
{{ ((rt_couch + rt_tuer) / 2) | round(2) }}

Einen default Wert, brauchst du dem Ergebnis ja nicht mit geben. Das hast Du schon bei rt_couch und rt_tuer getan.
 
Die Hochkommas hatte ich schon mal als ' und auch als ". Hatte ich dann nur falsch zurückgesetzt. Jetzt ist es wieder richtig.
Das mit round(2) ist eine gute Idee. Das Problem besteht aber noch immer.
Es gibt wohl ein Problem mit dem Climate.

Invalid config for 'template' at configuration.yaml, line 29: invalid template (TemplateSyntaxError: expected token ',', got 'climate') for dictionary value 'sensor->0->state', got '{% set rt_couch = states(\'state_attr(\'climate.wohnzimmer_couch\',\'temperature")\' ) | float(0) %} {% set rt_tuer = states(\'state_attr(\'climate.wohnzimmer_tur\', \'temperature")\' ) | float(0) %} \n{{ ((rt_couch + rt_tuer) / 2) | float(0) }}\n'
Invalid config for 'template' at configuration.yaml, line 29: invalid template (TemplateSyntaxError: expected token ',', got 'climate') for dictionary value 'sensor->0->state', got "{% set rt_couch = states('state_attr('climate.wohnzimmer_couch','temperature' )' ) | float(0) %} {% set rt_tuer = states('state_attr('climate.wohnzimmer_tur', 'temperature' )' ) | float(0) %} \n{{ ((rt_couch + rt_tuer) / 2) | round(2) }}\n"
 
Ernsthaft?! Hast Du Dir auch nur eine Sekunde Lang meine Lösungsvorschlag angeschaut?
Das ist zu 100% Richtig und beinhaltet keinen einzigen Fehler!
Copy & Paste, wäre erlaubt. ;)

Es heisst
YAML:
state_attr('climate.wohnzimmer_couch','temperature') | float(0)

und nicht!

YAML:
states('state_attr('climate.wohnzimmer_couch','temperature') ) | float(0)
 
Oh ja, Wahnsinn. Das nennt man dann wohl betriebsblind!
Habe es so geändert und es klappt - danke dafür!
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.377
Beiträge
61.478
Mitglieder
6.543
Neuestes Mitglied
Willem
Zurück
Oben