Eine Erweiterung zur automatisierten sauberen Entfernung verwaister Entitäten aus Home Assistant.
Haftungsausschluss:
Dieses Skript führt direkte Eingriffe in die internen Registrierungsdateien und die Datenbank von Home Assistant durch. Es richtet sich ausschließlich an erfahrene Benutzer. Erstelle vor der Nutzung unbedingt ein vollständiges Backup deines Systems!
Wenn Geräte oder Entitäten in Home Assistant über die Benutzeroberfläche (GUI) gelöscht werden, sind sie dort zwar nicht mehr sichtbar, verbleiben jedoch oft weiterhin in der Datenbank sowie in verschiedenen internen Registry-Dateien.
Das bekannte Skript delete_device+entity.sh entfernt Geräte und dazugehörige Entitäten extrem zuverlässig – jedoch nicht, wenn das übergeordnete Gerät in Home Assistant bereits gelöscht wurde. In diesem Fall kann delete_device+entity.sh die Zuordnung nicht mehr herstellen und entfernt nur das Device, die dazugehörige Entitäten bleiben unangetastet.
Hier setzt delete_entity_batch.sh an: Es durchsucht die Datei core.entity_registry gezielt nach bereits gelöschten Entitäten (Abschnitt "deleted_entities") und übergibt diese einzeln an delete_device+entity.sh, um die Bereinigung vollständig zu automatisieren.
- HomeAssistant-DB-Scripts (
delete_device+entity.sh)
Dieses Skript ist zwingende Voraussetzung und muss auf Home Assistant vorhanden sein.
- Lade das Skript
delete_entity_batch.shherunter. - Speichere die Datei in deinem Shell-Skript-Ordner in Home Assistant (z. B.
/homeassistant/shell/). - Mache das Skript ausführbar:
chmod +x /homeassistant/shell/delete_entity_batch.sh
Falls deine Dateipfade vom Standard abweichen, kannst du sie bequem im Home Assistant File Editor am Anfang des Skripts anpassen:
- Pfad zu
delete_device+entity.sh - Pfad zur
core.entity_registry
WICHTIG: Nicht über die GUI ausführen!
Da während des Löschvorgangs Home Assistant Core beendet werden muss, kann und darf das Skript nicht über ein Terminal-Add-on innerhalb der Home Assistant Benutzeroberfläche (GUI) ausgeführt werden.
Das Skript benötigt keine zusätzlichen Argumente oder Parameter. Starte es einfach an der Systemkonsole oder in einer SSH-Sitzung:
./delete_entity_batch.sh- Das Skript liest die
core.entity_registryaus. - Alle in
"deleted_entities"gefundenen Entity-IDs werden extrahiert. - Jede gefundene Entity-ID wird nacheinander an
delete_device+entity.shzur endgültigen Löschung übergeben.
Dieses Projekt steht unter der MIT License – freie Nutzung, Anpassung und Weitergabe für private und kommerzielle Projekte erlaubt.