Template Entity Checker – fehlende Entities in UI-Template-Helfern finden

Hallo zusammen,

ich möchte euch heute den Template Entity Checker vorstellen – eine kleine Custom Integration für Home Assistant, die mir beim Aufräumen meiner eigenen Installation bereits einiges an Arbeit abgenommen hat.

Offenlegung: Diese Integration wurde mit erheblicher Unterstützung durch KI-Programmierwerkzeuge entwickelt. Ich habe die Idee, die Anforderungen, das Verhalten und die Tests definiert, während die KI dazu diente, Teile des Codes und der Dokumentation zu generieren und zu überprüfen. Ich habe die Integration vor der Veröffentlichung auf meiner eigenen Home Assistant-Installation getestet.

Die Integration prüft Template-Helfer, die über die Home-Assistant-Oberfläche angelegt wurden, auf statische Entity-Referenzen, die nicht mehr existieren. Sie arbeitet dabei ausschließlich lesend.

Es werden keine Templates verändert, keine Reparaturen vorgenommen und keine Daten direkt in Home Assistants .storage geschrieben.*

Entstanden ist das Projekt, nachdem ich meine eigene Home-Assistant-Installation aufräumen wollte. Beim ersten Scan meines Produktivsystems wurden direkt 19 veraltete Entity-Referenzen in verschiedenen Template-Helfern gefunden.

Einige davon wären mir bei einer manuellen Kontrolle vermutlich noch lange nicht aufgefallen. Nachdem ich die betroffenen Helfer korrigiert hatte, lief der nächste Scan ohne Funde durch.

Da dies eines meiner ersten beiden eigenen Home-Assistant-Integrationsprojekte ist, befindet sich die Integration aktuell noch in der Testphase. Ich würde mich daher sehr über Rückmeldungen zur Installation, Kompatibilität und natürlich zu Fehlern oder Sonderfällen freuen, die ich mit meiner eigenen Installation nicht abdecken kann.

Was macht der Template Entity Checker?

Die Integration:

  • prüft automatisch die über die Benutzeroberfläche angelegten Template-Helfer
  • sucht nach statische Verweise auf Entities, die nicht mehr existieren, die weder in der State Machine noch im Entity Registry vorhanden sind
  • gruppiert die gefundenen Referenzen nach dem jeweiligen Template-Helfer
  • stellt die vollständigen Ergebnisse über sensor.template_entity_checker bereit
  • kann zusätzlich eine persistente Home-Assistant-Benachrichtigung anzeigen
  • führt nach dem Start automatisch einen Scan aus
  • wiederholt den Scan anschließend in einem einstellbaren Intervall
  • bietet mit template_entity_checker.scan_now eine Aktion für manuelle Scans
  • fasst mehrfach vorkommende Referenzen zusammen, behält aber Anzahl und Fundpositionen bei
  • besitzt eine exakte Ignore-Liste für einzelne Entity-IDs
  • meldet dynamisch zusammengesetzte Referenzen separat, anstatt mögliche Entity-IDs zu erraten
  • stellt Diagnosedaten bereit
  • enthält deutsche und englische Übersetzungen

Wichtig: Die Integration verändert keine Templates und versucht auch nicht, Fehler automatisch zu reparieren. Sie zeigt lediglich an, wo vermutlich noch alte oder ungültige Entity-Referenzen vorhanden sind.

Wichtige Abgrenzung: nur Template-Helfer aus der UI

Der Template Entity Checker prüft ausschließlich Template-Helfer, die über folgenden Bereich angelegt wurden:

Einstellungen → Geräte & Dienste → Helfer

Nicht geprüft werden Templates aus:

  • configuration.yaml
  • templates.yaml
  • Packages oder anderen YAML-Includes
  • Automationen
  • Skripten
  • Szenen
  • Dashboards
  • Blueprints

Der Template Entity Checker soll Projekte wie Spook oder Watchman nicht ersetzen, sondern gezielt ergänzen.

Der Schwerpunkt liegt bewusst auf den über die UI angelegten Template-Helfern. Die gefundenen Referenzen werden direkt innerhalb von Home Assistant im Ergebnissensor und optional in einer persistenten Benachrichtigung dargestellt. Dadurch muss kein zusätzlicher Textbericht geöffnet und anschließend manuell durchsucht werden.

Installation

Aktuelle Version: v0.1.0

  1. HACS öffnen.
  2. Oben rechts auf das Drei-Punkte-Menü klicken.
  3. Benutzerdefinierte Repositories auswählen.
  4. Folgende Repository-Adresse eintragen:
https://github.com/Dajwitt/template-entity-checker
  1. Als Kategorie Integration auswählen.
  2. Auf Hinzufügen klicken.
  3. In HACS nach Template Entity Checker suchen und die Integration herunterladen.
  4. Home Assistant neu starten.
  5. Einstellungen → Geräte & Dienste → Integration hinzufügen öffnen.
  6. Nach Template Entity Checker suchen und die Integration hinzufügen.

GitHub-Repository:

Wer Lust hat, das kleine Tool zu testen

Da sich die Integration noch in der Testphase befindet, freue ich mich über Rückmeldungen aus anderen Home-Assistant-Installationen.

Besonders interessant sind Tests mit:

  • andere Home Assistant Core-Version als 2026.7.3
  • selten verwendeten Template-Helfertypen
  • vielen über die UI angelegten Template-Helfern
  • umbenannten, gelöschten oder deaktivierten Entities
  • dynamisch zusammengesetzten Entity-Referenzen

Zum Testen reicht es aus, die Integration zu installieren, einen Scan mit template_entity_checker.scan_now auszuführen und zu prüfen, ob die gemeldeten Funde mit den tatsächlichen Template-Helfern übereinstimmen.

Auch eine kurze Rückmeldung wie diese hilft bereits:

Home-Assistant-Version:
Installation erfolgreich: ja / nein
Gemeldete Funde korrekt: ja / nein

Falls etwas nicht stimmt, wären ein anonymisiertes Beispiel und eine kurze Beschreibung hilfreich. Diagnosedaten sind nur nötig, wenn sich ein Problem anders nicht nachvollziehen lässt.

Bitte prüft vor dem Veröffentlichen von Beispielen oder Diagnosedaten, ob darin private Entity-IDs, Namen, Orte oder andere persönliche Angaben enthalten sind.

Vielen Dank fürs Ausprobieren. Ich freue mich über jede Rückmeldung – egal ob alles funktioniert hat oder irgendwo noch ein Fehler steckt.

3 „Gefällt mir“
Home-Assistant-Version: 2026.7.3
Installation erfolgreich: ja 
Gemeldete Funde korrekt: ja 
Anzahl der Funde: 2

Ganke für die Integration funktioniert bei mir Perfekt

1 „Gefällt mir“

HA 2026.7.3
Installation erfolgreich: Ja
Gemeldete Funde korrekt: Idk
Anzahl der Funde: 0

1 „Gefällt mir“

waren Deine Funde sofort da, oder hat das gedauert? Nach meiner Installation waren 0 Funde da. Ich kann aber nicht sagen, ob das wirklich stimmt?

Bei mir waren die Funde direkt nach dem ersten abgeschlossenen Scan da. Normalerweise muss man also nicht bis zum eingestellten Prüfintervall warten.

0 Funde können natürlich korrekt sein. Zur Kontrolle bitte bei sensor.template_entity_checker auf folgende Attribute schauen:

  • complete: true
  • sources_scanned größer als 0, sofern UI-Template-Helfer vorhanden sind
  • references_checked größer als 0
  • load_errors: []
  • last_scan mit einem aktuellen Zeitstempel

Ein eindeutiger Funktionstest geht so:

  1. Vorübergehend einen UI-Template-Helfer anlegen, beispielsweise einen Template-Sensor.
  2. Als Zustand dieses Template verwenden:
{{ states('sensor.tec_absichtlich_nicht_vorhanden') }}
  1. Danach die Aktion template_entity_checker.scan_now ausführen.
  2. Erwartetes Ergebnis:
  • Sensorzustand steigt von 0 auf 1.
  • Unter missing_entities erscheint sensor.tec_absichtlich_nicht_vorhanden.
  • Als betroffener Helfer wird der gerade angelegte Testhelfer genannt.
  1. Testhelfer anschließend wieder löschen und template_entity_checker.scan_now erneut ausführen. Der Zustand sollte wieder auf 0 fallen.
1 „Gefällt mir“

Funde waren sofort da!

Home-Assistant-Version: 2026.7.3
Installation erfolgreich: ja
Gemeldete Funde korrekt: nein -> Fehler nicht gefunden

Template → Geräte Tracker:

Sensor: binary_sensor.esphome_web_46962c_bx_blue_button_shelly

Zonen-Template:

{% if is_state('binary_sensor.esphome_web_46962c_bx_blue_button_shelly','on') %}
    ['zone.home']
  {% else %}
    []
  {% endif %}

Verfügbarkeits-Template:

{{ has_value('binary_sensor.esphome_web_46962c_bx_blue_button_shellyy') }}

Der Sensor im Verfügbarkeits-Template hat für den Test ein “y” zuviel am Ende, wird aber nicht gefunden.

ich habe anscheinend bisher sauber gearbeitet. Dein Test förderte genau diesen einen Helfer hervor, nach dem Löschen wieder auf 0.
Somit scheint es so, als wenn sonst alles clean wäre.
Danke für dein Tool… Super hilfreich, wenn man auf ein sauberes System steht…

1 „Gefällt mir“

Danke, sehr guter Fund. Der Test ist korrekt und zeigt eine Lücke im Parser von v0.1.0.

has_value('entity_id') wird aktuell noch nicht als statische Entity-Referenz ausgewertet. Deshalb erkennt der Checker den absichtlichen Tippfehler im Verfügbarkeits-Template nicht. Das Ergebnis 0 ist in diesem Fall also ein False Negative.

Ich habe den Fall für das nächste Update aufgenommen. Geplant ist:

  • statische Entity-IDs in has_value(...) erkennen,
  • fehlende Entities daraus normal unter missing_entities melden,
  • dynamische Argumente weiterhin nur als Parserdiagnose behandeln,
  • Zustands- und Verfügbarkeits-Templates damit abdecken.

Vielen Dank fürs genaue Prüfen :hugs:

Update: v0.1.1 ist verfügbar

Version 0.1.1 wurde veröffentlicht. Das Update verbessert die Erkennung und erweitert die Abdeckung der über die Home-Assistant-Oberfläche erstellten Template-Helfer.

Highlights:

  • Erkennt jetzt auch fest eingetragene Entity-IDs in has_value().
  • expand() wird zuverlässiger geprüft – egal ob einzelne Entities, mehrere Einträge, Listen oder gemischte Inhalte verwendet werden.
  • Unterstützt alle 17 UI-Template-Helfertypen aus Home Assistant 2026.7.3.
  • Weniger falsche Meldungen bei Kommentaren, normalem Text, Filtern, Makros und anderen Jinja-Ausdrücken.
  • Fehlerstellen werden genauer mit der richtigen Zeile und Position angezeigt.
  • Dynamisch erzeugte Entity-IDs werden weiterhin nicht geraten, da sie sich nicht sicher prüfen lassen.

Das Update hat auf einer meiner Installationen direkt drei veraltete Media-Player-Referenzen gefunden. Nach der Korrektur ist die Instanz vollständig sauber: 108 Template-Quellen und 301 Referenzen geprüft, 0 fehlende Entities.

Es ist keine Änderung der Konfiguration erforderlich. Einfach über HACS aktualisieren und Home Assistant anschließend neu starten.

Release: Release v0.1.1 · Dajwitt/template-entity-checker · GitHub

Coole Integration, darf ich fragen warum sie nicht auch in YAML konfigurierte Sachen prüft? Also configuration.yaml oder auch yaml im Ordner packages? Das wäre doch auch super.

Home-Assistant-Version: 2026.7.4
Installation erfolgreich: ja
Gemeldete Funde korrekt: ja
Anzahl der Funde: 2

Und was mir noch aufgefallen ist, bei dieser Schreibweise im Verfügbarkeits Template findet er keinen Fehler:

{{ ‘sensor.test1 | has_value
and ‘sensor.test2’ | has_value }}

Nur wenn es so geschrieben ist:

{{ has_value(‘sensor.test1’) }}

Also spricht erst has_value

Danke für die Nachfrage!

Der Fokus auf UI-erstellte Template-Helfer ist bewusst gewählt, weil Home Assistant diese strukturiert bereitstellt und der Checker sie dadurch zuverlässig prüfen kann.

Bei YAML müsste die Integration dagegen verschiedene Dateien, Packages und !include -Strukturen einlesen.

Der wichtigste Grund dagegen ist für mich aber die Sicherheit: In diesen Dateien können auch Passwörter, API-Schlüssel oder Verweise auf secrets.yaml enthalten sein.

Der Checker öffnet deshalb aktuell bewusst keine YAML-Konfigurationsdateien und kommt so gar nicht erst mit möglichen Zugangsdaten in Kontakt.

Für den Moment bleibe ich deshalb bewusst bei den über die Benutzeroberfläche erstellten Template-Helfern. So bleibt die Prüfung für mich überschaubar und für die Nutzer zuverlässig, nachvollziehbar und möglichst sicher.

2 „Gefällt mir“

Danke für den Hinweis. Du hast recht – ich konnte das Verhalten reproduzieren.

Home Assistant unterstützt has_value in drei gültigen Schreibweisen: als Funktion, Filter und Jinja-Test. Der Template Entity Checker erkennt in Version 0.1.1 derzeit allerdings nur die Funktionsform:

jinja2 {{ has_value(‘sensor.test1’) }}

Die Filterform wird aktuell übersehen:

jinja2 {{ ‘sensor.test1’ | has_value and ‘sensor.test2’ | has_value }}

Gleiches gilt für die ebenfalls gültige Testform:

jinja2 {{ ‘sensor.test1’ is has_value }}

Das ist keine beabsichtigte Einschränkung, sondern ein Fehler im Parser. Danke fürs Melden. Ich nehme die beiden Schreibweisen in ein Patch-Update auf. Bis dahin funktioniert die direkte Funktionsform als Workaround.

1 „Gefällt mir“

Danke für Deine Idee / Umsetzung von etwas Neuem!

Home-Assistant-Version: 2026.7.3
Checker Version: 0.1.1
Installation erfolgreich: ja
Gemeldete Funde korrekt: nein

Nach Umbenennen eines Entitynamen im Template Sensor wurde nach erneutem Scan 1 angezeigt.

Was mir auffiel:

  • Ich hätte erwartet, daß mir irgendwo angezeigt wird zu mindestens der betroffene Name des Template Sensors wenn nicht sogar der faulen Entity. So weiß ich nur, es gibt irgendwo etwas aber müßte manuell alle durchsuchen.
  • Bei Tools wie Watchman oder auch neuerem Performance-Indikator für Dein HomeAssistant: HAGHS kann man ein Label zum Ausschluß nehmen. Praktisch wäre es hier, wenn das auch ginge, weil so kann der Anwender es mehrfach verwenden.

Sehr gut. :smiley:

1 „Gefällt mir“

Wer lesen kann, ist klar im Vorteil. Danke Baxxy für den Screenshot.

1 „Gefällt mir“

Danke für den Hinweis, die Idee gefällt mir. Künftig soll man Template-Helfer einfach über ein Label von der Prüfung ausschließen können.

Die Treffer bleiben trotzdem sichtbar, werden aber als ignoriert markiert. Die bisherige Ausschlussliste für einzelne Entity-IDs bleibt ebenfalls erhalten.

Ich habe die Erweiterung für ein kommendes Update vorgemerkt.

Eure Meinung ist gefragt: festes oder frei wählbares Ignore-Label?

Für ein kommendes Update des Template Entity Checkers möchte ich ermöglichen, komplette Template-Helfer über ein Home-Assistant-Label von der Prüfung auszuschließen.

Das Label wird direkt dem jeweiligen Template-Helfer zugewiesen. Gefundene Einträge daraus werden dann nicht mehr als aktive Fehler angezeigt, bleiben aber weiterhin transparent als ignorierte Treffer sichtbar. Der bisherige Ausschluss einzelner Entity-IDs bleibt zusätzlich bestehen.

Bei der Umsetzung bin ich mir noch nicht sicher, welcher Weg für die meisten Nutzer sinnvoller ist:

Variante 1: Festes Label

Die Integration verwendet einen festen, möglichst kurzen Labelnamen. Dieses Label müsste nur einmal in Home Assistant angelegt werden und könnte anschließend auch von anderen Integrationen genutzt werden.

Vorteile:

  • keine zusätzliche Einstellung
  • einheitliche Bezeichnung
  • schnell und einfach zu verwenden

Nachteil:

  • der Name muss für möglichst viele Nutzer passen

Variante 2: Frei wählbares Label

In den Optionen kann ein bereits vorhandenes Home-Assistant-Label ausgewählt werden.

Vorteile:

  • vorhandene Labels können weiterverwendet werden
  • jeder kann den Namen selbst bestimmen
  • bessere Anpassung an die eigene Organisation

Nachteil:

  • ein passendes Label muss zuerst in Home Assistant angelegt und anschließend ausgewählt werden

Mich interessiert wirklich, welche Lösung ihr im Alltag bevorzugen würdet. Die Rückmeldungen sollen direkt in die Entscheidung einfließen und nicht nur eine allgemeine Umfrage sein.

Würdet ihr lieber ein festes, kurzes Label verwenden oder selbst ein vorhandenes Label auswählen?

Falls ihr ein festes Label bevorzugt: Welcher kurze und verständliche Name würde für euch gut passen?

  • Festes Label
  • Frei wählbares Label
0 Teilnehmer

Update: Template Entity Checker v0.1.2 und Dashboard Entity Checker v0.3.6 sind verfügbar

Für meine beiden Home-Assistant-Integrationen wurden neue Versionen veröffentlicht. Die Updates verbessern die Auswahl von Ausschlüssen, erweitern die Erkennung und bringen eine vollständige deutsche und englische Dokumentation mit.

Template Entity Checker v0.1.3

Der Template Entity Checker prüft die über die Home-Assistant-Oberfläche erstellten Template-Helfer auf fehlende Entity-Referenzen.

Highlights:

  • Durchsuchbare Liste für exakte Entity-Ausschlüsse.
  • Optional können vollständige Template-Helfer über ein vorhandenes Home-Assistant-Label ausgeschlossen werden.
  • Ignorierte Funde bleiben im Sensor und in den Diagnosen nachvollziehbar.
  • Erkennt statische Entity-IDs jetzt auch in allen unterstützten has_value-Varianten: als Funktion, Filter und Test.
  • Nativer Home-Assistant-Schalter für Benachrichtigungen.
  • Bestehende Ausschlüsse bleiben erhalten.

Die Integration prüft weiterhin ausschließlich über die Oberfläche angelegte Template-Helfer. YAML-Templates, Automationen, Skripte, Dashboards und Blueprints gehören nicht zu ihrem Bereich.

Release: Release v0.1.2 · Dajwitt/template-entity-checker · GitHub Dokumentation: Template Entity Checker – Dokumentation

Dashboard Entity Checker v0.3.6

Der Dashboard Entity Checker durchsucht ausgewählte Lovelace-Dashboards nach fehlenden Entity-Referenzen – auch in unterstützten verschachtelten Decluttering-Templates und Button-Card-JavaScript.

Highlights:

  • Neue durchsuchbare Mehrfachauswahl für auszuschließende Entity-IDs.
  • Enthält alle Entities aus der State Machine und der Entity Registry.
  • Auch registrierte oder deaktivierte Entities ohne aktuellen State stehen zur Auswahl.
  • Nativer Home-Assistant-Schalter für Benachrichtigungen.
  • Bestehende textbasierte Ignore-Werte werden automatisch übernommen.

Es ist bei beiden Integrationen keine manuelle Änderung der Konfiguration erforderlich. Einfach über HACS aktualisieren und Home Assistant anschließend neu starten.

Release: Release v0.3.6 · Dajwitt/dashboard-entity-checker · GitHub Dokumentation: Dashboard Entity Checker – Dokumentation

Danke fürs Nennen. Und ich fand tatsächlich einen umbenannten und im Dashboards vergessenen Timer.

1 „Gefällt mir“