In diesem Beitrag beschreibe ich ausfรผhrlich: Reload Home Assistant Integration – und das auch noch automatisch, so dass „Integration unavailable“ der Vergangenheit angehรถrt! Ziemlich jeder dรผrfte Bedarf an einer Automation zum Neuladen von Home Assistant Integrationen haben!
Aber der Reihe nach: Mein Smarthome mit Home Assistant ist รผber die letzten Jahre ziemlich gewachsen. Ich habe zwar immer wieder auch versucht mich auf das wesentliche zu konzentrieren und unnรถtige Integration (wie zum Beispiel die von Hue) zu entfernen. Aber dennoch nutze ich mittlerweile zahlreiche Integrationen und Funktionen.
Du magst das dir Ganze lieber als Video anschauen? Kein Problem:
Inhaltsverzeichnis
Und je mehr Integrationen man in Home Assistant nutzt, desto grรถรer wird die Wahrscheinlichkeit, dass von Zeit zu Zeit bei einer Integration „unavailable“ angezeigt wird. Dies bedeutet, dass Home Assistant keine Verbindung mehr zu dem Dienst der externen Integration hat und du somit diese Integration รผber Home Assistant nicht nutzen kannst.
Du magst Home Assistant? Dann abonniere kostenlos meine Beitrรคge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders รผberlegen!
Ich selbst habe das Problem immer wieder mit dem Meross Garagentorschalter gehabt. Ich sage jedoch nicht, dass dies zwangslรคufig an dem Garagentorschalter oder der Integration (Github: Meross Integration) liegt. Vielmehr scheint es bei mir eine Frage des WLAN-Signals zu sein. Wer hat in der Garage schon ein ausgezeichnetes WLAN? ๐
Wenn immer mir also die Integration als „unavailabe“ angezeigt wurde, habe ich รผber Einstellungen -> Integrationen -> Mausklick auf die 3 Punkte bei der jeweiligen Integration -> „Neu laden“ einen Reload Home Assistant Integration manuell angestoรen. Tatsรคchlich habe ich das solange gemacht, bis ein anderer Home Assistant Nutzer mich in einem Kommentar hier auf meinem Blog auf das gleiche Problem bei ihm aufmerksam machte und nach einer Lรถsung fragte.
Automatischer Reload Home Assistant Integration
Um nun hierfรผr eine Automation zu erstellen, welche automatisch die Integration neu lรคdt (also ein „Reload Home Assistant Integration“ ausfรผhrt), benรถtigen wir zuerst die „URL“, welche beim zuvor beschrieben Klick auf „Neu laden“ aufgerufen wird.
Reload Home Assistant Integration API-Call
Hierfรผr รถffnen wir in Chrome die Entwicklertools und beobachten den Traffic des Browsers wenn du auf „Neu laden“ geklickt hast:
Auf den Aufruf mit dem Namen „Reload“ machst du nun einen Rechtsklick und wรคhlst Copy -> Copy link address. In deiner Zwischenablage befindet sich nun der manuell von die ausgefรผhrte API-Call รผber welchen der Reload der Home Assistant Integration erfolgt ist.
Dies sollte in etwa wie folgt aussehen (nein die IP von meinem Home Assistant ist nicht wirklich 08 15 47 11 1 und nein die hier gezeigte ID der Integration stimmt auch nicht ;)):
http://08.15.47.11.1:8123/api/config/config_entries/entry/09asgse69e86948a281bea7f693b4sdfsdf5/reload
Als nรคchstes benรถtigen wir einen „langlebigen Zugangs Token“, damit wir den soeben kopierten API-Call ausfรผhren kรถnnen. Hierfรผr klickst du in Home Assistant unten links auf ein Profil und scrollst auf der sich รถffnenden Seite ganz nach unten, bis du zum Bereich „Langlebige Zugangs-Token“ kommst:
Hier folgst du den Anweisungen und erstellt einen solche Token!
Shell-Command fรผr Reload Home Assistant Integration erstellen
Mit dem API-Call und dem langlebigen Zugangs-Token erstellen wir nun einen Shell-Command. Diesen werden wir dann von einer Automation bei Bedarf abfeuern. Aber zu der Automation spรคte mehr!
shell_command:
meross_restart: "/usr/bin/curl -X 'POST' -H 'authorization: Bearer DEIN-LANGLEBIGER-ZUGANGS-TOKEN' http://47.11.08.15.1:8123/api/config/config_entries/entry/09asgse69e86948a281bea7f693b4sdfsdf5/reload"
Da ich hier das automatische Neuladen einer Home Assistant Integration am Beispiel meiner Meross-Integration beschreibe, heiรt mein Shell-Command „meross_restart“. Dies kannst du natรผrlich beliebig anpassen/รคndern!
Nun haben wir alle Vorbereitungen getroffen, um eine Automation zu erstellen, welche die Integration neu lรคdt, sobald diese den Zustand „unavailable“ hat:
Automation zum automatischen Reload Home Assistant Integration erstellen
Die Integration kannst du eigentlich 1:1 รผbernehmen und musst lediglich die Bezeichnung anpassen, sofern deine Automation nicht fรผr eine Meross-Integration ist:
- alias: Meross-Restart
trigger:
- platform: state
entity_id: cover.smart_garage_door_opener_msg100_main_channel
to: unavailable
for: '00:05:00'
condition: []
action:
- service: shell_command.meross_restart
data: {}
Auch hier passiert wieder keine wirkliche Raketenwissenschaft (aber dennoch ein klein wenig Magie ;)):
Als Trigger nehmen wir die Plattform „state“ der Entity des Garagentores („cover.smart…“) und zwar genau dann, wenn der Zustand auf „unavailable“ wechselt und diesen fรผr 5 Minuten hatte. Ist dies der Fall, feuern wir unseren Shell-Command und fertig!
Die 5 Minuten Wartezeit sind nicht zwingend notwendig. Ich mรถchte aber auch nicht, dass der Shell-Command unnรถtig oft gefeuert wird. Starte ich zum Beispiel den Router neu und deswegen ist die Intgeration unavailable, wird nicht sofort ein Reload der Integation ausgelรถst. Und nach 5 Minuten dรผrfte das WLAN auch wieder voll funktional laufen und somit die Integration wieder verfรผgbar sein.
Update 01.07.2024:
Das liebe ich so an Home Assistant und der Community drum herum: Marco hat in seinem Kommentar auf eine deutlich einfachere Mรถglichkeit hingewiesen, wie man eine Integration neuladen kann! Es existiert ein Service homeassistant.reload_config_entry (HA-Doku hierzu) speziell hierfรผr.
Der Code kann dann wie folgt aussehen:
- service: homeassistant.reload_config_entry data: entry_id: "{{ config_entry_id('sensor.whatever') }}"
Bzw. wenn du den Umweg รผber die Ermittlung der entry_id nicht gehen mรถchtest, einfach direkt eine betroffene Entitรคt (also beispielsweise jene, die unavailable wird) ansprechen:
- service: homeassistant.reload_config_entry data: entity_id: sensor.whatever
Danke Marco, fรผr den super Hinweis – man lernt halt nie aus! ๐
Produktempfehlungen
Hallo Olli
Bin beim Thema HomeAssistant ein relativer Neuling.
Bei mir ist immer wieder von Zeit zu Zeit das Addon โSamba BackUpโ nicht erreichbar und ich muss es manuell โneu Startenโ
Da es sich aber um keine Entitรคt handelt sondern um ein AddOn wie lรถst man dieses Problem.
Wรคre รผber einen Rat/Hinweis dankbar.
LG M
Hallo Olli
Problem gelรถst. In der Doku zum AddOn Samba Backup habe ich die Lรถsung gefunden.
IMPORT BLUE PRINT TO MyHomeAssistant
Or use this automation directly:
automation:
– alias: Restore Samba Backup sensor on startup
trigger:
– event: start
platform: homeassistant
action:
– service: hassio.addon_stdin
data:
addon: 15d21743_samba_backup
input: restore-sensor
mode: single
LG Manfred
Hi Manfred,
Danke fรผrs Teilen deiner Lรถsung und super, dass es nun funktioniert!
VG
Olli
Hallo Olli,
ich habe mich als neuling mit dem Shell Command versucht mit deinem Beispiel.
Leider sagt mir Home Assistant beim prรผfen der Config:
Konfigurationswarnungen
Invalid config for ’shell_command‘ at shell_command.yaml, line 1: value should be a string for dictionary value ’shell_command->shell_command‘, got {‚tapo controller_restart‘: „/usr/bin/curl -X ‚POST‘ -H ‚authorization: Bearer Mein Token‘ http://meine-homeassistant/api/config/config_entries/entry/aec0d2723510f18213f0c51ffac6418e/reload“}
Nach einem Neustart habe ich auch 2 Fehlermeldungen im Log die sagen invalid config
Wie bekomme ich das hin?
Habs hinbekommen, lag am shell_command: !include shell_command.yaml in der config
Hi Ronny!
Top, dass du es hinbekommen hast, und sorry, dass ich nicht rechtzeitig reagieren konnte!
Hi,
auch ich hab eine Dumme Frage (auch wenn es keine gibt, wie bereits gelesen :D). Ich bin ganz neu in HASS und ich weiร ehrlich gesagt nicht wo ich die Automation genau anlege? Habe es bereits รผber Einstellungen und Automatisierungen probiert und dann in yaml Ansicht geswitched aber dort bekomme ich unterschiedlichste Fehler. Daher gehe ich davon aus, dass ich dort komplett falsch bin?!
Danke schonmal und Grรผรe
Malte
Korrekt, es gibt keine dummen Fragen hier 😉
Ich habe den Beispielcode gerade im aktuellen Editor fรผr Automatisierungen nachgebaut und somit folgenden YAML-Code fรผr dich generiert:
description: "Meross-Restart"
mode: single
trigger:
- platform: state
entity_id:
- cover.smart_garage_door_opener_msg100_main_channel
to: "unavailable "
for:
hours: 0
minutes: 5
seconds: 0
condition: []
action:
- service: shell_command.meross_restart
Wenn du auf Automatisierung erstellen -> Neue Automatisierung erstellen klickst und dann oben rechts bei den 3 Punkten Als YAML bearbeiten auswรคhlst, solltest du eine leere, neue Automatisierung haben, in der du den zuvor angegebenen YAML-Code reinkopieren kannst. Dann noch Speichern, die Automatisierungs-YAML neu laden und schon sollte es klappen!
Viel Erfolg und
VG
Olli
🙁 scheinbar keiner mehr da 🙁
Sorry die Seite hat nicht neugeladen. Bitte alles lรถschen 🙂 Ich melde mich sofern ich Probleme bekommen sollte. Danke fรผr deine Hilfe soweit!
Neu laden von Integrationen funktioniert auch ohne HTTP call via homeassistant.reload_config_entry service call:
Beispiel:
service: homeassistant.reload_config_entry
target:
entity_id: sensor.zoe_batteriestand
alias: Reload Renault Integration
data: {}
Als entity_id ein entity aus der Integration wรคhlen, die neu gestartet werden soll.
Danke fรผr den Hinweis! Wobei ich es dann wohl eher wie folgt umsetzen wรผrde:
Nochmals danke fรผr den Hinweis, das kannte ich noch nicht!
Hallo,
ich brauche bitte mal Hilfe. Ich bekomme das shell_Command nicht fehlerfrei in meine yaml.
Folgendes wird angezeigt:
unexpected end of the stream within a double quoted scalar (114:1)
111 | shell_command:
112 | fritz_smart_restart: „/usr/ …
113 | http://192.168.178.50:8123/ …
Ich verstehe es nicht. Und das Wort Bearer, bleibt das so oder muss das noch ersetzt werden?
Lieben Dank
Hallo Stefan,
hast du alle ‚ bzw. “ wie in dem Beispiel angegeben in deinem Code? Die Fehlermeldung „riecht danach“, das hier etwas fehlt.
Das Wort Bearer bleibt erhalten!
VG
Olli
Hallo Olli
Super! Genau danach habe ich lange gesucht 🙂 Funzt super. Danke
Hallo Olli,
ich kenn mich da nicht gut aus, deswegen eine vielleicht doofe Frage:dieses Shell Command kommt in die Config Yaml von Home Assistant und die andere Datei in die automations Yaml oder?
Gruร Alex
Hi Alex,
hier gibt es keine doofen Fragen! Zum einen wรคchst Home Assistant tรคglich und kleinere Dinge รคndern sich รผber die Zeit und zum anderen bin ich jetzt beim Schreiben auch nicht immer die hellste Birne am Tannenbaum… 😉
Aber kommen wir zu deiner eigentlichen Frage: Ja, den shell_command kannst du so in deine configuration.yaml einfรผgen (halt mit deinen angepassten Daten). Und รผber die Automation kannst du diesen Shell-Command dann beliebig feuern.
Es kann sein, dass du einen Neustart von Home Assistant durchfรผhren muss, damit der Shell-Command ausfรผhrbar wird!
Beste Grรผรe
Olli
Danke fรผr diese ausfรผhrliche Anleitung! Ich nehme an das โBearerโ in deinem Shell Command ist der Name deines Tokens?
Ach ja, es liegt an Meross. Mein WLAN ist in der Garage voll da (per Unifi AP) und ich habe exakt dieselben Probleme โฆ
Sehr gerne dafรผr! 🙂
Ja, hier ist die Darstellung des Codes vermutlich etwas verwirrend. Im Original ist alles in einer Zeile, also „Bearer DEIN-LANGLEBIGER-ZUGANGS-TOKEN“ 😉
Und danke fรผr den Hinweis mit der Ursache. Ich habe zwischenzeitlich auch auf Unifi umgestellt mit mehreren APs im Haus, aber konnte das Problem der „verschwundenen“ Garage natรผrlich nicht mehr feststellen, da ich diese Automation hier aktiv habe 😉
Danke erst mal fรผr die Antwort. Leider kriege ich das nicht zum laufen 🙁
Immer wenn der Dienst ausgefรผhrt wird, erhalte ich folgende Nachricht:
Login attempt or request with invalid authentication from homeassistant.david (192.168.1.164). See the log for details.
Egal was ich mache, es funzt einfach nicht. Derzeit sieht mein shell command so aus:
shell_command:
meross_restart: „/usr/bin/curl -X ‚POST‘ -H ‚authorization: Bearer reload_meross‘ http://192.168.1.999:8123/api/config/config_entries/entry/e8dbf56ec7d41310979901f123456789/reload“
Hast du einen Tipp, was das Problem sein kรถnnte?
Mich irritiert dein Shell-Command und hier der Token. Hast du hier nur fรผr den Kommentar dort „reload_meross“ eingefรผgt und eigentlich ist dort der Token?
Es sollte in etwa wie folgt aussehen bei dir:
'authorization: Bearer eyJ0eXAiOiJKV1QiL...
(nur halt natรผrlich mit DEINEM Token).„Login attempt…“ deutet ja bereits an, dass es ein Authentifizierungs-Problem zu geben scheint.
Danke fรผr die Antwort. Mittlerweile habe ich den Fehler gefunden. Mir ging im Token wohl ein Zeichen verloren.
Ist aber auch kleinlich diese IT 😉
Du willst gar nicht wissen wie viel Zeit ich schon „verloren“ habe, nur weil ein Semikolon fehlte oder eine Variable falsch geschrieben war… 🙂
Vielen Dank fรผr den interessanten Beitrag. Ich bin darauf gestoรen weil ich eine Mรถglichkeit suche Integrationen zu „pausieren“. Bin aber noch nicht fรผndig geworden. Der Hintergrund ist das ich einige wlan Gerรคte an einer schaltbaren Steckdose habe und die Integration nur brauche wenn die Steckdose an ist. Im Moment funktioniert es, aber die ganze Liste an Fehlermeldungen stรถrt mich etwas. Hast du hier vielleicht einen Tipp?
Sehr gerne! 🙂
Eine Mรถglichkeit Integrationen zu pausieren, kenne ich bislang nicht. Sollte mir was dazu einfallen bzw. รผber den Weg laufen, lasse ich es dich wissen!
Eine Mรถglichkeit รผber Umwege kรถnnte es aber sein, mit Sensor-Template zu arbeiten, welche nur „befรผllt“ werden, wenn eben die genannte Steckdose Strom saugt bzw. an ist. Hast du in solche eine Richtung bereits รผberlegt?