Offene Fenster / Entitäten mit bestimmtem Status zählen

Dank dir, das funzt!

Brauche Eure Hilfe an dieser Stelle auch:

was ist hier falsch? Die offenen Fenster werden nicht gezählt…

# Storage for Bubble Card Modules
template:
  - trigger:
      - trigger: event
        event_type: bubble_card_update_modules
    sensor:
      - name: "Bubble Card Modules"
        state: "saved"
        icon: "mdi:puzzle"
        attributes:
          modules: "{{ trigger.event.data.modules }}"
          last_updated: "{{ trigger.event.data.last_updated }}"
      - name: Alle Fenster
        unique_id: "offene_tueren_fenster"
        state: "{{ expand('binary_sensor.alle_fenster') | selectattr('state','eq','on') | list | count }}"

warum versuchst du das denn in der Configuration.yaml einzufügen?

Du kannst dir einfach einen Template Helfer vom Typ Sensor in der UI erstellen.

Ein möglicher Inhalt wäre:

{% set offene_fenster = expand('binary_sensor.alle_fenster') | selectattr('state', 'eq', 'on') | list %}
{% set anzahl = offene_fenster | length %}

{% if anzahl > 0 %}
  {{ anzahl }}
{% else %}
  0
{% endif %}

Dazu benötigst du eine Gruppe in der alle deine Fenster enthalten sind, die du überwachen möchest. Das ist der binary_sensor.alle_fenster

Wenn der bei dir so heißt sollte das so passen

Das kannst du auch unter Entwicklerwerkzeuge / Template ausprobieren

Hallo Schlumerdix.

ich danke Dir ganz herzlich. Ist einfacher und man fummelt nicht in der configuration.yaml und hat auf Anhieb funktioniert!

Bekanntlich führen ja viele Wege nach Rom.
Man muss nicht zwingend mit einer Gruppe arbeiten. Hat auch den Nachteil, das man bei neuen Sensoren immer dran denken muss, diese auch in die Gruppe aufzunehmen.

Man kann auch direkt mit der Device Class “window” arbeiten.
Mit exclude, dann vorhandenen Fenster Gruppen abschließen, da sonst doppelt gezählt wird, wenn ein offenes Fenster einer Fenster Gruppe angehört.

{% set exclude = ['binary_sensor.xyz1', 'binary_sensor.xyz2'] %}
{{ states
| selectattr('state','eq','on')
| selectattr('attributes.device_class','eq', 'window')
| reject('in', exclude)
| list
| count
}}

Oder auch nur eine bestimmte Etage nach offenen Fenstern durchsuchen.

{% set exclude = ['binary_sensor.xyz1', 'binary_sensor.xyz2'] %}
{{ floor_areas('EG')
| map('area_entities') | sum(start=[])
| select('is_state_attr', 'device_class', 'window')
| select('is_state', 'on') 
| reject('in', exclude)
| list
| count
}}

Funktioniert natürlich ach mit der Device Class “door”.

Gruß Osorkon

Vielen Dank für die Erklärung. Schaue ich mir sehr gerne an.