Neuladen von Integrationen automatisieren

Eine Sammlung von Home Assistant Templates.
Bitte nur fertige Templates posten, ergänzt um eine Beschreibung und ggf. Screenshots.


Antworten
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Neuladen von Integrationen automatisieren

Beitrag von Osorkon »

Manchmal, aber auch nur manchmal 😉, sind Geräte einzelner Integrationen nicht mehr verfügbar. Da hilft es meisten die betroffene Integration Neu zu laden. Sind die ... rechts unten die man bei jeder Integration findet.
Leider bietet HA dafür keinen Dienst an um eine Integration per Automatisierung oder Script Neu laden zu können.

Man kann aber per rest_command eine beliebige Integration Neu laden.
Dazu wird der Langlebige Zugangs-Token benötigt. Diesen könnt ihr euch in der HA App im Bereich Profil erstellen.
Des Weiteren benötigt ihr entry_id der jeweiligen Integration. Diese findet ihr unter config/.storage/core.config_entries der Order .storage ist versteckt d.h. Ihr müsst im Datei Explorer einstellen, dass auch versteckte Dateien angezeigt werden. die Datei core.config_entries am besten auf den Rechner runter laden, diese könnt Ihr dann in aller Ruhe nach den benötigten entry_id durchsuchen.

Der rest_command sieht dann folgendermassen aus:

Code: Alles auswählen

reload_integration_xy:
  url: https://HA-IP:port/api/config/config_entries/entry/123/reload
  method: POST
  headers:
    authorization: !secret api_bearer_token
    content-type: 'application/json'
123 steht für die entry_id Einfach 123 durch die jeweilige entry_id ersetzen.

Den Langlebige Zugangs-Token am besten in der secrets.yaml ablegen

Code: Alles auswählen

api_bearer_token: 'Bearer 456'
456 steht für den Langlebige Zugangs-Token (api_bearer_token) Einfach 456 durch euren api_bearer_token ersetzen.
Wichtig! Das Wörtchen Bearer muss vor den api_bearer_token stehen.

den rest_command könnt Ihr dann einfach in Automatisierungen oder Skripten als Aktion aufrufen.

Ich habe z.B. eine Integration die leider nicht immer zuverlässig nach einen HA Neustart geladen wird.
Also habe ich mir eine Automation erstellt, welche 1 min nach dem Neustart von HA prüft ob eine Entität der Integration verfügbar ist, wenn nicht rufe ich den rest_command auf.

Eine mögliche Automatisierung könnte z.B. so aussehen:

Code: Alles auswählen

alias: Neuladen Integration xy
description: ''
mode: single
trigger:
  - platform: homeassistant
    event: start
condition: []
action:
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - condition: state
    entity_id: media_player.xy
    state: unavailable
  - service: rest_command.reload_integration_xy
Im laufendem Betrieb könnt Ihr auch einfach den Zustand der Entitäten überwachen. Also nach dem Motto: Wenn Entität xy für x Minuten nicht verfügbar, dann Integration Neu laden.

Nicht schön, aber selten! 😀

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 428
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Neuladen von Integrationen automatisieren

Beitrag von Friedi »

Ich benutze das seit einiger Zeit für die MEROSS-Integration, die täglich mindestens einmal abschmiert. Klappt bestens.
Das delay von 1 Minute ist imho allerdings zu kurz.
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Neuladen von Integrationen automatisieren

Beitrag von Osorkon »

Friedi hat geschrieben: Sa 6. Nov 2021, 00:37 Das delay von 1 Minute ist imho allerdings zu kurz.
Der Zustand Home Assistant start, beschreibt den vollständigen Start von HA.
Die eine Minute ist in meinem Fall, ist somit schon eine minute zu lang gewartet.😉 Bzw. die gönne ich mir. 😀

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 428
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Neuladen von Integrationen automatisieren

Beitrag von Friedi »

Ja, in deinem Beispiel ist das klar.
Wenn du aber die Integration selbst überwachst, wie hier z.B.

Code: Alles auswählen

- id: reload_meross
  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: {}
…dann sollte der delay höher sein, da z.B. bei Update mit Restart diese dann doch länger weg sind und sonst triggern.

Den Aufruf mache ich dann mit Shell-Command:

Code: Alles auswählen

shell_command:
  meross_restart: "/usr/bin/curl -X 'POST' -H 'authorization: Bearer Der_supergeheime_Code' http://192.168.1.164:8123/api/config/config_entries/entry/die_Entry-ID/reload"
fisch
Beiträge: 9
Registriert: Mo 11. Jul 2022, 21:27
1
Has thanked: 1 time

Re: Neuladen von Integrationen automatisieren

Beitrag von fisch »

Hallo zusammen.
danke @Osorkon , dass du mich auf diese Forum hingewiesen hast. ;-)

Ich komme direkt mit einem Problemchen. Habt ihr hier vielleicht ne Hilfestellung für mich.
Ich komme via https://local_IP übrigens auch nicht auf meine Instanz, nur mit http.
Https funktioniert nur mit meiner externen URL , welches über den Proxy läuft.

.... so habe das auch mal machen wollen...allerdings bekomme ich jetzt diese Meldung.##

Code: Alles auswählen

Logger: homeassistant.components.rest_command
Source: components/rest_command/__init__.py:148 
Integration: RESTful Command (documentation, issues) 
First occurred: 14:21:48 (4 occurrences) 
Last logged: 14:37:49

Client error. Url: https://192.168.178.138:XXX/api/config/config_entries/entry/123/reload. Error: Cannot connect to host 192.168.178.138:8123 ssl:default [[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)]
Client error. Url: https://192.168.178.138:XXX/api/config/config_entries/entry/4123/reload. Error: Cannot connect to host 192.168.178.138:8123 ssl:default [[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)]

JEMAND eine Idee?

oder wird für jede reload integration eine neues Token benötigt?

Zuletzt geändert von fisch am Sa 16. Jul 2022, 15:04, insgesamt 1-mal geändert.
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Neuladen von Integrationen automatisieren

Beitrag von Osorkon »

fisch hat geschrieben: Sa 16. Jul 2022, 14:39

oder wird für jede reload integration eine neues Token benötigt?

Nein, wird nicht. Es geht ja nur um die Authentifizierung.
Dein HA ist auch per https und locale IP-Adresse erreichbar?

BTW:
Mittlerweile gibt es einen Dienst, der das Neuladen von Integrationen um einiges einfacher macht.

SERVICE HOMEASSISTANT.RELOAD_CONFIG_ENTRY

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
fisch
Beiträge: 9
Registriert: Mo 11. Jul 2022, 21:27
1
Has thanked: 1 time

Re: Neuladen von Integrationen automatisieren

Beitrag von fisch »

Ok, cool geht…… danke für den Hinweis.

Aber warum meine Lokale Ip nicht über https erreichbar ist …

Benutzeravatar
carsten_h
Beiträge: 532
Registriert: Mo 2. Aug 2021, 11:07
2
Has thanked: 1 time
Been thanked: 65 times

Re: Neuladen von Integrationen automatisieren

Beitrag von carsten_h »

fisch hat geschrieben: Sa 16. Jul 2022, 15:32

Aber warum meine Lokale Ip nicht über https erreichbar ist …

... ist total logisch!
Für https benötigt man ein Zertifikat. Mit Hilfe dieses Zertifikats wird der Name (!) des Servers überprüft. Sagen wir einmal der server heißt: "server.wasweissich.de". Du gibst also in der Adreßleiste "https://server.wasweissich.de" ein. Jetzt bekommt der Browser ein Zertifikat geschickt, in dem genau der Servername "server.wasweissich.de" drin steht. Also paßt alles!
Mit einer IP-Adresse funktioniert das nicht, denn für die kann man keine Namensüberprüfung machen.

Du bräuchtest also für die lokale Adresse Deines Servers eine Namensauflösung über einen lokalen DNS und Du müßtest für diese lokale Adresse ein überprüfbares Zertikat erstellen.

Hier laufen macOS, iOS, iPadOS, tvOS, watchOS, Home Assistant OS, QTS, Raspberry Pi OS, piCorePlayer und Fire OS

Antworten