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

Hallo zusammen,

ich möchte mir die Anzahl meiner offenen Fenster anzeigen lassen.
Dazu bin ich auf folgendes Video gestoßen: https://www.youtube.com/watch?v=NHDiz5xpotU

Der verwendete Code…

# Offene Fenster zählen
- platform: template
  sensors:
    offene_fenster:
      value_template: >
        {{ expand('binary_sensor.alle_fenster')
           | selectattr('state', 'eq', 'on')
           | list | count | int }}

…, der aus einem Helfer (Gruppe “offene_fenster”) die Anzahl macht, ist aber in dem “alten Format” geschrieben. Meine yaml ist so aufgebaut:

template:
  - sensor:
     - name: "offene_tueren_fenster"
       unique_id: "offene_tueren_fenster"
       state:

Wie kriege ich jetzt den Rest so hin, dass er mir die Anzahl der offenen Fenster/Türen ausgibt? Eine Helfer-Gruppe in der alle Fenster und Türen drin sind ist vorhanden (binary_sensor.fenster_tueren).

Besten Dank und Grüße
Daniel

Das sähe dann in etwa so aus:

# Offene Fenster zählen
- sensor:
  - name: Alle Fenster
    unique_id: "offene_tueren_fenster"
    state: "{{ expand('binary_sensor.alle_fenster') | selectattr('state','eq','on') | list | count }}"

Perfekt, funktioniert! Vielen Dank!

Als Ergänzung. Ich habe ähnliches Konstrukt ebenfall und lasse mir unter den Attributen noch anzeigen welche Fenster offen sind:

- sensor:
  - name: Alle Fenster
    unique_id: "offene_tueren_fenster"
    state: "{{ expand('binary_sensor.alle_fenster') | selectattr('state','eq','on') | list | count }}"
    attributes: 
      Sensor: >-
          {% set entities = expand('binary_sensor.alle_fenster') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ')  %}
          {%- for s in entities -%}
          {{ s }}
          {%- endfor %}

grafik

1 „Gefällt mir“

Super, vielen Dank! Wieder etwas gelernt und mein HA ein Stückchen cooler gemacht :slight_smile:

Hallo zusammen,

bei mir zeigt der Code folgenden Fehler an:

Logger: homeassistant.config
Quelle: config.py:609
Erstmals aufgetreten: 15:15:46 (1 Vorkommnisse)
Zuletzt protokolliert: 15:15:46

Invalid config for 'template' at templates.yaml, line 19: 'name' is an invalid option for 'template', check: name Invalid config for 'template' at templates.yaml, line 21: 'state' is an invalid option for 'template', check: state Invalid config for 'template' at templates.yaml, line 22: 'attributes' is an invalid option for 'template', check: attributes

Entweder stimmen die Einrückungen nicht, oder du hast den - vergessen oder vergessen sensor davor zu schreiben…poste doch einfach mal den Code wie er bei dir genau steht

hier ist der Code

  - sensor:
    - name: Alle Fenster
      unique_id: "offene_fenster"
      state: "{{ expand('binary_sensor.fenster_status') | selectattr('state','eq','on') | list | count }}"
      attributes: 
      Sensor: >-
          {% set entities = expand('binary_sensor.fenster_status) | selectattr('state','eq','on') | map(attribute='name') | list | join(', ')  %}
          {%- for s in entities -%}
          {{ s }}
          {%- endfor %}

unter attributes das Sensor muss eingerückt werden

und es muss klein geschrieben werden.

bekomme weiterhin eine Fehlermeldung:

Invalid config for ‘template’ at templates.yaml, line 23: invalid template (TemplateSyntaxError: expected token ‘,’, got ‘state’) for dictionary value ‘sensor->0->attributes->sensor’, got “{% set entities = expand(‘binary_sensor.fenster_status) | selectattr(‘state’,‘eq’,‘on’) | map(attribute=‘name’) | list | join(’, ') %} {%- for s in entities -%} {{ s }} {%- endfor %}”

code sieht aktuell wie folgt aus:

  - sensor:
    - name: Alle Fenster
      unique_id: "offene_fenster"
      state: "{{ expand('binary_sensor.fenster_status') | selectattr('state','eq','on') | list | count }}"
      attributes: 
       sensor: >-
          {% set entities = expand('binary_sensor.fenster_status) | selectattr('state','eq','on') | map(attribute='name') | list | join(', ')  %}
          {%- for s in entities -%}
          {{ s }}
          {%- endfor %}

diese ist in einer templates.yaml

sensor unter attributes muss um noch ein Leerzeichen weiter eingerückt werden…

es kommt weiterhin zu einer Fehlermeldung:

IInvalid config for ‘template’ at templates.yaml, line 23: invalid template (TemplateSyntaxError: expected token ‘,’, got ‘state’) for dictionary value ‘sensor->0->attributes->sensor’, got “{% set entities = expand(‘binary_sensor.fenster_status) | selectattr(‘state’,‘eq’,‘on’) | map(attribute=‘name’) | list | join(’, ') %} {%- for s in entities -%} {{ s }} {%- endfor %}”

  - sensor:
    - name: Alle Fenster
      unique_id: "offene_fenster"
      state: "{{ expand('binary_sensor.fenster_status') | selectattr('state','eq','on') | list | count }}"
      attributes: 
        sensor: >-
          {% set entities = expand('binary_sensor.fenster_status) | selectattr('state','eq','on') | map(attribute='name') | list | join(', ')  %}
          {%- for s in entities -%}
          {{ s }}
          {%- endfor %}

in der Zeile darunter fehlt nach 'binary_sensor.fenster_status noch das ’

danke! jetzt funktioniert es …man man war das eine schwere Geburt :smirk:

Jetzt eine andere Frage dazu:

wie kann man die Attribute z.B. auf Dashboard mit einblenden lassen?

Im Moment sehe ich das ja nur unter dem sensor

auf Dashboard sieht es aktuell wie folgt aus

Mit einem Templatesensor wo du den attributes Bereich unter state eingibst.

also wäre das ähnlich wie oben, jedoch umgekehrt

anstatt entities die state variante

Probiere es damit:

- sensor:
    - name: Alle Fensternamen
      unique_id: "offene_fensternamen"
      state: >-
          {% set entities = expand('binary_sensor.fenster_status') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ')  %}
          {%- for s in entities -%}
          {{ s }}
          {%- endfor %}

Ich habe es so umgesetzt

type: vertical-stack
cards:
  - type: tile
    entity: sensor.lichter
    show_entity_picture: true
    color: orange
    name: ' '
    vertical: false
  - type: custom:mushroom-template-card
    primary: ''
    icon: ''
    multiline_secondary: true
    secondary: >-
      {{ expand('light.all_lights') | selectattr('state','eq','on') |
      map(attribute='name') | list | join(', ') }}
    badge_icon: ''
    fill_container: false
    tap_action:
      action: navigate
      navigation_path: /lovelace/glance
    card_mod:
      style: |
        ha-card {
          border-top: 0 none;
          border-top-left-radius: 0;
          border-top-right-radius: 0;
          margin-top: -20px;
        }

light.all_lights ist eine Gruppe mit allen Lampen und sensor.lichter der Sensor.

vielen Dank, es funktioniert wie folgt:

1 „Gefällt mir“