binary_sensor funktioniert nicht

atrost

Active member
Hallo Forum,
ich möchte gerne von einem Heizkörperthermostat die Anforderung zum Heizen ermitteln.
Hierfür habe ich in der configuration.yaml unter "template" einen binary_sensor angelegt und wie folgt verknüpft.
Leider steht der immer auf "off", egal, wie ich den Sollwert einstelle.

YAML:
template:
    # Anforderung Wohnzimmer
  - binary_sensor:
     - name: "wohnzimmer_anforderung"   
       unique_id: "b6c24eff-3c11-4c42-bec9-e689fdf2baa7"
       device_class: "heat"
       state: >
         {% set wz_ist = states('sensor.climate.wohnzimmer_gruppe.attributes.current_temperature') | float(0) %}
         {% set wz_soll = states('sensor.climate.wohnzimmer_gruppe.attributes.temperature') | float(0) %})
         {{ (wz_ist - wz_soll) | round(2) > 0 }}"
 
Weshalb die device_class?
heat: on means hot, off means normal
Das "hot" und "normal" klingt jetzt nicht genau nach dem gewünschten Ergebnis, wenn das "on" oder "off" sein soll.

Hast Du das, was state definieren soll, mal unter den Entwicklerwerkzeugen => Template ausprobiert?
 
Ja, aber da komme ich auch nicht weiter. Bei device_class = "on" bekomme ich sofort einen Fehler.
Ich denke mal, er kann die Verschachtelung mit "attibutes" aus der climate_group nicht auflösen.
Ich versuche mal einfach 2 Werte Sensoren zu vergleichen.
 
Habe jetzt das hier mal probiert. Die Werte für wohnzimmer_istwert und wohnzimmer_sollwert bekomme ich.
Nur der Vergleich will nicht funktionieren. Leider gibt es auch einen Helfer, der so etwas macht.
Ich hoffe nun hier auf weitere Hilfe.

YAML:
template:
    # Anforderung Wohnzimmer
  - binary_sensor:
     - name: "wohnzimmer_anforderung" 
       unique_id: "b6c24eff-3c11-4c42-bec9-e689fdf2baa7"
       device_class: "on"
       state: "{{ is_state_attr ('wohnzimmer_istwert - wohnzimmer_sollwert') | round(2) < 0 }}"

  - sensor:
    # Wohnzimmer Raumsollwert
    - name: "wohnzimmer_sollwert"
      unique_id: "d39e4617-5c95-4074-96f9-494c3b876b61"
      device_class: "temperature"
      state_class: "measurement"
      unit_of_measurement: "°C"
      state: "{{float(states.climate.wohnzimmer_gruppe.attributes.temperature)}}"
    
    # Wohnzimmer Raumsollwert
    - name: "wohnzimmer_istwert"
      unique_id: "96cf3ad2-3696-4785-9669-963626cabd20"
      device_class: "temperature"
      state_class: "measurement"
      unit_of_measurement: "°C"
      state: "{{float(states.climate.wohnzimmer_gruppe.attributes.current_temperature)}}"
 
Zuletzt bearbeitet:
OK, viele Wege führen nach Rom.
Da es mit dem binary_sensor so nicht geklappt hat, habe ich es nun mit einer Automatisierung gemacht.
Da bin ich auch sicherer in der Anwendung :).

YAML:
lias: Wohnzimmer_Anforderung
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.wohnzimmer_istwert
      - sensor.wohnzimmer_sollwert
condition: []
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.wohnzimmer_istwert
        below: sensor.wohnzimmer_sollwert
    then:
      - action: input_boolean.turn_on
        target:
          entity_id: input_boolean.wohnzimmer_anforderung
        data: {}
    else:
      - action: input_boolean.turn_off
        target:
          entity_id: input_boolean.wohnzimmer_anforderung
        data: {}
mode: single
 
OK, viele Wege führen nach Rom.

YAML:
template:
    # Anforderung Wohnzimmer
  - binary_sensor:
     - name: "wohnzimmer_anforderung"   
       unique_id: "b6c24eff-3c11-4c42-bec9-e689fdf2baa7"
       state: >
         {% set wz_ist = states('sensor.climate.wohnzimmer_gruppe.attributes.current_temperature') | float(0) %}
         {% set wz_soll = states('sensor.climate.wohnzimmer_gruppe.attributes.temperature') | float(0) %}
         {% if (wz_ist - wz_soll) | round(2) > 0 %}
           true
         {% else %}
           false
         {% endif %}
 
YAML:
template:
    # Anforderung Wohnzimmer
  - binary_sensor:
     - name: "wohnzimmer_anforderung"  
       unique_id: "b6c24eff-3c11-4c42-bec9-e689fdf2baa7"
       state: >
         {% set wz_ist = states('sensor.climate.wohnzimmer_gruppe.attributes.current_temperature') | float(0) %}
         {% set wz_soll = states('sensor.climate.wohnzimmer_gruppe.attributes.temperature') | float(0) %}
         {% if (wz_ist - wz_soll) | round(2) > 0 %}
           true
         {% else %}
           false
         {% endif %}
Vielen Dank, das hätte ich so nicht hinbekommen. Ich trage das sofort mit einem eigenen Namen für den binary_sensor ein und kann dann immer bei Bedarf darauf zurückgreifen.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.872
Beiträge
66.569
Mitglieder
7.213
Neuestes Mitglied
Agp2111
Zurück
Oben