Liste aktiver Schalter und Lampen, wenn sie nicht zu einer Kamera gehören

SONOFF NSPanel Smart Scene Wlan Wandschalter,Wifi Smart Schalter,2 Way Smart Home Control Panel für Temperatur und Feuchtigkeitskontrolle,Smart Lichter,Smart Schalter,Arbeitet mit Alexa & Google Home
SONOFF NSPanel Smart Scene Wlan Wandschalter,Wifi Smart Schalter,2 Way Smart Home Control Panel für Temperatur und Feuchtigkeitskontrolle,Smart Lichter,Smart Schalter,Arbeitet mit Alexa & Google Home
Unverb. Preisempf.: 63,19 €
58,99 €
Sie sparen 4,20 € (7%)

Oft möchte man eine Übersicht aller aktiven Geräte in seinem Home Assistant angezeigt bekommen. Das einfachste wäre hier eine Liste von z.B. allen Entitäten der Domains switch und light.
Jedoch reicht diese Bedingung oft nicht aus. In meinem Fall lieferten z.B. die Sicherheitskameras switch-Objekte, welche immer eingeschaltet sein sollten. Damit also nur noch Light- und Switch-Entitäten angezeigt werden, die aber nicht zu einer Kamera gehören, habe ich gemeinsam mit @seb_ ein template entwickelt.

Dieses Template liefert eine Liste von eingeschalteten Entitäten der Domains “switch” und “light”. Jedoch werden hier alle Entitäten herausgefiltert, die zu einem Gerät gehören, welches eine camera-Entität besitzt.

Kameras die bei dem Ausschluss nicht berücksichtigt werden sollen können unter “allowed_cams” angegeben werden. Im Beispiel wird z.B. mein Staubsaug-Roboter als Ausnahme definiert. Diesen möchte ich natürlich trotzdem sehen, obwohl er seine Karte als camera-Entität bereitstellt.

{% set data = namespace(entities=[]) %}
{% set allowed_cams = [
'camera.rockrobo_map'
] %}
{% set data.entities = data.entities %}
{% for state in states.camera if device_id(state.entity_id) is not none and not state.entity_id in allowed_cams %}
{% set data.entities = data.entities + device_entities( device_id(state.entity_id)) %}
{% endfor %}
{%-  for state in expand(states.switch, states.light)
        if state.state == "on" 
        and device_id(state.entity_id) is not none 
        and not state.entity_id in data.entities -%}
   {{ state.entity_id }}{% if not loop.last %}, {% endif %}
{% endfor %}