Daten von beliebigen Linux-Systemen in HA anzeigen
Webhooks ermöglichen es, Daten unkompliziert von einem beliebigen Linux-System an Home Assistant zu übermitteln.
Automation: Webhook Auslöser
Für das Empfangen in Home Assistant kann eine "Automation" mit einem Webhook-Auslöser verwendet werden:
Linux-System: curl Aufruf
Mit Hilfe der Webhook-ID kann curl von einem beliebigen Linux-System die Automation auslösen und Daten übermitteln.
curl -X POST http://homeassistant.local:8123/api/webhook/WebhookID
Daten empfangen: trigger.data
Für den Empfang bestimmter Werte oder Daten steht in der Automation die Variable "trigger.data" zur Verfügung. Damit die Daten in einer Entität in Home Assistant landen, benötigen wir noch eine Entität, als Beispiel einen Text-Eingabe-Helfer:
Um den Test-Sensor mit einem Wert zu befüllen, kann der Parameter -d (Data) an curl mit dem gewünschten Wert angehängt werden:
curl -X POST -d bashdata="state_from_curl" http://homeassistant.local:8123/api/webhook/WebhookID
Der Text-Eingabe-Helfer hat dabei ein Limit von 255 Zeichen.
Mehr als 255 Zeichen: HACS "Variables+History"
Die HACS-Intergration "Variables+History" ermöglicht das Befüllen der Attributes eines Sensors, wodurch beliebig lange Werte übertragen werden können. Für das Hinzufügen der Integration wird HACS vorausgesetzt, siehe: Home Assistant Integrationen
Variable anlegen
Ein Sensor, in der Integration "Variable" genannt, kann über das Hinzufügen in den Integrationen angelegt werden:
Die Variable kann jetzt in der Automation verwendet werden:
Über den curl-Befehl können damit mehrere Attribute an die Automation übergeben werden:
curl Befehl | Automation, Variables+History: Attributes |
---|---|
curl -X POST -d bashdata="state_from_curl" http://homeassistant.local:8123/api/webhook/WebhookID | bashdata: "{{ trigger.data.bashdata }}" |
curl -X POST -d bashdata1="state_from_curl" -d bashdata2="state_from_curl" http://homeassistant.local:8123/api/webhook/WebhookID |
bashdata1: "{{ trigger.data.bashdata }}" bashdata2: "{{ trigger.data.bashdata2 }}" |
Beispiel: OpenWrt
Mit Hilfe eines Cron-Jobs in OpenWrt können beliebige Daten an Home Assistant übermittelt werden, so z.B. alle verbundenen WiFi-Geräte von mehreren AccessPoints, die DHCP Leases und Usteer-Daten:
Variante 2: REST-API
Daten von einem Linux-Terminal können alternativ über einen AccessToken an Home Assistant übermittelt werden. Die Variante erlaubt den Access-Token allerdings weitreichende Berechtigungen in Home Assistant, daher kann ich die Variante für den hier beschriebenen Einsatzzweck nur bedingt empfehlen.
Voraussetzung: Access Token
Entität anlegen / Daten senden in Bash:
curl -X POST -H "Content-Type: application/json" -d '{"state": "50"}' http://HA-IP:8123/api/states/counter.backup_sox_scripts_backup -H "Authorization: Bearer ??"
Fazit
Die Verwendung von Bash oder REST ermöglicht es, Werte in Home Assistant abzuliefern und diese mit Smart Home auszuwerten oder anzuzeigen. Linux-Systeme mit Zugriff auf cron können damit eingebunden, auch wenn dafür keine Integration existiert.

{{percentage}} % positiv
