Alamos aPager Pro meets Node-RED

Node-RED ist ein auf Node.js basiertes Programmierwerkzeug, mit dem sich Hardwaregeräte, APIs und Online-Dienste über browsergestützte Workflow-Bearbeitung verbinden lassen. Hiermit lassen sich im Smart-Home komplexe Abläufe und Aktionen abbilden.

Als API bietet Alamos in der gesondert erhältlichen Jahreslizenz die Möglichkeit von IFTTT-Webhook oder generischen Webhooks. Auch wenn Node-RED grundsätzlich selbst Webhook-fähig ist, sind die technischen Abhängigkeiten (Public IP, NAT, Firewall) mit der Anforderung an einen sicheren Betrieb durchaus komplex.

Abhilfe schafft hier der Anbieter https://webhookrelay.com, der den eigentlichen Webhook im Internet zur Verfügung stellt und mittels einem für Node-RED verfügbaren Agenten an diese Instanz weiterleitet (Webhook-Relay). Webhookrelay.com stellt für Entwickler und Home Automation Enthusiasten ein kostenfreies „Free Starter“ Paket https://webhookrelay.com/pricing/ bereit. Mit im Paket sind im Wesentlichen 1 Webhook (Input) und 2 Outputs (z.B. Node-RED-Agent) mit 150 Relays pro Monat (entspricht Anzahl der Alarmierungen) was für den Hausgebrauch i.d.R. ausreichend ist.

Konfiguration Webhookrelay

  1. Erstellen eines Accounts bei webhookrelay.com.
    • Hier kommt nach Anmeldung automatisch das kostenfreie Paket zum Tragen.
    • Bestätigung der E-Mail-Adresse (anderenfalls kann kein Endpoint erstellt werden).
  2. Erstellung eines Access Token auf https://my.webhookrelay.com/tokens.
    • Hierbei Standard-Auswahl beibehalten.
    • Wichtig dabei ist, alle Angaben der Schlüsselgenerierung wie aufgefordert zu speichern bevor man das Fenster wieder schließt.
  3. Erstellung eines Public Endpoint (data input) auf https://my.webhookrelay.com/new-basic-forwarding
    • Name: „Beliebig“ z.B. alamos.
    • Public endpoint (data input): „Use default input domain“.
    • Destination URL: „Empty“.
    • Output type: „Internal (private network)“.

Anschließend wird in den Account Informationen (https://my.webhookrelay.com/account) der soeben angelegte „Token“, der definierte „Input“ (Webhook) und „Output“ (Relay über den Agent) angezeigt. „Agents connected“ besteht zu diesem Zeitpunkt noch nicht (0/1).

Solang die Konfiguration in Node-RED selbst noch nicht vorgenommen wurde, wird daher auch im Dashboard (https://my.webhookrelay.com/buckets) der Client auch noch als „Disconnected“ angezeigt. Die Verbindung zum Webhook (Input) kann jedoch bereits jetzt entweder als GET oder als POST Request erfolgen.

Der generierte „Default public endpoint“ ist die URL, die in der aPager Pro-App als z.B. „Webhook 1 konfigurieren“ zu hinterlegen ist. Da es hierfür bereits eine gesonderte Anleitung gibt, sind diese Schritte in dieser Anleitung nicht näher beschrieben.

Konfiguration Node-RED

  • Anmelden am Webfrontend der vorhandenen Node-RED Instanz.
  • Öffnen der Palette und Installation des Node „node-red-contrib-webhookrelay“
  • Hinzufügen und Konfiguration von neuem „Node“.
    • Bei „Buckets“ ist unbedingt der in webhookrelay.com verwendete „Bucket-Name“ in unserem Beispiel „alamos“ zu verwenden. Dies ist erforderlich, um die Zuordnung des Relay-Agents zum richtigen Bucket und Verbindung zu gewährleisten.
    • Bei „Key“ ist der im vorherigen Schritt „Access Token erzeugen“ generierte Schlüssel einzutragen.
    • Gleiches gilt für „Secret“, welches ebenfalls in diesem Schritt generiert wurde.

Wenn man bis dahin alles richtig gemacht hat, wird der webhookrelay-Node in Node-RED

und im „Bucket alamos“ webhookrelay.com Dashboard jeweils als „connected“ angezeigt.

Erstellung Node-RED Flow

In Node-RED ist der von Alamos aPager Pro kommende Payload bei einem Alarm wie folgt aufgebaut:

Die relevante Information, mit der man weiterarbeiten möchte, steckt also in msg.payload.body. Mit dem json-Node kann man diese Informationen in JavaScript-Objekte konvertieren, um hiermit anschließend weiterarbeiten zu können.

Mit dem function-Node ist es möglich, die beiden Payloads in Variablen zu schreiben und mit diesen anschließend weiter zu arbeiten.

Der eigenen Kreativität sind hierbei keine Grenzen gesetzt, so kann man zum Beispiel die Ehefrau per Telegram darüber informieren, dass man im Einsatz ist oder sich das Licht im Flur und Eingangsbereich automatisch für 10 Minuten einschalten lassen.

Palo Alto Security Scan

In unregelmäßigen Abständen habe ich festgestellt, dass der Trigger für das Licht auch ausgelöst wurde, obwohl keine Alarmierung stattgefunden hat. Ein Troubleshooting hat ergeben, dass über das Webhook-Relay nicht nur valide Alarmmeldungen inkl. JSON, sondern auch Security-Meldungen von Palo Alto mitgeliefert wurden und den Trigger damit ausgelöst haben.

{"type":"webhook","meta":{"id":"...","bucked_id":"...","bucket_name":"alamos","input_id":"...","input_name":"Default public endpoint","output_name":"NodeRED","output_destination":"http://127.0.0.1"},"headers":{"User-Agent":["Expanse, a Palo Alto Networks company, searches across the global IPv4 space multiple times per day to identify customers' presences on the Internet. If you would like to be excluded from our scans, please send IP addresses/domains to: scaninfo@paloaltonetworks.com"]},"query":"","body":"","method":"GET"}

Dies konnte durch das Verschieben der Trigger-Nodes hinter die Validierung und Generierung der Alarm Message gelöst werden.

Bitte beachten

Dieses Werk steht unter der Creative-Commons-Lizenz. Alle Angaben erfolgen ohne Gewähr. Eine Haftung der Autorinnen und des Autors sowie der Herausgeberin ist ausgeschlossen. Es wird keine Verantwortung für Schäden, Verletzungen oder Unglücke, die im Zusammenhang mit der Verwendung dieser Anleitung auftreten, übernommen.