Node-RED mit dem INSTAR Cloud Webhook

Die INSTAR Cloud unterstützt sowohl die POST- als auch die GET-Methode für den Smarthome Webhook. Dieser Artikel hilft Ihnen, die POST-Methode einzurichten. Weitere Informationen zur GET-Methode finden Sie in diesem Artikel.

Node-RED POST Webhook

Zuerst müssen wir einen Webhook konfigurieren, der uns Dummy-HTML ausgibt. Eingehende POST-Anfragen müssen je nach dem URL-Parameter, den sie enthalten, zu unterschiedlichen Aktionen weitergeleitet werden. Als Beispiel werde ich einen Parameter namens trigger hinzufügen, der entweder den Wert cloud oder camera hat (wenn die eingehende Anfrage direkt von einer Kamera anstelle der INSTAR Cloud kommt). Zusätzlich wird von der INSTAR Cloud ein Parameter für die Kamera-ID und das erkannte Objekt im Alarmvideo als Parameter angehängt werden - siehe Webhook-Dokumentation für mehr Details:

ParameterWert
triggercloud oder camera
camKamera ID z.B.. 872345
objectErkanntes Objekt z.B. 1 für eine Person

Der Node-RED Flow sieht wie folgt aus:

Node-RED mit dem INSTAR Cloud Webhook

Flow Export

[{"id":"4305317dcedbdeb8","type":"http in","z":"ed9ce5b007555c56","name":"POST Webhook mit Body Params","url":"/post-webhook/","method":"post","upload":false,"swaggerDoc":"","x":160,"y":320,"wires":[["be9945843c94c359","340d7ac7c7d07395"]]},{"id":"be9945843c94c359","type":"switch","z":"ed9ce5b007555c56","name":"Trigger","property":"payload.trigger","propertyType":"msg","rules":[{"t":"eq","v":"camera","vt":"str"},{"t":"eq","v":"cloud","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":320,"y":380,"wires":[["ee59a492a87a17f5"],["040887557d53b2da"]]},{"id":"040887557d53b2da","type":"switch","z":"ed9ce5b007555c56","name":"Cloud","property":"payload.cam","propertyType":"msg","rules":[{"t":"eq","v":"872345","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":190,"y":460,"wires":[["8a53fa33eab3f6e6"],["74dd3684de8a250c"]]},{"id":"ee59a492a87a17f5","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":360,"wires":[]},{"id":"ab90b338d83ddc06","type":"switch","z":"ed9ce5b007555c56","name":"Object","property":"payload.object","propertyType":"msg","rules":[{"t":"eq","v":"Unknown","vt":"str"},{"t":"eq","v":"Person","vt":"str"},{"t":"eq","v":"Vehicle","vt":"str"},{"t":"eq","v":"Animal","vt":"str"},{"t":"eq","v":"Person & Vehicle","vt":"str"},{"t":"eq","v":"Vehicle & Animal","vt":"str"},{"t":"eq","v":"Person, Vehicle & Animal","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":510,"y":440,"wires":[["6381501d80333057"],["6381501d80333057"],["6381501d80333057"],["6381501d80333057"],["6381501d80333057"],["6381501d80333057"],["6381501d80333057"]]},{"id":"8a53fa33eab3f6e6","type":"change","z":"ed9ce5b007555c56","name":"Cam 872345","rules":[{"t":"change","p":"payload.object","pt":"msg","from":"0","fromt":"str","to":"Unknown","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"1","fromt":"str","to":"Person","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"2","fromt":"str","to":"Vehicle","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"3","fromt":"str","to":"Person & Vehicle","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"4","fromt":"str","to":"Animal","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"5","fromt":"str","to":"Person & Animal","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"6","fromt":"str","to":"Vehicle & Animal","tot":"str"},{"t":"change","p":"payload.object","pt":"msg","from":"7","fromt":"str","to":"Person, Vehicle & Animal","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":440,"wires":[["ab90b338d83ddc06"]]},{"id":"74dd3684de8a250c","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":480,"wires":[]},{"id":"6381501d80333057","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":650,"y":440,"wires":[]},{"id":"340d7ac7c7d07395","type":"template","z":"ed9ce5b007555c56","name":"POST Webhook","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head>\n        <title>POST Webhook</title>\n    </head>\n    <body>\n        <h2>Trigger: {{req.body.trigger}}</h2>\n        <h2>Camera: {{req.body.cam}}</h2>\n        <h2>Object: {{req.body.object}}</h2>\n    </body>\n</html>","x":400,"y":300,"wires":[["770247626e74ec96"]]},{"id":"770247626e74ec96","type":"http response","z":"ed9ce5b007555c56","name":"","x":550,"y":300,"wires":[]}]

Konfigurieren der INSTAR Cloud

Die Webhook-Konfiguration finden Sie unter Alarmeinstellungen. Hier müssen Sie die URL hinzufügen, die zu Ihrem Webhook führt. Wir verbinden uns direkt mit Node-RED über den Standard-Port 1880 und der Adresse unseres Servers meine.server.adresse (dies kann ein Domain-Name oder eine IP-Adresse sein). Der obige Node-RED-Beispielfluss definiert einen POST Webhook /post-webhook/. Wenn wir dies alles zusammenfügen, erhalten wir die Webhook-URL:

http://meine.server.adresse:1880/post-webhook/

Node-RED mit dem INSTAR Cloud Webhook

Hier können wir auch den oben erwähnten zusätzlichen Parameter trigger=cloud hinzufügen. Des Weiteren sagen wir der INSTAR Cloud sie soll automatisch die auslösende Kamera-ID und das erkannte Objekt, das den Alarm ausgelöst hat, an die Anfrage anhängen:

Node-RED mit dem INSTAR Cloud Webhook

Der Benutzername und das Kennwort, die hier hinzugefügt werden müssen, sind die, die Sie unter Node Security httpNodeAuth festgelegt haben. Im Beispiel hatte ich hier admin und instar gewählt.

Darunter können Sie auswählen, welche Kameras den Webhook verwenden und welche erkannten Objekte gemeldet werden sollen. Klicken Sie auf Speichern und anschließend auf Testen, um Ihren Webhook zu testen:

Node-RED mit dem INSTAR Cloud Webhook

Der Test liefert ein HTTP/1.1 200 OK und wenn Sie das Debug-Panel in Node-RED nachschauen, sollten Sie sehen, dass der Parameter trigger angekommen ist:

Node-RED mit dem INSTAR Cloud Webhook

Warten Sie nun auf ein "echtes" Alarmereignis und Sie sollten sehen, dass sowohl die Kamera-ID als auch das erkannte Objekt an Node-RED gesendet werden:

Node-RED mit dem INSTAR Cloud Webhook

Jetzt müssen Sie nur noch verschiedene Aktionen je nach auslösender Kamera und dem erkannten Objekt definieren.

Weitere Schritte

Wenn Sie Ihren Node-RED-Webhook direkt mit Ihrer INSTAR-Kamera verwenden möchten - ohne ein INSTAR Cloud-Konto - folgen Sie bitte unserem Alarmserver Queries Tutorial.