ioBroker und INSTAR Alarmserver
Q: Wie kann ich den Alarmserver meiner Kamera mit dem IOBroker Client als Ziel-Web-Server, der auf Port 8087 mit dem Adapter Simple-API konfiguriert ist, nutzen?
A: Der für den Alarmserver benötigte Webhook kann über den Simple RESTful API Adapter eingerichtet werden:
Der Adapter wird konfiguriert auf allen Netzwerk-Schnittstellen (0.0.0.0
) auf dem Standard-Port 8087
zu lauschen:
Sie können testen ob der Dienst aktiv ist, indem Sie die folgende URL in Ihrem Browser aufrufen (tauschen Sie hier die IP 192.168.2.11
gegen die Adresse aus, auf der Ihr ioBroker läuft):
http://192.168.2.111:8087/help
Sie sollten darauf hin die folgende Antwort erhalten:
{
"getPlainValue": "http://192.168.2.111:8087/getPlainValue/stateID",
"get": "http://192.168.2.111:8087/get/stateID/?prettyPrint",
"getBulk": "http://192.168.2.111:8087/getBulk/stateID1,stateID2/?prettyPrint",
"set": "http://192.168.2.111:8087/set/stateID?value=1&prettyPrint",
"toggle": "http://192.168.2.111:8087/toggle/stateID&prettyPrint",
"setBulk": "http://192.168.2.111:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint",
"setValueFromBody": "http://192.168.2.111:8087/setValueFromBody?stateID1",
"objects": "http://192.168.2.111:8087/objects?pattern=system.adapter.admin.0*&prettyPrint",
"states": "http://192.168.2.111:8087/states?pattern=system.adapter.admin.0*&prettyPrint",
"search": "http://192.168.2.111:8087/search?pattern=system.adapter.admin.0*&prettyPrint",
"query": "http://192.168.2.111:8087/query/stateID1,stateID2/?dateFrom=2019-06-06T12:00:00.000Z&dateTo=2019-06-06T12:00:00.000Z&noHistory=false&prettyPrint"
}
Wir haben jetzt URLs über die wir Datenpunkte (Systemzustände) im ioBroker auslesen GET und ändern SET könne.
Anlegen des Datenpunktes
Als Datenpunkt können wir alle Einträge im Objektbaum des ioBrokers nutzen. Wir hatten in einem früheren FAQ bereits gezeigt wie man einen solchen Eintrag nutzt um die Kamera per CGI Befehle zu steuern:
Wenn Sie einen solchen Punkt bereits in Ihrer Objekte Liste haben, können Sie diesen im weiteren nutzen, um über den Alarmserver der Kamera 2 einen Zustand auf Kamera 1 zu schalten und umgekehrt. Anwendungsbeispiele dafür finden Sie uin unserer ioBroker Übersicht.
Im folgenden möchten wir die MQTT Schnittstelle der INSTAR Full HD Kameras nutzen, um das das folgende Scenario umzusetzen.
- Kamera 1 erkennt eine Bewegung und löst Alarm aus und beginnt mit der Alarmaufnahme.
- Daraufhin kontaktiert der Alarmserver der Kamera 1 die ioBroker REST API und schaltet eine Variable.
- Das wiederum soll Kamera 2 von der Ruheposition 1 in Position 2 fahren lassen, damit wie sehen können was auf Kamera 1 den Alarm ausgelöst hat. Sollte sich weiterhin eine Person im Erfassungsbereich der Position 2 befinden, wird die Bewegungserkennung anschlagen und ebenfalls ein Video aufnehmen.
- Nach Ablauf einer einstellbaren Zeit fährt Kamera 2 wieder in die Ruheposition zurück.
In der ioBroker MQTT Anleitung können Sie nachlesen, wie Sie z.B. MQTT.fx nutzen können um das benötigte MQTT Topic zum ioBroker Objekt Baum hinzuzufügen, e.g. instar/10D1DC21F5DB/features/ptz/preset/raw
:
Um den Zustand über die REST API abzufragen können Sie die folgenden URL verwenden:
http://192.168.2.111:8087/get/mqtt.0.instar.10D1DC21F5DB.features.ptz.preset.raw
Die Antwort, die Sie erhalten schaut dann wie folgt aus:
{"val":0,"ack":true,"ts":1580373308245,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1580373348378,"common":{"name":"instar/10D1DC21F5DB/features/ptz/preset/raw","write":true,"read":true,"role":"variable","desc":"mqtt client variable","type":"number"},"native":{"topic":"instar/10D1DC21F5DB/features/ptz/preset/raw"},"type":"state","_id":"mqtt.0.instar.10D1DC21F5DB.features.ptz.preset.raw"}
Sie sehen, dass der Wert (value) zur Zeit auf 0
steht - {"val":"0"}
. Das bedeutet, die Kamera befindet sich zur Zeit in der Ruheposition 1
. Um sie auf Position 2
zu schwenken können wir die folgende URL in unserem Browser aufrufen:
http://192.168.2.111:8087/set/mqtt.0.instar.10D1DC21F5DB.features.ptz.preset.raw?value=1
Das setzen des Wertes der Variable auf 1
lässt die Kamera Position 2
anfahren und Sie erhalten die folgende Bestätigung im Browser:
{"id":"mqtt.0.instar.10D1DC21F5DB.features.ptz.preset.raw","value":1,"val":1}
Alarmserver Konfiguration
Jetzt sind wir in der Lage die Ausrichtung der Kamera 2 per HTTP Request zu ändern. Um diese Aufgabe von Kamera 1 übernehmen zu lassen, müssen wir die benötigte URL in der Konfiguration des Alarmservers hinterlegen:
Die URL muss in der Alarmserver Maske von Kamera 1 wie folgt zerlegt werden:
- Alarmserver Adresse:
192.168.2.111
- Serverport:
8087
- Serverpfad:
/set/mqtt.0.instar.10D1DC21F5DB.features.ptz.preset.raw
- Parameter 1:
value
=1
Jetzt können Sie die Alarmbereiche und / oder den internen PIR Sensor scharf stellen, um bei einer Bewegung vor der Kamera den Alarmserver auszulösen.
In den PTZ Einstellungen von Kamera 2 muß dann noch die Ruheposition (Parkposition) auf Position 1
gesetzt werden. Damit ist sichergestellt, dass die Kamera immer wieder in ihre eigentliche Position zurückkehrt.