Aantal lampen aan indicatie

Naast de status van batterijspanning in een dashboard, kan het ook handig zijn om te zien hoeveel lampen er branden op een per verdieping. Net zoals bij de batterij-entiteiten in een titel-kaart, kan dat dus ook voor een lamp-entiteiten in een titel-kaart.

Echter, om nu voor een hele verdieping de lampen die aan staan te kunnen tellen is een template nodig. Die wordt alsvolgt opgebouwd:

Ruimtes

Als eerste de verdieping waar het om gaat. In dit voorbeeld de ‘Eerste verdieping’ die bestaat uit een aantal ruimtes. In Home Assistant, ga naar Instellingen -> Ruimtes, Labels en Zones om te zien wat de namen van de ruimtes zijn. Deze zijn nodig omdat licht-entiteiten verbonden zijn aan ruimtes (areas) en niet aan verdiepingen (floors).

Template

In een template wordt gebruik gemaakt van Jinja-code en voor de ruimtes op de 1e verdieping maken we een variable genaamd ‘FIRSTFLOOR’:

{% set FIRSTFLOOR = ['woonkamer','keuken','overloop','kantoor','slaapkamer','eetkamer','badkamer','toilet'] %}

Het gaat dan om het domain voor de verlichting, dus ‘light’:

{% set DOMAIN = 'light' %}

De entiteiten kunnen nu gevonden worden door de area_entiteiten('ruimte') op te vragen. We willen echter alleen de entiteiten van een bepaalde verdieping opvragen en dat kan met een ‘for-loop‘.

Aangezien we gebruik maken van attributes in een list, is het noodzakelijk om deze in een namespace op te nemen.

{% set ns = namespace(ent=[]) %}
{% for f in FIRSTFLOOR %}
  {% set ns.ent = ns.ent + area_entities(f) %}
{% endfor %}

Het resultaat van deze loop met alle entiteiten van de ‘Eerste verdieping‘, staat nu in ‘ns.ent‘.

Met de ‘expand-functie’ kan nu gefilterd worden op het domain ‘light’ en op de status ‘on’. Als we dat in een lijst (‘list‘) uitvoeren kan die geteld worden met ‘count‘:

{{ expand(ns.ent|unique)
  | selectattr('domain','equalto', DOMAIN)
  | selectattr('state','equalto','on')
  | list 
  | count
}}

Helper

Op deze manier vinden we dus het aantal lampen dat aan staat op de 1e verdieping. Deze code zetten we dan in een template-helper van het type sensor:

Dashboard

De zojuist aangemaakte sensor kan nu in een titel-kaart opgenomen worden met als voorwaarde dat de waarde van de sensor meer dan 0 moet zijn, dus alleen zichtbaar als er lampen aan staan.

Het resultaat: