Testen des Alarmservers
Q: Ich möchte meine Kamera verwenden, um mein Smarthome und meine Alarmanlage zu benachrichtigen, wenn sie einen Eindringling entdeckt.
A: Sie können den Alarmserver Ihrer Kamera verwenden, um einen kurzen Ping zu senden, wenn ein Alarmereignis ausgelöst wurde. Ihre INSTAR WQHD Kamera unterstützt sowohl das HTTP als auch das MQTT Protokoll zur Benachrichtigung von Fremdsystemen. Sie können die folgenden CGI-Befehle verwenden, um diese Funktion zu testen und um Ihnen bei der Konfiguration der Empfangsseite zu helfen, wie z.B. Node-RED.
param.cgi?cmd=testas
Testen Sie den HTTP-Alarmserver
Mit diesem Befehl können Sie eine Alarmserver-HTTP-Anfrage wie in der Web-Benutzeroberfläche Ihrer Kamera konfiguriert ausgeben. Sie können den Auslöser und das erkannte Objekt als URL-Query hinzufügen:
Alarmauslöser
Es gibt eine neue Alarmserver API für WQHD 2K+ Kameras. Die einzelnen Schritte unten sind weiterhin gültig. Nur der URL Query nennt sich jetzt &trigger
anstelle von &active
, die Zahlenwerte haben sich geändert und ermöglichen jetzt das auswerten mehrerer, zeitgleicher Alarmauslöser! Sie finden eine Beispiel-Implementierung der MQTT- and HTTP-Alarmserver v2 API mit Node-RED hier.
- v1 API (alle Full HD Modelle und WQHD Modelle bis Firmware Version 3.4.0[883])
- Alarmbereich 1 ausgelöst:
&active=1
- Alarmbereich 2 ausgelöst:
&active=2
- Alarmbereich 3 ausgelöst:
&active=3
- Alarmbereich 4 ausgelöst:
&active=4
- Alarm-In / PIR ausgelöst:
&active=5
- Audio Alarm ausgelöst:
&active=6
- PIR ausgelöst & Alarmbereich 1 ausgelöst:
&active=7
- PIR ausgelöst & Alarmbereich 2 ausgelöst:
&active=8
- PIR ausgelöst & Alarmbereich 3 ausgelöst:
&active=9
- PIR ausgelöst & Alarmbereich 4 ausgelöst:
&active=10
- manueller Auslöser (cmd=pushhostalarm):
&active=99
- Alarmbereich 1 ausgelöst:
Erkanntes Objekt
- Person:
&object=1
- Fahrzeug:
&object=2
- Person + Fahrzeug:
&object=3
- Tier:
&object=4
- Person + Tier:
&object=5
- Tier + Fahrzeug:
&object=6
So wollen Sie zum Beispiel simulieren, dass Ihre Kameras zunächst Alarmbereich und (gekoppelt) der interne PIR-Bewegungssensor eine Bewegung erkannt hat. Und die aktivierte Objekterkennung identifizierte das Objekt als eine Person. Wenn Ihre Kamera die IP-Adresse http://192.168.2.120/
hat und Ihr Admin-Benutzer admin
mit dem Passwort instar
ist, können Sie die folgende URL mit Ihrem Webbrowser aufrufen, um den Alarmserver auszulösen:
http://192.168.2.120/param.cgi?cmd=testas&index=1&active=7&object=1&user=admin&pwd=instar
Test Ergebnis
result
:0
: Success-1
: Verbindung zum Server kann nicht hergestellt werden-2
: Ungültige Berechtigungsnachweise-3
: Berechtigungsfehler / Schlechter Pfad-4
: Timeout-5
: Server kann nicht verifiziert werden-6
: Ausgelastet-7
: Interner Fehler-8
: Unbekannter Fehler-9
: Übertragung unvollständig
Neben den Standard Rückgabe-Codes kann dieser Befehl auch den Code
210
zurückgeben, der anzeigt, dass der Alarmserver deaktiviert ist oder mit215
nicht ausgelöst werden konnte, weil etwas ihn blockiert. Ist der Alarmserver für den Auslöser, den Sie zu benutzen versuchen, unterdrückt? Sieheas_area
,as_io
, usw. (siehe CGI Dokumentation)
Smarthome-Integration
Auf Ihrer Smarthome-Seite müssen Sie nun einen Webhook bereitstellen und ihn zu Ihrer HTTP Alarmserver-Konfiguration hinzufügen. Durch die Verwendung des Test-CGI-Befehls wird Ihre Kamera dann eine HTTP-GET-Anfrage senden und Sie können Ihr Smarthome verwenden, um das Ereignis weiter zu verarbeiten, z. B. mit Node-RED:
Wenn Sie diesen Flow in Node-RED importieren, erhalten Sie einen HTTP-Webhook /as-webhook/
mit der IP-Adresse Ihrer Node-RED-Installation, z.B. 192.168.2.112
:
JSON Flow Export:
[{"id":"38b7bc1d.686704","type":"http response","z":"ba3a4343d1d61c4f","name":"","x":430,"y":700,"wires":[]},{"id":"eb3f53ec.7ccc8","type":"template","z":"ba3a4343d1d61c4f","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head></head>\n <body>\n <h2>Camera: {{req.query.camera}}</h2>\n <h2>Test Value 2: {{req.query.query2}}</h2>\n <h2>Test Value 3: {{req.query.query3}}</h2>\n <h2>Active: {{req.query.active}}</h2>\n </body>\n</html>","x":310,"y":700,"wires":[["38b7bc1d.686704"]]},{"id":"679c2568.c1aa9c","type":"http in","z":"ba3a4343d1d61c4f","name":"Webhook with URL Query","url":"/as-webhook/","method":"get","upload":false,"swaggerDoc":"","x":130,"y":720,"wires":[["eb3f53ec.7ccc8","d47269ed.fe6118"]]},{"id":"d47269ed.fe6118","type":"function","z":"ba3a4343d1d61c4f","name":"extract query","func":"msg.payload = msg.req.query;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":740,"wires":[["7aad73d3908357b3"]]},{"id":"7aad73d3908357b3","type":"debug","z":"ba3a4343d1d61c4f","name":"HTTP Alarmserver","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":510,"y":740,"wires":[]}]
Wenn Sie diesen Flow in Node-RED importieren, erhalten Sie einen HTTP-Webhook /as-webhook/
mit der IP-Adresse Ihrer Node-RED-Installation, z.B. 192.168.2.112
:
Sie können nun die angehängten URL-Abfragen extrahieren und in Ihre Node-RED-Flows einspeisen:
param.cgi?cmd=testmqtt
Testen Sie den MQTT-Alarmserver
Mit diesem Befehl können Sie ein MQTT-Update des Alarmservers an den konfigurierten MQTT-Broker senden. Der Test wird zwei MQTT-Topics aktualisieren - eines für den Alarmauslöser und ein zweites für das erkannte Objekt (wenn Objekterkennung aktiviert ist).
So wollen Sie zum Beispiel simulieren, dass Ihre Kameras zunächst Alarmbereich und (gekoppelt) der interne PIR-Bewegungssensor eine Bewegung erkannt hat. Und die aktivierte Objekterkennung identifizierte das Objekt als eine Person. Wenn Ihre Kamera die IP-Adresse http://192.168.2.120/
hat und Ihr Admin-Benutzer admin
mit dem Passwort instar
ist, können Sie die folgende URL mit Ihrem Webbrowser aufrufen, um den Alarmserver auszulösen:
http://192.168.2.120/param.cgi?cmd=testmqtt&active=5&object=3&user=admin&pwd=instar
Alarmauslöser
MQTT Topic: alarm/triggered
- Alarmbereich 1 ausgelöst:
&active=1
->{"val":"1"}
- Alarmbereich 2 ausgelöst:
&active=2
->{"val":"2"}
- Alarmbereich 3 ausgelöst:
&active=3
->{"val":"3"}
- Alarmbereich 4 ausgelöst:
&active=4
->{"val":"4"}
- Alarm-In / PIR ausgelöst:
&active=5
->{"val":"5"}
- Audio Alarm ausgelöst:
&active=6
->{"val":"6"}
- PIR ausgelöst & Alarmbereich 1 ausgelöst:
&active=7
->{"val":"7"}
- PIR ausgelöst & Alarmbereich 2 ausgelöst:
&active=8
->{"val":"8"}
- PIR ausgelöst & Alarmbereich 3 ausgelöst:
&active=9
->{"val":"9"}
- PIR ausgelöst & Alarmbereich 4 ausgelöst:
&active=10
->{"val":"10"}
- Manual trigger (cmd=pushhostalarm):
&active=99
->{"val":"99"}
Erkanntes Objekt
MQTT Topic: alarm/triggered/object
- Person:
&object=1
->{"val":"1"}
- Fahrzeug:
&object=2
->{"val":"2"}
- Person + Fahrzeug:
&object=3
->{"val":"3"}
- Tier:
&object=4
->{"val":"4"}
- Person + Tier:
&object=5
->{"val":"5"}
- Tier + Fahrzeug:
&object=6
->{"val":"6"}
Beide Topics werden 5 Sekunden, nachdem sie ausgelöst wurden, auf
{"val": "0"}
zurückgesetzt.
Smarthome-Integration
Fügen Sie nun MQTT-In-Node zu Node-RED hinzu und abonnieren Sie sie zu den Topics alarm/triggered
und alarm/triggered/object
:
JSON Flow Export:
[{"id":"54afb9abe15aff3e","type":"mqtt in","z":"ba3a4343d1d61c4f","name":"alarm/ausgelöst","topic":"cameras/120/status/alarm/ausgelöst","qos":"0","datatype":"auto-detect","broker":"46447b87141376a9","nl":false,"rap":true,"rh":0,"inputs":0,"x":100,"y":880,"wires":[["ffef0f0ce85fc1d3"]]},{"id":"b8f8da9b44a42bef","type":"mqtt in","z":"ba3a4343d1d61c4f","name":"alarm/ausgelöst/object","topic":"cameras/120/status/alarm/ausgelöst/object","qos":"1","datatype":"auto-detect","broker":"46447b87141376a9","nl":false,"rap":true,"rh":0,"inputs":0,"x":120,"y":940,"wires":[["016b47c77d7214df"]]},{"id":"ffef0f0ce85fc1d3","type":"debug","z":"ba3a4343d1d61c4f","name":"MQTT Alarmserver","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":880,"wires":[]},{"id":"016b47c77d7214df","type":"debug","z":"ba3a4343d1d61c4f","name":"MQTT Alarmserver","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":940,"wires":[]},{"id":"46447b87141376a9","type":"mqtt-broker","name":"INSTAR MQTTv5 Broker","broker":"192.168.2.120","port":"1883","tls":"769e462e1dcaf995","clientid":"Node-RED","autoConnect":true,"usetls":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"birthTopic":"nodered/lwt","birthQos":"1","birthRetain":"false","birthPayload":"{\"val\":\"alive\"}","birthMsg":{"contentType":"application/json"},"closeTopic":"nodered/lwt","closeQos":"1","closeRetain":"false","closePayload":"{\"val\":\"offline\"}","closeMsg":{"contentType":"application/json"},"willTopic":"nodered/lwt","willQos":"1","willRetain":"false","willPayload":"{\"val\":\"dead\"}","willMsg":{"contentType":"application/json"},"userProps":"","sessionExpiry":""},{"id":"769e462e1dcaf995","type":"tls-config","name":"192.168.2.120","cert":"","key":"","ca":"","certname":"client.crt","keyname":"client.key","caname":"ca.crt","servername":"","verifyservercert":false,"alpnprotocol":""}]
Wenn Sie den Test-CGI-Befehl verwenden, sehen Sie zunächst den Auslöser und die Objektvariable, die Sie an den Befehl angehängt haben. Und nach 5s
werden beide Werte auf 0
zurückgesetzt: