Node-RED mit dem INSTAR Cloud Webhook
Die INSTAR Cloud unterstützt sowohl die GET- als auch die POST-Methode für den Smarthome Webhook. Dieser Artikel hilft Ihnen, die GET-Methode einzurichten. Weitere Informationen zur POST-Methode finden Sie in diesem Artikel.
Node-RED GET Webhook
Zuerst müssen wir einen Webhook konfigurieren, der uns Dummy-HTML ausgibt. Eingehende GET-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:
Parameter | Wert |
---|---|
trigger | cloud oder camera |
cam | Kamera ID z.B.. 872345 |
object | Erkanntes Objekt z.B. 1 für eine Person |
Der Node-RED Flow sieht wie folgt aus:
Flow Export
[{"id":"38b7bc1d.686704","type":"http response","z":"ed9ce5b007555c56","name":"","x":530,"y":40,"wires":[]},{"id":"eb3f53ec.7ccc8","type":"template","z":"ed9ce5b007555c56","name":"GET Webhook","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head>\n <title>GET Webhook</title>\n </head>\n <body>\n <h2>Trigger: {{req.query.trigger}}</h2>\n <h2>Camera: {{req.query.cam}}</h2>\n <h2>Object: {{req.query.object}}</h2>\n </body>\n</html>","x":380,"y":40,"wires":[["38b7bc1d.686704"]]},{"id":"679c2568.c1aa9c","type":"http in","z":"ed9ce5b007555c56","name":"GET Webhook with URL Query","url":"/get-webhook/","method":"get","upload":false,"swaggerDoc":"","x":150,"y":60,"wires":[["eb3f53ec.7ccc8","d47269ed.fe6118"]]},{"id":"bedc0285.722dd","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":300,"y":120,"wires":[["642a98e9cbc7ac4a"],["376ebc65.1998a4"]]},{"id":"d47269ed.fe6118","type":"function","z":"ed9ce5b007555c56","name":"extract query","func":"msg.payload = msg.req.query;\nreturn msg;","outputs":1,"noerr":0,"x":146,"y":120,"wires":[["bedc0285.722dd"]]},{"id":"376ebc65.1998a4","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":170,"y":200,"wires":[["0c56e9b0ed94f542"],["a179fb56e903475f"]]},{"id":"642a98e9cbc7ac4a","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":450,"y":100,"wires":[]},{"id":"cda26d9f76231263","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":630,"y":180,"wires":[]},{"id":"885b843387e73f9c","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":490,"y":180,"wires":[["cda26d9f76231263"],["cda26d9f76231263"],["cda26d9f76231263"],["cda26d9f76231263"],["cda26d9f76231263"],["cda26d9f76231263"],["cda26d9f76231263"]]},{"id":"0c56e9b0ed94f542","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":350,"y":180,"wires":[["885b843387e73f9c"]]},{"id":"a179fb56e903475f","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":310,"y":220,"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 GET Webhook /get-webhook/
. Wenn wir dies alles zusammenfügen, erhalten wir die Webhook-URL:
http://meine.server.adresse:1880/get-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:
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:
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:
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:
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.