Sargon
1
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.
Bacardi
2
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}}
Osorkon
3
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“
Sargon
4
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?
Osorkon
5
Nicht immer, aber immer öfters. 
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
Sargon
6
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!!