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 🤙