Home Assistant mit WebHooks automatisieren

Automationen in Home Assistant durch externe Systeme feuern 🚀 Ich zeig dir wie es geht!

Home Assistant mit WebHooks automatisieren
Photo by Steve Johnson / Unsplash / Image

Wenn man Home Assistant nutzt, hat man in der Regel viele Dinge oder GerĂ€te bereits im Home Assistant angelegt. Es gibt jedoch einige AnwendungsfĂ€lle, wo man Automationen (und entsprechende Aktionen) in Home Assistant ausfĂŒhren möchte, diese aber nicht von Home Assistant selbst ausgelöst werden. Hier kommen WebHooks zum Einsatz.

Was sind WebHooks

Im Kern sind WebHooks nichts anderes als API-Endpunkte. Was genau API-Endpunkte sind, erfĂ€hrst du in meiner EinfĂŒhrung zu REST-APIs 👇

REST-APIs verstehen und nutzen
APIs: AllgegenwĂ€rtig und jeder nutzt sie , wenn auch in direkt. Aber wofĂŒr sind sie da und wie funktionieren sie? Wir klĂ€ren auf 💡

Diese definierten Endpunkte werden durch Systeme bereitgestellt, in dem Falle Home Assistant und erwarten (in der Regel) eine vordefinierte Struktur.

So können wir Daten an ein System ĂŒbergeben und damit das andere System mit Daten fĂŒttern oder anzeigen, dass gerade eine Aktion ausgefĂŒhrt worden ist.

Ich selbst nutze einen solchen WebHook in n8n (hierzu habe ich bereits einen Artikel geschrieben) um mir eine Benachrichtigung ĂŒber Home Assistant an mein Handy zu schicken, wenn ich einen neuen Blog-Artikel veröffentliche. Da ich viele Artikel im Vorfeld plane, ist es immer schön zu sehen, dass ein Artikel auch gepostet worden ist.

Wie werden WebHooks in Home Assistant definiert?

In Home Assistant ist es recht einfach, WebHooks zu definieren. Hierzu brauchen wir nur eine neue Automation erstellen und als Einstiegspunkt "Webhook" auswÀhlen.

Jeder dieser WebHooks bekommt dann eine feste ID, mit der dieser erreicht werden kann. Bei Home Assistant werden die WebHooks immer als POST oder PUTangegeben, so dass man dort auch Daten ĂŒbergeben kann. Ein GEThĂ€tte den Nachteil, dass man hier nur Daten ĂŒber den Query-String mitliefern kann.

Das heißt, dass wir unseren WebHook wie folgt erreichen könnten:

POST https://homeassistant.local/api/webhook/-mNLpFGdHRSK0fhJIFDEOydyM

Feuern wir nun den Request mit cURL ab, sehen wir unseren Request in den AutomationsablÀufen:

Liefern wir Ihm im Bodyauch Daten als JSONmit, sehen wir auch diese:

Übergabe der Daten an den WebHook in Postman
Empfangene Daten in Home Assistant

In der Automation selbst, haben wir also im Trigger unsere Daten. In einem Home Assistant-Template können wir mit {{ trigger.json }} darauf zugreifen.

💡
Wie genau das mit den Templates in Home Assistant funktioniert, werde ich noch einmal in einem spÀteren Artikel aufgreifen. An dieser Stelle verweise ich hier aber vorsorglich einmal auf die Doku zum Thema Templating.

Diese Daten können wir dann weiter verwenden, um z.B. eine Benachrichtigung in Home Assistant zu feuern:

service: notify.notify
data:
  title: Post veröffentlicht 📑
  message: "'{{ trigger.json.name }}' veröffentlicht"

Und damit wÀre dein erster WebHook geschrieben und einsatzfÀhig.

Cheers đŸ€™