Einleitung
In einem Smart Home ist Zuverlässigkeit entscheidend – doch was passiert, wenn wichtige Geräte plötzlich offline sind? Lampen reagieren nicht, Automationen schlagen fehl, und am Ende bemerkst du den Ausfall erst Tage später. Das Problem ist nicht neu, aber mit einem pfiffigen Template Sensor und der richtigen Automation kannst du dies ganz einfach lösen.
In diesem Artikel zeige ich dir, wie du nicht verfügbare Entitäten überwachen, Benachrichtigungen in Echtzeit erhalten und unnötige Ausfälle frühzeitig verhindern kannst.
Link zum Video: https://youtu.be/1jjeN6e3C7E
Das Problem: Nicht verfügbare Entitäten erkennen und darauf reagieren
Als Smart Home-Enthusiasten kennen wir es alle: Automationen, die plötzlich nicht funktionieren, Geräte, die offline gehen – und das, ohne uns zu informieren. Doch die manuelle Überwachung jeder einzelnen Entität in Home Assistant ist schlichtweg ineffizient.
Was wir brauchen, ist eine intelligente, zentrale Lösung.
Die Lösung: Template Sensor und Automation
Glücklicherweise gibt es in Home Assistant die Möglichkeit, über benutzerdefinierte Template Sensors zu arbeiten. Diese analysieren regelmäßig den Zustand sämtlicher Entitäten und Geräte. Sobald eine Entität als „unavailable“ erkannt wird, wird eine Benachrichtigung ausgelöst.
Datengrundlage: https://github.com/jazzyisj/unavailable-entities-sensor/blob/main/package_unavailable_entities.yaml
So funktioniert es:
- Template Sensor erstellen
Im Bereich deinerConfiguration.yaml
hinterlegst du einen Sensor, der alle „Unavailable“-Entities bündelt. - Gruppe für ignorierte Entitäten
Optional kannst du Domains oder spezifische Geräte aus der Überwachung herausnehmen. - Automationen für Benachrichtigungen
Automatische Updates und Benachrichtigungen halten dich informiert, ohne dass du manuell suchen oder prüfen musst.
Bessere Benachrichtigung:
Update auf Version 1.1 nach einem hilfreichen Hinweis von Wolfgang! Lieben Dank!
alias: Unavailable Entities Notification Device
description: Create persistent notification if unavailable entities, dismiss if none.
triggers:
- trigger: state
entity_id: group.unavailable_entities
attribute: entity_id
to: null
for: 5
conditions:
- condition: template
alias: Sensor state is a valid numerical value
value_template: "{{ is_number(states('sensor.unavailable_entities')) }}"
- condition: template
value_template: "{{ states('sensor.unavailable_entities') | int > 0 }}"
alias: mindestens ein Device verfügbar ist
actions:
- action: persistent_notification.create
data:
notification_id: unavailable_entities
title: "Nicht verfügbare Geräte / Entitäten "
message: >
{% set ns = namespace(result=[]) %} {% for s in
expand(state_attr('group.unavailable_entities', 'entity_id')) %}
{% set ns.result = ns.result + [
device_attr(s.entity_id, "name") ~ "|" ~ device_id(s.entity_id) ~ "|- **" ~ s.name ~ "**\n"
~ " - *entity_id*: " ~ s.entity_id ~ "\n"
]
%}
{% endfor %} {% set ns.result = ns.result | sort %} {% set lastdev =
namespace( id="" ) %} {% set tarr = ns.result %} {% set ns.result = []
%} {% for item in tarr %}
{% set dev = namespace( id="" ) %}
{% set entity = namespace( data="" ) %}
{% set dev.id = item.split("|")[1] %}
{% set entity.data = item.split("|")[2] %}
{% if lastdev.id != dev.id %}
{% if dev.id != 'None' %}
{% set ns.result = ns.result + [ "**<a href=\"/config/devices/device/" ~ dev.id ~ "\">" ~ device_attr(dev.id, "name") ~ "</a>**" ] %}
{% else %}
{% set ns.result = ns.result + [ "**Keine Device-Entitäten**" ] %}
{% endif %}
{% set lastdev.id = dev.id %}
{% endif %}
{% endfor %} {{ ns.result | join('\n') }}
mode: restart
Dashboard-Optimierung für Übersicht
Ein effizientes Dashboard ist essenziell:
- Mit Frontend-Cards wie AutoEntities und Fold Entity Row kannst du nicht verfügbare Entitäten übersichtlich darstellen. Diese Karten machen es einfacher, offline Geräte gezielt zu identifizieren und deren Status zu überprüfen.
Vorher die folgenden beiden Karten über HACS installieren:
https://github.com/thomasloven/lovelace-auto-entities
https://github.com/thomasloven/lovelace-fold-entity-row
Quelle: https://github.com/jazzyisj/unavailable-entities-sensor/blob/main/examples/auto_entities_card.yaml
type: entities
title: "Unavailable Entities Example"
state_color: true
show_header_toggle: false
entities:
- type: custom:auto-entities
show_empty: true
unique: true
filter:
include:
- group: group.unavailable_entities
sort:
method: state
card:
type: custom:fold-entity-row
padding: 0
head:
entity: sensor.unavailable_entities
„Unavailable Devices Plus Entität“ zur Darstellung der nicht verfügbaren/unbekannten Geräte
Quelle: https://github.com/jazzyisj/unavailable-entities-sensor/issues/48#issuecomment-2570410403
template:
- sensor:
- name: "Unavailable Devices Plus"
unique_id: unavailable_devices_plus
icon: "{{ iif(states(this.entity_id)|int(-1) > 0, 'mdi:alert-circle', 'mdi:check-circle') }}"
state: >
{% set devices = state_attr(this.entity_id, 'devices') %}
{{ devices | count if devices != none else -1 }}
attributes:
devices: >
{%- set items = namespace(value=[]) %}
{%- for entity in expand(state_attr('group.unavailable_entities', 'entity_id')) %}
{%- set items.value = items.value + [device_attr(entity.entity_id, "name") ~ '|' ~ device_id(entity.entity_id) ~ '|' ~ entity.entity_id] %}
{%- endfor %}
{%- set items.value = items.value | sort %}
{%- set lastdev = namespace(id='') %}
{%- set lastname = namespace(value='') %}
{%- set devices = namespace(items=[]) %}
{%- set entities = namespace(items=[]) %}
{%- set device_entities = namespace(count=0) %}
{%- for item in items.value %}
{%- set device = item.split("|")[0] %}
{%- set device_id = item.split("|")[1] %}
{%- set entity = item.split("|")[2] %}
{%- if device | lower == 'none' %}
{%- set entities.items = entities.items + [entity] %}
{%- elif lastdev.id != device_id and lastdev.id != "" %}
{%- set devices.items = devices.items + [lastname.value ~ ' [' ~ device_entities.count ~']'] %}
{%- set device_entities.count = 0 %}
{%- endif %}
{%- set lastdev.id = device_id %}
{%- set lastname.value = device %}
{%- set device_entities.count = device_entities.count + 1 %}
{%- endfor %}
{{ devices.items + entities.items }}
Benachrichtigungen aufs Handy: Immer informiert
Neben dem Dashboard können permanente Benachrichtigungen oder Push-Nachrichten aufs Handy eingerichtet werden. Damit bleibst du jederzeit aktuell informiert und kannst bei Bedarf direkt reagieren.
Automation für’s Handy
alias: Nicht verfügbare Geräte mobil melden
description: ""
triggers:
- trigger: time
at: "18:00:00"
conditions:
- condition: template
alias: Sensor state is a valid numerical value
value_template: "{{ is_number(states('sensor.unavailable_entities')) }}"
actions:
- action: notify.mobile_app_tristaniphone16
metadata: {}
data:
title: "Nicht verfügbare Geräte / Entitäten "
message: >
{% set ns = namespace(result=[]) %} {% for s in
expand(state_attr('group.unavailable_entities', 'entity_id')) %}
{% set ns.result = ns.result + [
device_attr(s.entity_id, "name") ~ "|" ~ device_id(s.entity_id) ~ "|- **" ~ s.name ~ "**\n"
]
%}
{% endfor %} {% set ns.result = ns.result | sort %} {% set lastdev =
namespace( id="" ) %} {% set tarr = ns.result %} {% set ns.result = []
%} {% for item in tarr %}
{% set dev = namespace( id="" ) %}
{% set entity = namespace( data="" ) %}
{% set dev.id = item.split("|")[1] %}
{% if lastdev.id != dev.id %}
{% if dev.id != 'None' %}
{% set ns.result = ns.result + [ " " ~ device_attr(dev.id, "name")] %}
{% else %}
{% set ns.result = ns.result + [ "**Entitäten ohne Gerät**" ] %}
{% endif %}
{% set lastdev.id = dev.id %}
{% endif %}
{% endfor %} {{ ns.result | join('\n') }}
alias: Nachricht ans Handy
mode: restart
Entitäten besser organisieren
Was ist mit Geräten, die nur vorübergehend offline sind oder bewusst ignoriert werden sollen? Hier bietet sich die Verwendung von Labels an. Ein Beispiel: Du kannst Entitäten mit „Status ignorieren“ markieren, sodass diese nicht weiter geprüft werden. Das spart Zeit und sorgt für eine strukturierte Übersicht.
Vorteile des Systems
- Sofortige Benachrichtigungen bei kritischen Gerät-Ausfällen.
- Klar strukturierte Übersicht über offline Geräte und Entitäten.
- Möglichkeit zur gezielten Ignorierung irrelevanter Daten.
- Optimierung von Home Assistant Automationen und Stabilisierung des Smart Homes.
Fazit
Die Überwachung nicht verfügbarer Entitäten in Home Assistant muss nicht kompliziert sein. Mit einem Template Sensor, einer klar strukturierten Automation und einem angepassten Dashboard hast du die perfekte Lösung – einfach zu implementieren und maximal effizient.
Hast du eigene Tipps oder Verbesserungsideen für diese Methode? Kommentiere gerne unten oder teile sie in der Community. Denn zusammen machen wir unsere Smart Homes noch smarter!
Schreibe einen Kommentar