NEWS
Blue Iris v5 mit INSTAR MQTT Kameras
-
Die Version 5 von Blue Iris verfügt jetzt über eine MQTT-Schnittstelle, über die Sie mit einigen Admin Commands die Kontrolle über die Software mit ioBroker übernehmen können.
Verbinden Sie Blue Iris mit Ihrem Broker
Ich verwende einen MQTT-Broker/Kamera - aber man kann jeden MQTT-Broker im Netzwerk verwenden, um Blue Iris mit dem ioBroker zu verbinden. Den MQTT Service kann man in den BlueIris Software Einstellungen aktivieren (Registerkarte Digital IO and IoT) :
Konfiguration von Blue Iris auf der linken Seite und INSTAR MQTT Broker-Einstellungen auf der rechten Seite. Die Kamera ist so konfiguriert, dass sie als Broker auf der IP
192.168.2.111
auf Port1883
arbeitet.MQTT Alarm Service
Ich kann jetzt mit der rechten Maustaste auf das Live-Video meiner Kameras klicken und Kameraeinstellungen aus dem Pop-up-Menü in Blue Iris wählen. Auf der Registerkarte Alarme, im Abschnitt Aktionen findet man den Button On alert.... Hier können wir die Aktion einstellen, die ausgeführt werden soll, wenn von dieser Kamera in Blue Iris ein Alarm ausgelöst wird - klicken Sie auf das Symbol + unten links, um Webanfrage oder MQTT als die Aktion hinzuzufügen:
Hier kann man ein MQTT-Topic und einen Payload für den MQTT Alarm Service einstellen. Das Topic kann man frei wählen. Für den Payload empfehle ich die Verwendung von
1
oderON
. Danach speichern und zurück zur Registerkarte Alarme. Hier kann man jetzt ON reset ... auswählen (rechts neben ON alert...), um ein MQTT-Topic und den Payload beim Beenden des Alarmzustandes festzulegen. Ich empfehle die Verwendung des gleichen MQTT-Topics wie oben - aber diesmal mit dem Payload0
oderOFF
.Wenn man ioBroker mit dem MQTT Broker verbunden hat, taucht dieses MQTT Topic jetzt bei Alarm im Objektbaum als Datenpunkt auf.
Verbindung zwischen Blue Iris und ioBroker
Wir können jetzt auf diesen Datenpunkt im ioBroker zugreifen und ein kleines Blockly-Script schreiben, um solche Ereignisse zu behandeln. Ich möchte dieses Ereignis nun nutzen, um die Kamera in in Blue Iris in die Vollbildansicht zu schalten, wenn sie einen Alarm ausgelöst wurde. Dies kann ich mit dem BlueIris Admin Befehl Topic
BlueIris/admin
und den beiden Payloadcamera=black&fullscreen=1
undcamera=black&escape
tun.black
in diesen Payload ist der Kurzname der Kamera, den ich dieser Kamera in Blue Iris zugewiesen habe - bitte ersetzen durch den Kurznamen deiner Kamera.Wenn das MQTT-Topic
BlueIris/MotionAlarm/8015black/
mit dem Payload 1 aktualisiert wird, wechselt die Kamera mit dem Kurznamenblack
in den Vollbildmodus. Sie fällt zurück in die Standard-Multiview-Ansicht, sobald das Topic wieder auf0
aktualisiert wird.Steuerung von BlueIris mit MQTT
Zusätzlich können wir den Rest der BlueIris Admin Befehl Topics verwenden, um die Kontrolle über BlueIris vom ioBroker Vis zu übernehmen - zum Beispiel können wir die Videoaufzeichnung für eine Kamera mit einem Radiobutton starten und stoppen.
Beginnen wir mit der Erstellung eines neuen Boolean Datenpunktes im ioBroker, der den Status der manuellen Aufzeichnung als
wahr
oderfalsch
kennzeichnen soll:Jetzt brauchen wir ein Skript, um eine Aufnahme zu starten, wenn der Datenpunkt wahr ist - das geht mit dem Admin-Topic-Payload
camera=black&manrec=1
. Stoppen beifalsch
geht dann mitcamera=black&manrec=0
(black
ist wieder der Kurzname meiner Kamera und muß angepasst werden):Jetzt kann man in der ioBroker Vis einen Radiobutton hinzufügen und diesem den Datenpunkt zuweisen:
-
Blockly Script
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="5:E8z%?$kF2:_228=Fsl" x="-937" y="-1112"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="7K},E#*On`zsq^jhPQ9v"> <field name="oid">mqtt.0.BlueIris.MotionAlarm.8015black</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="2%z$7WDJUl-dSz+miU(-"> <value name="IF0"> <block type="logic_compare" id="9]pjLD{[W^26TPYM6liS"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="-?/H,NwcYjPh~{p`fc`~"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="hKDWmg?WzR9@$Wo4RHj5"> <field name="TEXT">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="g@M?e*b1_8ezO{_(PUcP"> <mutation delay_input="false"></mutation> <field name="OID">mqtt.0.BlueIris.admin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="u2H{{k$7nO+({(J4,2,C"> <field name="TEXT">camera=black&fullscreen=1</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="}uq*%|F/Nt=*`rn`|hV4"> <value name="IF0"> <block type="logic_compare" id="|x2u0AR*aTmVC=lfROzF"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="In|(S^y0YVoVN#Y^[.5m"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="uC/+7LgdO]A`UdHW*sHC"> <field name="TEXT">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="K58]j^_|1M4|}D2aF?{u"> <mutation delay_input="false"></mutation> <field name="OID">mqtt.0.BlueIris.admin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="13|%(`^fM,_w499|gkt-"> <field name="TEXT">camera=black&escape</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> <block type="on_ext" id="Ei}KT7e($1cGLin{;UTm" x="-937" y="-812"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="ln]r4[0V5_L!]U5KPfb@"> <field name="oid">mqtt.0.Vis.BlueIris_Black_Recording</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id=")cMCX)J;8M59C5H`Rli!"> <value name="IF0"> <block type="logic_compare" id="t53#:CqYz.mr75mrlYA:"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="dltx$H=ML^odTRKTDg_|"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="91YBG0;5yLS/zYmx_;OE"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="PiTjfdeQA.nk^iRB#koj"> <mutation delay_input="false"></mutation> <field name="OID">mqtt.0.BlueIris.admin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id=")$.%lh([i}CH$zN+~]r7"> <field name="TEXT">camera=black&manrec=1</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="Im2Hbj,A0f3)]^CiE5]Z"> <value name="IF0"> <block type="logic_compare" id="WHPuRxbS%P[g|c(?/T)B"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="GqIv8M.dGKe%zW-(CzGz"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="PT)u9X[u)2vObE%^zBR4"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="!{Xp%f@G0yYXd$svb})Z"> <mutation delay_input="false"></mutation> <field name="OID">mqtt.0.BlueIris.admin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="F[;Bz;NO72gV|)$HN3Fu"> <field name="TEXT">camera=black&manrec=0</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
Was ich bisher noch nicht geschafft habe ist das Einbinden des Videos/Snapshots in der ioBroker Vis. BlueIris bietet das JPG und MJPEG URLs an:
http://192.168.2.112:8181/mjpg/cameraname http://192.168.2.112:8181/mjpg/Index http://192.168.2.112:8181/image/cameraname http://192.168.2.112:8181/image/Index
Womit man entweder das Kamerabild oder ein Indexbild - also eine Übersicht über alle Videoquellen in BlueIris - abgreifen kann. Gerade letzteres ist recht interessant - spart etwas Bandbreite alle Kameras in einem Bild zu beziehen, anstatt alle einzelnd abzugreifen.
Jedoch muß man hier eine basic authentication durchführen und das hinterlegen des Logins in der URL ist ja nicht mehr gestattet:
http://benutzer:kennwort@192.168.2.112:8181/image/Index
Man könnte das Bild über ein Skript abfragen - base64 enkodieren und dann als Datenpunkt hinterlegen
-
@mpolinowski Moin,
wollte eben das 2te Blockly mit der Aufnahmemöglichkeit nachbauen und da meine Kenntnisse nicht so gut sind, finde ich den Datenpunkt nicht.
Wo oder wie muss ich den einrichten?Im Voraus besten Dank
VG Robbie