restful->value_template -> if funktioniert nicht bei Jahreszahlvergleich

gima84

New member
Hi, ich versuche einen einfachen Vergleich zu machen. Ein Sensor enthält eine Jahreszahl (per Restful ausgelesen) und wird nach float konvertiert. Vergleichen will ich diese Jahreszahl mit now().year, was leider nicht funktioniert.

YAML:
rest:
  - resource: http://192.168.0.14/V?m=1&f=j
    scan_interval: 60
    sensor:
      - name: "szwp_jan_year_indicator"
        value_template: "{{ as_timestamp(value_json.tm) | timestamp_custom('%Y', True) | float }}"
      - name: "szwp_jan"
        value_template: >
          {%  if (now().year|float) == (states('sensor.szwp_jan_year_indicator')) %}         
          {{ (value_json.val[0] | replace(',','.') | float) +
          (value_json.val[1] | replace(',','.') | float) +
          (value_json.val[3] | replace(',','.') | float) +
          (value_json.val[4] | replace(',','.') | float) +
          (value_json.val[5] | replace(',','.') | float) +
          (value_json.val[6] | replace(',','.') | float) +
          (value_json.val[7] | replace(',','.') | float) +
          (value_json.val[8] | replace(',','.') | float) +
          (value_json.val[9] | replace(',','.') | float) +
          (value_json.val[10] | replace(',','.') | float) +
          (value_json.val[11] | replace(',','.') | float) +
          (value_json.val[12] | replace(',','.') | float) +
          (value_json.val[13] | replace(',','.') | float) +
          (value_json.val[14] | replace(',','.') | float) +
          (value_json.val[15] | replace(',','.') | float) +
          (value_json.val[16] | replace(',','.') | float) +
          (value_json.val[17] | replace(',','.') | float) +
          (value_json.val[18] | replace(',','.') | float) +
          (value_json.val[19] | replace(',','.') | float) +
          (value_json.val[20] | replace(',','.') | float) +
          (value_json.val[21] | replace(',','.') | float) +
          (value_json.val[22] | replace(',','.') | float) +
          (value_json.val[23] | replace(',','.') | float) +
          (value_json.val[24] | replace(',','.') | float) +
          (value_json.val[25] | replace(',','.') | float) +
          (value_json.val[26] | replace(',','.') | float) +
          (value_json.val[27] | replace(',','.') | float) +
          (value_json.val[28] | replace(',','.') | float) +
          (value_json.val[29] | replace(',','.') | float) +
          (value_json.val[30] | replace(',','.') | float) }}
          
          {%  else %} 0
          {% endif %}
        device_class: energy
        unit_of_measurement: "kWh"

Im Template Editor sieht es m.M.n auch gut aus:
Code:
{{ states('sensor.szwp_jan_year_indicator') |float}}
Ergebnistyp: number
2022


{{ (now().year|float) }}
Ergebnistyp: number
2022


###

Zusammen:
{{ states('sensor.szwp_jan_year_indicator') |float}}
{{ (now().year|float) }}

Ergebnistyp: string
2022.0
2022.0
 
Woran genau hängt es denn bzw. was ist das Problem? Dass bei "zusammen" als Ergebnistyp string kommt im Template Editor ist normal und richtig bei mehreren Ausgaben.

Kann es sein, dass Du auch bei "rest" bei einem mehrzeiligen value_template: mit >- anstelle von > arbeiten müsstest, also
YAML:
      - name: "szwp_jan"
        value_template: >-
anstelle des aktuellen
YAML:
      - name: "szwp_jan"
        value_template: >
? So kenne ich das jedenfalls von anderen Sensoren.

Andernfalls würde ich ggf. nochmal int anstelle von float verwenden, da Du hier ja ohnehin mit ganzen Zahlen arbeitest.
 

Letzte Anleitungen

Statistik des Forums

Themen
4.673
Beiträge
47.705
Mitglieder
4.318
Neuestes Mitglied
brockau
Zurück
Oben