INSTAR Deutschland GmbH

BlueIris MQTT mit 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.

Blue Iris for your INSTAR IP Camera

Wir können jetzt auf diesen Datenpunkt im ioBroker zugreifen und ein kleines Blockly-Script schreiben, um solche Ereignisse zu behandeln:

Blue Iris for your INSTAR IP Camera

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.

Blue Iris for your INSTAR IP Camera

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:

Blue Iris for your INSTAR IP Camera

Wählen Sie diese Schaltfläche in Ihrem Blockly Script:

Blue Iris for your INSTAR IP Camera

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.

Blue Iris for your INSTAR IP Camera

Fügen Sie nun Ihrem ioBroker Vis ein Optionsfeld hinzu und weisen Sie ihm den Datenpunkt zu, den Sie im ersten Schritt erstellt haben:

Blue Iris for your INSTAR IP Camera

Jetzt beginnt BlueIris mit der Aufnahme, wenn Sie den Schalter in der Vis umlegen:

Blue Iris for your INSTAR IP Camera

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&amp;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&amp;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&amp;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&amp;manrec=0</field>
                  </block>
                </value>
              </block>
            </statement>
          </block>
        </next>
      </block>
    </statement>
  </block>
</xml>