Home Assistant: Proxmox-Webhooks nutzen

Seit Proxmox Version 8.3 werden als Ziel für Benachrichtigungen (Notifications) auch sog. Webhooks unterstützt. Das sind also HTTP-Aufrufe gegen ein beliebiges Ziel. Damit könnte man beispielsweise eine Push-Notification über Pushover generieren. Oder man gibt die Informationen einfach an sein Home Assistant System und kann damit tun was immer man will. Die nötigen Schritte dafür zeige ich Dir in diesem Video.

Kurz vorab: Bitte entschuldige, dass ich den Aufruf anfangs falsch konfiguriert habe. Ich habe dann trotzdem mit der Aufnahme weiter gemacht, um Dir den Lernprozess und die Fehlersuche ebenfalls zu zeigen. Somit tasten wir uns Schritt für Schritt an das Ergebnis.

Info: In Proxmox VE 8.2.8 habe ich eine Fehlermeldung bekommen, dass ich den Webhook nicht hinzufügen kann (not implemented 501). Nach einem Upgrade auf die aktuellste Version (8.3.3) und einem Neustart hat alles geklappt!

Video

Home-Assistant-Master-Kurs

Proxmox-Webhook

Beispiel

Wichtig ist, dass der Header Content-Type auf application/json gesetzt wird, damit Home Assistant weiß, dass jetzt JSON kommt und der HTTP-Body entsprechend geparsed wird.

{
  "title": "{{ escape title }}",
  "message": "{{ escape message }}",
  "severity": "{{ escape severity }}",
  "timestamp": {{ timestamp }},
  "fields": {{ json fields }}
}

Proxmox Webhook

»Proxmox Webhook«

Platzhalter

  • {{ title }}: Titel der Benachrichtigung
  • {{ message }}: Text / Nachricht
  • {{ severity }}: Schweregrad (info, notice, warning, error, unknown)
  • {{ timestamp }}: Zeitstempel als UNIX-Timestamp in Sekunden
  • {{ fields.<name> }}: Weitere Felder der Benachrichtigung. fields.type enthält beispielsweise den Typ der Benachrichtigung
  • {{ secrets.<name> }}: Zugriff auf die definierten Secrets – also sensible Informationen, welche im Dialog definiert wurden

Weiterhin gibt es folgende Helfer-Funktionen:

  • {{ url-encode <wert/eigenschaft> }}: URL-encoding für eine Eigenschaft
  • {{ escape <wert/eigenschaft> }}: Escaping für Werte, welche direkt im JSON verwendet werden können (Beispiel siehe oben)
  • {{ json <wert/eigenschaft> }}: Konvertiert einen Wert mit mehreren Eigenschaften direkt zu JSON. Beispielsweise {{ json fields }} für alle Felder (Beispiel siehe oben)

Home Assistant Automation

Der Request muss an diese Url erfolgen: <instance_url>/api/webhook/<webhook_id>. Die ID legt man dabei selbst in einer Automation fest!

Zugriff auf die Eigenschaften z.B. mit {{ trigger.json.title }} für den Titel. Beispiel:


action: notify.mobile_app_matthiass_iphone
metadata: {}
data:
  message: |-
    {{ trigger.json.message }}
    am {{ trigger.json.timestamp | timestamp_custom('%d.%m.%Y %H:%M:%S', True) }}
  title: "Proxmox: {{ trigger.json.title }}"

Links

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert