INSTAR Cloud

Webhook

Smarthomes und Automatisierungssysteme bieten oft HTTP-Webhooks zur Verbindung mit Systemen von Drittanbietern. Konfigurieren Sie Ihre INSTAR Cloud so, dass sie einen solchen Webhook kontaktiert, wenn ein Alarm aufgezeichnet wird.

Beispiel: Nutzen des INSTAR Cloud Webhooks in Node-RED

Einrichten eines Webhooks

Wir haben mehrere Anleitungen für die Verwendung Ihrer INSTAR-Kameras Alarmserver um Ihr Smarthome-System über einen Webhook zu kontaktieren (z.B. Node-RED, ioBroker oder Home Assistant). Derselbe Webhook kann mit Ihrem INSTAR Cloud-Konto verwendet werden.

Der einzige große Unterschied ist, dass der Webhook über das Internet erreichbar sein muss, um mit Ihrem Cloud-Konto verbunden zu werden. Glücklicherweise verfügt jede INSTAR IP-Kamera über eine eigene DDNS-Adresse, die hier "missbraucht" werden kann.

Hinweis:

Bevor Sie einen Port auf Ihr Hausautomatisierungssystem weiterleiten, vergewissern Sie sich, dass der Zugang zum System passwortgeschützt ist! Z.B. im Falle von Node-RED müssen Sie Ihre Node-Red-Benutzeroberfläche schützen, indem Sie die Variablen adminAuth und httpNodeAuth setzen, um den Webhook selbst zu schützen. Beide können in der setting.js Datei konfiguriert werden.

Beginnen Sie mit der Weiterleitung Ihres smarthomes HTTP-Ports - die Voreinstellung für Node-RED ist z.B. 1880 - auf die Server-IP-Adresse, auf die Ihr Smarthome-System läuft. Hier ist es sinnvoll, den Standard-Port zu ändern oder - falls Ihr Router das zulässt, z.B. eine AVM Fritzbox - verwenden Sie innerhalb Ihres lokalen Netzwerks den Standardport, aber setzen Sie den externen Port in der Weiterleitung auf einen anderen Wert.

Jetzt können Sie die DDNS-Adresse einer BELIEBIGEN INSTAR IP-Kamera im selben Netzwerk wie Ihr Smarthome verwenden, um den Webhook über das Internet aufzurufen. Sie können den Webhook von einem PC oder Mobiltelefon aus ausprobieren, das nicht mit Ihrem lokalen Netzwerk verbunden ist. Können Sie den Webhook erreichen? Wenn ja, können wir ihn jetzt zu unserem INSTAR Cloud-Konto hinzufügen.

Konfigurieren Ihrer INSTAR Cloud

Sie finden die Webhook-Konfiguration in Alarmeinstellungen unter Webhook:

INSTAR Cloud - Webhook

Fügen Sie Ihren Webhook wie oben konfiguriert hinzu - vergessen Sie nicht, Ihr HTTP-Login am Ende der Konfigurationsseite hinzuzufügen - im Falle von Node-RED wird dies das Benutzer-Login sein, das Sie als htpNodeAuth hinzugefügt haben:

INSTAR Cloud - Webhook

Wie Sie oben sehen können, kann die INSTAR Cloud sowohl den erkannten Alarmauslöser als auch die Cloud-ID Ihrer Kamera als URL-Query an die Webhook-Anfrage anhängen. Um dies zu simulieren, werde ich - für den Moment - einen Parameter cam = cameraid und object = 1 hinzufügen. Sie müssen beide nach dem Test entfernen, bevor Sie anfangen den Hook tatsächlich zu verwenden. Aber das erlaubt es uns erstmal, den Test Knopf unten zu drücken und zu sehen, wie ein "echter" Alarm in unserem Smarthome aussehen wird!

Wenn Sie die Schaltfläche Test drücken, erhalte Sie die Meldung, dass die INSTAR Cloud auf Ihren Webhook zugreifen kann:

INSTAR Cloud - Webhook

Mit URL Parametern Arbeiten

Auf unserer Smarthome-Seite können wir nun den Cloud-Trigger verwenden, um eine Aktion unserer Wahl hinzuzufügen - eine Nachricht an Ihren Lieblings-Messenger senden, einen Alarm auslösen, usw. Wir können aber auch die Parameter extrahieren, die die INSTAR Cloud der Anfrage hinzufügt. Wie oben erwähnt, habe ich diese vorerst manuell hinzugefügt. Auf diese Weise können wir einfach auf die Schaltfläche Test klicken, um ein Ereignis zu simulieren. Hier ist ein Beispiel, wie das in Node-RED gemacht werden kann:

INSTAR Cloud - Webhook

Flow Export:

[{"id":"38b7bc1d.686704","type":"http response","z":"ed9ce5b007555c56","name":"","x":470,"y":40,"wires":[]},{"id":"eb3f53ec.7ccc8","type":"template","z":"ed9ce5b007555c56","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></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":350,"y":40,"wires":[["38b7bc1d.686704"]]},{"id":"679c2568.c1aa9c","type":"http in","z":"ed9ce5b007555c56","name":"Webhook with URL Query","url":"/as-webhook/","method":"get","upload":false,"swaggerDoc":"","x":115,"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":270,"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":126,"y":120,"wires":[["bedc0285.722dd"]]},{"id":"376ebc65.1998a4","type":"switch","z":"ed9ce5b007555c56","name":"Cloud","property":"payload.cam","propertyType":"msg","rules":[{"t":"eq","v":"cameraid","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":150,"y":200,"wires":[["0c56e9b0ed94f542"],["3d07c6095e1f1d38"]]},{"id":"642a98e9cbc7ac4a","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":430,"y":100,"wires":[]},{"id":"cda26d9f76231263","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":590,"y":160,"wires":[]},{"id":"885b843387e73f9c","type":"switch","z":"ed9ce5b007555c56","name":"Object","property":"payload.object","propertyType":"msg","rules":[{"t":"eq","v":"Person","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":450,"y":180,"wires":[["cda26d9f76231263"],["90e220e412005b1b"]]},{"id":"0c56e9b0ed94f542","type":"change","z":"ed9ce5b007555c56","name":"cameraid","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":320,"y":180,"wires":[["885b843387e73f9c"]]},{"id":"90e220e412005b1b","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":590,"y":200,"wires":[]},{"id":"3d07c6095e1f1d38","type":"debug","z":"ed9ce5b007555c56","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":220,"wires":[]}]

In diesem Flow habe ich einen Webhook auf /as-webhook/ erstellt. Ich extrahiere die URL Parameter aus den eingehenden GET-Anfragen und sortiere sie nach ihrem Auslöser. Wenn der Auslöser cloud ist, sortiere ich weiter nach cam (die Kamera-ID der Kamera, die den Alarm ausgelöst hat) und object (der zugehörige, erkannte Alarmauslöser). Zusätzlich habe ich einen Change Node hinzugefügt, mit dem ich das Nummernschema, das die INSTAR Cloud verwendet, durch den Namen des erkannten Objekts ersetzen kann:

Object CodeDescription
0Ubekannt
1Person
2Auto
3Person & Auto
4Tier
5Person & Tier
6Auto & Tier
7Person, Auto & Tier

Wie Sie sehen können, ist das resultierende Nachrichtenobjekt:

{"trigger":"cloud","cam":"cameraid","object":"Person"}

Und ich kann jetzt verschiedene Aktionen hinzufügen, je nachdem, welche Kamera den Alarm ausgelöst hat und welches Objekt im Alarmvideo erkannt wurde.

Testing

Entfernen Sie jetzt den cam und object Parameter aus der Webhook Konfiguration und warten Sie auf den nächsten Alarm der von Ihren Kameras registriert wird:

INSTAR Cloud - Webhook

Hier hat unsere Katze einen Alarm ausgelöst, wurde von der INSTAR Cloud Objekterkennung richtig erkannt und der Webhook wurde erfolgreich kontaktiert!

INSTAR Forum

Diskutieren Sie diesen Artikel im INSTAR Forum !