Bedingung für rest template

Hallo zusammen,

ich bin sehr neu im Thema HA.

Ich nutze “rest” in der “configuration.yaml” um eine API ab zu fragen.
Das Funktioniert auch ganz gut:

rest:
  - resource: https://xyz.de/api/v1/...
    method: GET
    scan_interval: 5
    sensor:
      - name: api_sensor_co2
        value_template: "{{ value_json.co2 }}"
        device_class: carbon_dioxide
        unit_of_measurement: "ppm"
      - name: api_sensor_temp
        value_template: "{{ value_json.temp|round(3) }}"
        device_class: temperature
        unit_of_measurement: "°C"

Jetzt möchte ich gerne eine Bedingung für einen Sensor* einbauen,
um bei einem Overflow eine 0 zu setzen:

rest:
  - resource: https://xyz.de/api/v1/...
    method: GET
    scan_interval: 5
    sensor:
      - name: api_sensor_co2
        value_template: >-
          {% set t = states(value_json.co2) | float(0) %}
          {% if t == 65535 %} 0
          {% endif %}
        device_class: carbon_dioxide
        unit_of_measurement: "ppm"

Leider wird dann die Entität “api_sensor_co2” im Dashboard nicht mehr gefunden.

Jamnd eine Idee?

Dir fehlt noch ein else oder elif bei deinem If.
So sollte ein Wert von 0 ausgegeben werden we er 65535 bekommt. Sonst gibt er gar nichts aus.
Probier es mal so:

value_template: >-
          {% set t = states(value_json.co2) | float(0) %}
          {% if t == 65535 %}
          0
          {% else %}
          {{ t }}
          {% endif %}

Hallo totow,

danke für den Tipp.

Lieder funktioniert es auch nicht. Gleicher Fehler.

Aber das Funktioniert:

            {% if states('value_json.co2') | float(0) == 65535 %}
               0
            {% else %}
               {{ states('value_json.co2') | float(0) }}
            {% endif %}

Habe das ganze zusätzlich noch mit einem Template getestet um das “rest”
auszuschließen. Gleiches Verhalten.

Trotzdem finde ich den ersten Ansatz smarter.
Nur finde ich den Fehler nicht.

Gruß
Flux

Fehler gefunden.

{% set t = states(value_json.co2) | float(0) %}

wird zu

{% set t = states('value_json.co2') | float(0) %}

Manchmal sind es die kleine Dinge.
Trotzdem Vielen Dank :slight_smile: