Home Assistant: Integration neustarten
Im Home Assistant Master Kurs habe ich die Frage bekommen, wie man denn eine einzelne Integration neustarten kann. Immerhin kenne viele meiner Zuschauer den ioBroker und sind es dort gewohnt, dass einzelne Instanzen in einem eigenen Prozess laufen. Diese Prozesse kann man sehr einfach neustarten, da sie eigenständig sind. Das ist in Home Assistant etwas anders. Über die Oberfläche hat man die Möglichkeit, eine Integration neu zu laden. Das führt automatisch zu einem entladen und neu laden - also einem Neustart. In Automationen ist das leider nicht so einfach möglich. Also müssen wir einen kleinen Ausflug in die Tiefen des Systems machen.
Sucht man nach dem Thema, findet man viele ältere Beiträge, welche umständlich über die REST API gehen. Also per HTTP genau die Anfrage stellen, wie das auch per Frontend gemacht wird. Das ist allerdings ziemlich umständlich und erfordert erstmal Zugriffstoken usw. Das geht mittlerweile deutlich einfacher per Aktion: homeassistant.reload_config_entry
ist das Stichwort.
An diese Aktion kann man verschiedene Parameter übergeben. Einer dieser Parameter ist eine entry_id
. Diese Referenz muss man allerdings erstmal verstehen und im System suchen. Dabei handelt es sich um einen sog. Config Entry. Das ist eine Sammlung der Informationen, welche vom Benutzer beim Konfigurieren einer Integration eingegeben werden. Je nach Integrationen kann es auch mehrere davon geben. Jede hat eine eingene (zufällig generierte) ID. Aber wo bekommen wir diese her?
Am einfachsten ist der Zugriff über das Dateisystem. Die Daten liegen alle in der Datei /config/.storage/core.config_entries
. Leider (bzw. zu Deiner Sicherheit) wird das Verzeichnis im Standard ausgeblendet. Über eine kleine Anpassung der Einstellungen des VSCode Server Add-Ons können wir also doch auf diese Daten zugreifen. In dieser JSON-Datei findest Du ein Array mit allen Einträgen. Such also nach der passenden entry_id
der Konfiguration, welche zu der Integration gehört, welche neu gestartet werden soll. Und diese kann dann an die Aktion gegeben werden. Fertig!
action: homeassistant.reload_config_entry
data:
entry_id: 01JJP7JS6N5EHR2RNA1NY06KFC
Video
Templating
Ein paar Funktionen im Templating helfen Dir ebenfalls dabei, diese ID zu bekommen und weitere Informationen zu erhalten.
# Entry ID über eine Entity ID holen
{{ config_entry_id('sensor.sun_next_dusk') }}
# Weitere Attribute lesen
{{ config_entry_attr(config_entry_id('sensor.sun_next_dusk'), 'title') }}
{{ config_entry_attr(config_entry_id('sensor.sun_next_dusk'), 'state') }}
{{ config_entry_attr(config_entry_id('sensor.sun_next_dusk'), 'disabled_by') }}