BlueIris v5 with ioBroker
MQTT Alarmserver
We already set up BlueIris to update an MQTT Topic when an alarm is triggered by our camera (shortname black
). This MQTT Topic is BlueIris/MotionAlarm/8015black/
and the payload is 1
at the beginning of the alarm event and 0
once the events ended.
We can now access this data point in ioBroker and write a small Blockly Script to handle such events:
I now want to use this event to switch the camera into Fullscreen View when it triggered an alarm. I can do this with the BlueIris Admin Command Topic BlueIris/admin
and the two payloads camera=black&fullscreen=1
and camera=black&escape
.
black
in those payloads is the camera short name that I assigned to this camera in BlueIris - please substitute it with your cameras short name.
When the MQTT Topic BlueIris/MotionAlarm/8015black/
is updated with the payload 1
the camera with the short name black
will switch into fullscreen. It falls back into the standard multiview once the topic is updated back to 0
.
Controlling BlueIris with MQTT
Additionally, we can use the rest of the BlueIris Admin Command Topics to take control over BlueIris from the ioBroker Vis - for example we can start and stop the video recording for a camera with a radio button.
Start by creating a new Boolean Datapoint in ioBroker that should signify the state of the manual recording as true
or false
:
Select this button inside your Blockly Script:
And use it to start a recording when it is true
with the Admin Topic payload camera=black&manrec=1
and stop it on false
with camera=black&manrec=0
:
black
in those payloads is the camera short name that I assigned to this camera in BlueIris - please substitute it with your cameras short name.
Now add a radio button to your ioBroker Vis and assign it the boolean datapoint you created in the first step:
Now BlueIris will start recording when you toggle the switch:
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>
Discuss this article on the INSTAR Forum !