Anzahl nicht erreichbarer Geräte (nicht Entitäten)

Moin, ich möchte gern die Anzahl der nicht erreichbaren Geräte (nicht Entitäten, da die Dopplungen das ganze unübersichtlich machen) haben um in meinem Dashboard die Karte nur dann anzeigen zu lassen wenn überhaupt Geräte nicht erreichbar sind. Hat jemand eine Idee?

Dazu bietet sich z. B. Auto Entities an
https://github.com/thomasloven/lovelace-auto-entities

Oder auch Watchman
https://github.com/dummylabs/thewatchman

1 „Gefällt mir“

oder auch Spook by Frenck:

Oder einfach nur ein Template.

Liste der nicht verfügbaren Geräte:

{{ states
| selectattr('domain','in',['binary_sensor', 'climate', 'light', 'sensor', 'switch'])
| selectattr('state', 'in', ['unavailable'])
| map(attribute='entity_id')
| map('device_attr', 'name_by_user') 
| reject('match', 'None')
| unique
| list 
| sort 
| join('\n')
}}

Anzahl der nicht verfügbaren Geräte

{{ states
| selectattr('domain','in',['binary_sensor', 'climate', 'light', 'sensor', 'switch'])
| selectattr('state', 'in', ['unavailable'])
| map(attribute='entity_id')
| map('device_attr', 'name_by_user') 
| reject('match', 'None')
| unique
| list 
| count
}}

Gruß
Osorkon

2 „Gefällt mir“

@Osorkon , das funktioniert hervorragend. Jetzt wollte ich das ganze noch für niedrigen Batteriestand machen aber ich krieg das Template allein nicht hin. Ich möchte, dass das alle Geräte <15% Batterie aufzeigt.

Hier mal ein Template, welches die Namen der Batterie Entitäten ausgibt, unterhalb des definierten Schwellenwertes.

{% set schwellenwert = 20 %}
{% set result = namespace(sensors=[]) %}
{% for state in states.sensor | selectattr('attributes.device_class', '==', 'battery') | sort(attribute='state')  %}
{% if 0 <= state.state | int(-1) < schwellenwert | int  %}
{% set result.sensors = result.sensors + [state.name ~' (' ~ state.state ~ '%)'] %}
{% endif %}
{% endfor %}
{{result.sensors|join('\n')}}

Gruß
Osorkon

1 „Gefällt mir“

@Osorkon einen habe ich noch. Ich habe einen Sensor der die Anzahl der Geräte mit niedrigem Akku (<15%) zählt. Funktioniert auch gut. Allerdings würde ich hier gerne noch die Geräte inkludieren, die nicht auf % Zahl sondern on / off zurück gibt. Vielleicht kannst du mir nochmal auf die richtige Spur helfen

{% set ignore_entities = [] %}
{{ states.sensor
 | selectattr('attributes.device_class', 'eq', 'battery')
 | rejectattr('entity_id', 'in', ignore_entities)
 | map(attribute='state')
 | reject('in', ['unknown', 'unavailable'])
 | map('int', -1) | select('le', 15)
 | select('ge', 0)
 | list | count
}}

@Osorkon, ich würde nun gerne noch einzelne Entitäten bzw. auch Entitäten die ich doppelt habe (Batteriestand der Mobilgeräte über App und über iCloud 3) exkludieren.
Habe es mir dem Code in Zeile 6 und 16 versucht aber das klappt nicht. Hast du mir da einen Ansatz?

{% set schwellenwert = 20%}
{% set result = namespace(sensors=[]) %}
{% for state in states.sensor | selectattr('attributes.device_class', '==', 'battery') | sort(attribute='state')  %}
{% if 0 <= state.state | int(-1) < schwellenwert | int  %}
{% set result.sensors = result.sensors + [state.name ~' (' ~ state.state ~ '%)'] %}
{% set ignore_entities = ['sensor.byd_battery_box_premium_hv_ladezustand'] %}
{% endif %}
{% endfor %}
{{result.sensors|join('\n')}}
{{ states
| selectattr('attributes.device_class', '==', 'battery')
| selectattr('state', 'in', ['on'])
| map(attribute='entity_id')
| map('device_attr', 'name_by_user') 
| reject('match', 'None')
| rejectattr('entity_id', 'in', ignore_entities)
| unique
| list 
| sort 
| join('\n')
}}