BlueIris v5 with ioBroker
MQTT Alarmserver
Wir haben bereits BlueIris eingerichtet, um ein MQTT-Topic zu aktualisieren, wenn von unserer Kamera (Kurzname black
) ein Alarm ausgelöst wird. Dieses MQTT-Topic war BlueIris/MotionAlarm/8015black/
und die Nutzlast dafür ist 1
zu Beginn des Alarmereignisses und 0
nach Beendigung der Ereignisse.
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 die Vollbildansicht zu schalten, wenn sie einen Alarm ausgelöst hat. Dies kann ich mit dem BlueIris Admin Befehl Topic BlueIris/admin
und den beiden Nutzlasten camera=black&fullscreen=1
und camera=black&escape
tun.
black
in diesen Nutzlasten ist der Kurzname der Kamera, den ich dieser Kamera in BlueIris zugewiesen habe - bitte ersetzen Sie ihn durch den Kurznamen Ihrer Kamera.
Wenn das MQTT-Topic BlueIris/MotionAlarm/8015black/
mit der Nutzlast 1
aktualisiert wird, wechselt die Kamera mit dem Kurznamen black
in den Vollbildmodus. Sie fällt zurück in die Standard-Multiview-Ansicht, sobald das Thema wieder auf 0
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 Sie mit der Erstellung eines neuen Boolean Datapoint im ioBroker, der den Status der manuellen Aufzeichnung als wahr
oder falsch
kennzeichnen soll:
Wählen Sie diese Schaltfläche in Ihrem Blockly Script:
Und verwenden Sie ihn, um eine Aufnahme, wenn der Datenpunkt wahr
ist, mit der Admin-Topic-Nutzlast camera=black&manrec=1
zu starten und stoppen Sie sie bei falsch
mit camera=black&manrec=0
:
black
in diesen Nutzlasten ist der Kurzname der Kamera, den ich dieser Kamera in BlueIris zugewiesen habe - bitte ersetzen Sie ihn durch den Kurznamen Ihrer Kamera.
Fügen Sie nun Ihrem ioBroker Vis ein Optionsfeld hinzu und weisen Sie ihm den Datenpunkt zu, den Sie im ersten Schritt erstellt haben:
Jetzt beginnt BlueIris mit der Aufnahme, wenn Sie den Schalter in der Vis umlegen:
Blockly Script Export
<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>
Diskutieren Sie diesen Artikel im INSTAR Forum !