Reload Home Assistant Integration in 3 Schritten

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:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltflรคche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

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
( 424 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklรคrung zu!

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? ๐Ÿ˜‰

Reload Home Assistant Integration
Manueller Reload Home Assistant Integration

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:

Reload Home Assistant Integration
Reload Home Assistant Integration API-Call

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:

Langlebigen Zugangs-Token fรผr Home Assistant erstellen

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! ๐Ÿ˜‰

22 Gedanken zu „Reload Home Assistant Integration in 3 Schritten“

  1. 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?

    Antworten
  2. 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

    Antworten
    • 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

      Antworten
        • 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.

          Antworten
          • Danke fรผr den Hinweis! Wobei ich es dann wohl eher wie folgt umsetzen wรผrde:

            
            - service: homeassistant.reload_config_entry
              data: 
                entry_id: "{{ config_entry_id('sensor.whatever') }}"
            

            Nochmals danke fรผr den Hinweis, das kannte ich noch nicht!

  3. 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

    Antworten
    • 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

      Antworten
  4. 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

    Antworten
    • 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

      Antworten
  5. 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 โ€ฆ

    Antworten
    • 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 ๐Ÿ˜‰

      Antworten
      • 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?

        Antworten
        • 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.

          Antworten
          • 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… ๐Ÿ™‚

  6. 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?

    Antworten
    • 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?

      Antworten

Schreibe einen Kommentar