Alle Lichter einer Etage zählen

Ich habe ein Template das mir alle Lichter zählt, nun würde ich gern das Template so ändern das nur die Lichter im Erdgeschoss gezählt werden.

{{ states.light 
  | rejectattr('attributes.entity_id', 'defined') 
  | selectattr('state', 'eq', 'on') 
  | rejectattr('entity_id', 'in', ['light.home_pc_thomas_chrome_screen'])
  | list 
  | count }}

In der HA Doku gibt es das hier: Templating - Home Assistant
Allerdings habe ich keine Ahnung ob und wie ich das in meine Template einfügen kann.

Ich warte immer noch darauf, daß jemand den richtigen Code mit oberen Ansatz liefert…bis dahin kannst Du durchiterieren…

{% set area_name = 'Wohnzimmer' %}
{% set ns = namespace(light_counter=0) %}
{% set area_lights = area_entities(area_name) | select('search', 'light.') | list %}
{% for light in area_lights -%}
  {% if states[light].state == 'on' -%}
    {# {{ light }}: {{ states[light].state }} #}
    {% set ns.light_counter = ns.light_counter + 1 -%}
  {% endif -%}
{% endfor -%}
{{ns.light_counter}}

Hier mal ein Template, Anzahl der eingeschalteten Lichter im Wohnzimmer

{% set exclude = ['light.xyz1', 'light.xyz2'] %}
{{ expand(area_entities('Wohnzimmer'))
| selectattr('domain', 'eq', 'light')
| rejectattr('entity_id', 'in', exclude)
| selectattr('state', 'eq', 'on') 
| list 
| count
}}

Oder Anzahl der Räume im Erdgeschoss mit eingeschalteten Lichtern.

{% set exclude = ['light.xyz1', 'light.xyz2'] %}
{% set ns = namespace(x = []) %}
{% for a in floor_areas('Erdgeschoss') if area_entities(a)
| select('match', 'light') 
| select('is_state', 'on')
| reject('in', exclude)
| list
| count > 0  %}
{% set ns.x = ns.x + [area_name(a)] %}
{% endfor %}
{% set anzahl_bereiche = ns.x | count %}
{{ anzahl_bereiche }}

Gruß
Osorkon

1 „Gefällt mir“

Ich habe mich an deinem Beispiel versucht aber es ist noch ein Fehler drin

{% set exclude = ['light.home_pc_thomas_chrome_screen'] %}
{{ expand(floor_areas('EG'))
| selectattr('domain', 'eq', 'light')
| rejectattr('entity_id', 'in', exclude)
| selectattr('state', 'eq', 'on') 
| list 
| count
}}

Er zeigt mir 0 als Menge an aber es ist 21 Uhr und es sind etliche Lichter an. Hast du vielleicht noch eine Idee?

Nicht immer, aber immer öfters. :grin:

Eingeschaltete Lichter auf der Etage "“EG”

{% set exclude = ['light.home_pc_thomas_chrome_screen'] %}
{{ floor_areas('EG')
| map('area_entities') | sum(start=[])
| select('match', 'light')|select('is_state', 'on')
| reject('in', exclude)
| list
| count }}

Gruß
Osorkon

Fast.
Der Exclude für die Gruppen funktioniert nicht.

Ich hab die beiden Gruppen nochmal explizit ausgenommen, jetzt funktioniert es:

{% set exclude = ['light.home_pc_thomas_chrome_screen', 'light.wohnzimmer_spots', 'light.wohnzimmer_strips'] %}
{{ floor_areas('EG')
| map('area_entities') | sum(start=[])
| select('match', 'light')
| select('is_state', 'on')
| reject('in', exclude)
| list
| count }}

oder hast du nochmal eine Idee mit den Gruppen?

Danke dir!!