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

Beachten Sie bitte

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

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

Testen des INSTAR Alarmservers

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 mit 215 nicht ausgelöst werden konnte, weil etwas ihn blockiert. Ist der Alarmserver für den Auslöser, den Sie zu benutzen versuchen, unterdrückt? Siehe as_area, as_io, usw. (siehe CGI Dokumentation)

Testen des INSTAR Alarmservers

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:

Testen des INSTAR Alarmservers

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:

Testen des INSTAR Alarmservers

Sie können nun die angehängten URL-Abfragen extrahieren und in Ihre Node-RED-Flows einspeisen:

Testen des INSTAR Alarmservers

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

Testen des INSTAR Alarmservers

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:

Testen des INSTAR Alarmservers

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:

Testen des INSTAR Alarmservers