Software

Home Automation

Logitech Harmony with ioBroker

Installieren Sie den Fakeroku-Adapter in ioBroker

Wechseln Sie zum Adapter-Reiter und suchen Sie nach fakeroku, um den Fakeroku-Emulator zu finden und zu installieren. Sobald der Adapter installiert ist, konfigurieren Sie ihn so, dass er die IPv4-Schnittstelle Ihres Host-Rechners verwendet (belassen Sie es nicht bei 0.0.0.0 !) - der Adapter zeigt die IP-Adresse Ihres Hosts an. In meinem Fall ist dies 192.168.2.111. Sie können die Multicast-IP, den Gerätenamen und den Serviceport auf ihren Standardwerten belassen:

Logitech Harmony MQTT Control with ioBroker

Sie können jetzt wieder zum allgemeinen Tutorial zum Hinzufügen des eben erstellten virtuellen Geräts zu Ihrem Logitech Harmony Hub wechseln.

INSTAR MQTT Setup

Das virtuelle Gerät Fakeroku gibt Ihnen nun Zugriff auf die folgenden Tasten Ihrer Harmony-Fernbedienung:

Logitech Harmony MQTT Control with ioBroker

Zum Beispiel sendet Button 1 die Payload-Zeichenkette Rev an den Adapter, wenn Sie ihn drücken.

Logitech Harmony MQTT Control with ioBroker

Drücken Sie alle verfügbaren Schaltflächen und aktualisieren Sie den ioBroker Objektbaum, um die Objekte zu sehen, mit denen wir nun beginnen können zu arbeiten:

  1. Rev - Nicht genutzt
  2. Play - Starte eine x Sekunden Videoaufnahme
  3. Fwd - Nicht genutzt
  4. Home - Deaktiviere den Alarm
  5. Up - Bewege die Kamera einen Schritt nach oben
  6. Right - Bewege die Kamera einen Schritt nach rechts
  7. Down - Bewege die Kamera einen Schritt nach unten
  8. Left - Bewege die Kamera einen Schritt nach links
  9. Select - Stoppe die Bewegung der Kamera
  10. Back - Aktiviere den Alarm
  11. Info - Auslöser aktivierte Alarm-Aktionen

Wir müssen jetzt einen Adapter hinzufügen, der es uns ermöglicht, ein Skript zu schreiben, damit wir eine MQTT-Aktualisierung für unsere Kamera auslösen können, wenn wir eine Nachricht von unserer Harmony-Fernbedienung erhalten. Ich würde empfehlen, den Node-RED Adapter in ioBroker zu verwenden. Sobald Sie ihn eingerichtet haben, können Sie unser Node-RED-Tutorial verwenden um Ihre Kamera anzubinden (siehe auch INSTAR MQTT & Node-RED):

Logitech Harmony MQTT Control with ioBroker

Alternativ können Sie den Script Engine Adapter installieren und die Arbeit mit Blockly erledigen:

Logitech Harmony MQTT Control with ioBroker

Logitech Harmony MQTT Control with ioBroker

Hier können Sie nun den JSON-Code vom Ende dieses Artikels importieren, um die folgenden Codeblöcke hinzuzufügen:

Logitech Harmony MQTT Control with ioBroker

Schwenken und Neigen der Kamera

Diese Sequenz hört auf die Schaltflächen oben, rechts, unten und links und aktualisiert das entsprechenden Pan&Tilt MQTT-Topic auf Ihrer Kamera:

Logitech Harmony MQTT Control with Node-RED

Schalten Sie Ihren Alarm scharf, bevor Sie Ihr Haus verlassen

Diese Sequenz aktiviert/deaktiviert den Alarm auf Ihrer Kamera. Wenn sie scharf gestellt ist, behält Ihre Kamera Ihr Wohnzimmer im Auge. Wenn der Alarm deaktiviert wird, dreht sich die Kamera zur Seite und deaktiviert alle Bewegungserkennungsbereiche. Hinweis: Wenn Sie den kamerainternen PIR-Bewegungssensor in Kombination mit diesen Erfassungsbereichen verwenden, müssen Sie den Sensor ebenfalls deaktivieren, damit dies funktioniert:

Logitech Harmony MQTT Control with Node-RED

Starten Sie eine manuelle Videoaufzeichnung

Diese Sequenz ermöglicht es Ihnen, eine manuelle Videoaufnahme zu starten, wenn Sie die Play-Taste auf Ihrer Fernbedienung drücken. Beachten Sie, dass der Verzögerungsknoten derzeit auf 30 Sekunden eingestellt ist. Sie können die Länge der Aufnahme durch Ändern dieses Wertes anpassen:

Logitech Harmony MQTT Control with Node-RED

Einen Alarm auslösen

Und nun zur einfachsten Sequenz dieses Flows. Durch Drücken der Taste Info wird ein Alarm auf Ihrer Kamera ausgelöst. Dieses Ereignis löst alle aktiven Alarmaktionen auf Ihrer Kamera aus - wie z.B. die Videoaufzeichnungen, E-Mail-Benachrichtigungen, FTP/Cloud-Uploads usw.:

Logitech Harmony MQTT Control with Node-RED

Schlussfolgerung

Dies ist nur ein kleiner Überblick aller verfügbaren MQTT-Topics auf Ihrer Kamera. Alle diese Topics können mit einem Tastendruck auf Ihrer Logitech Harmony-Fernbedienung kombiniert und gesendet werden. Weitere Informationen zur Verwendung der INSTAR MQTT-Schnittstelle mit ioBroker finden Sie in unserem vollständigen Tutorial.

Blockly JSON Export

<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="comment" id="8^U1_,dk,ef6^t^|JZ;+" x="-38" y="-113">
    <field name="COMMENT">Pan&amp;Tilt</field>
    <next>
      <block type="on_ext" id="L[B8uguVD|3@=nC}NO~3">
        <mutation items="1"></mutation>
        <field name="CONDITION">ge</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="qQHP{$c4InRp$o6vp@BB">
            <field name="oid">fakeroku.0.ioBroker.keys.Up</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="control" id="g@M?e*b1_8ezO{_(PUcP">
            <mutation delay_input="false"></mutation>
            <field name="OID">mqtt.0.instar.local.features.ptz.movestep.raw</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="u2H{{k$7nO+({(J4,2,C">
                <field name="TEXT">up</field>
              </block>
            </value>
          </block>
        </statement>
        <next>
          <block type="on_ext" id="e}$7(hV3E%Bx9}kmKFca">
            <mutation items="1"></mutation>
            <field name="CONDITION">gt</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="@+%)|7?Tc?G=;j(`i@PX">
                <field name="oid">fakeroku.0.ioBroker.keys.Down</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="control" id="d|K@:1dO!{[K{LTTP0mj">
                <mutation delay_input="false"></mutation>
                <field name="OID">mqtt.0.instar.local.features.ptz.movestep.raw</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="text" id="2b.9ZC^jUqK49w{Advj=">
                    <field name="TEXT">down</field>
                  </block>
                </value>
              </block>
            </statement>
            <next>
              <block type="on_ext" id="44Fs~A5pQ8,*n#TG]ogM">
                <mutation items="1"></mutation>
                <field name="CONDITION">gt</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="-nPyi);a$Bo}fA5$S.|w">
                    <field name="oid">fakeroku.0.ioBroker.keys.Left</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="control" id="jip7o1U:49HL|mJ}*`;t">
                    <mutation delay_input="false"></mutation>
                    <field name="OID">mqtt.0.instar.local.features.ptz.movestep.raw</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="text" id="~q*ow@aD`6;OXnXp9_#]">
                        <field name="TEXT">left</field>
                      </block>
                    </value>
                  </block>
                </statement>
                <next>
                  <block type="on_ext" id="S%mT*RL0iur1u/~URa5T">
                    <mutation items="1"></mutation>
                    <field name="CONDITION">gt</field>
                    <field name="ACK_CONDITION"></field>
                    <value name="OID0">
                      <shadow type="field_oid" id="QQ|X]mXDJ1nlt~X8X*I/">
                        <field name="oid">fakeroku.0.ioBroker.keys.Right</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="control" id="7hy/D$Kc;6J47RUilQXM">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">mqtt.0.instar.local.features.ptz.movestep.raw</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="text" id="#-yvwy4/W(Iv?-S9Mv^+">
                            <field name="TEXT">right</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
  <block type="comment" id="!5:tmZx6,dztS)h%[*8u" x="613" y="-113">
    <field name="COMMENT">Armed/Disarmed</field>
    <next>
      <block type="on_ext" id="i!23)Yl3-5$$.sejbmp_">
        <mutation items="1"></mutation>
        <field name="CONDITION">gt</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="tzCjnGT_Ez(9hR};yXOF">
            <field name="oid">fakeroku.0.ioBroker.keys.Home</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="control" id="Vk{M_q)$w9t*Mz/zy2RA">
            <mutation delay_input="false"></mutation>
            <field name="OID">mqtt.0.instar.local.features.ptz.preset.raw</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="A)LBw=FpoE6Y[vPX;O!!">
                <field name="TEXT">0</field>
              </block>
            </value>
            <next>
              <block type="control" id="tS~GsJye~?T(JP;6Gb#i">
                <mutation delay_input="false"></mutation>
                <field name="OID">mqtt.0.instar.local.alarm.area1.enable.raw</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="text" id="mux/WG[~#y7c,dRz.r@0">
                    <field name="TEXT">0</field>
                  </block>
                </value>
                <next>
                  <block type="control" id="F5Nz|ow2PC3:9%QcrAu6">
                    <mutation delay_input="false"></mutation>
                    <field name="OID">mqtt.0.instar.local.alarm.area2.enable.raw</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="text" id="6a:*b1o-q.[T3d(pWU[r">
                        <field name="TEXT">0</field>
                      </block>
                    </value>
                    <next>
                      <block type="control" id="qthuoOsu2lMx-+!J`-b`">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">mqtt.0.instar.local.alarm.area3.enable.raw</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="text" id="{()9t/y6#0Sm0OAKoC3T">
                            <field name="TEXT">0</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="s=Sq;fBh=fA8f[#:I-h}">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">mqtt.0.instar.local.alarm.area4.enable.raw</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="text" id="!1-dhH:@0^h?U[^FEV)D">
                                <field name="TEXT">0</field>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
        <next>
          <block type="on_ext" id="KQOr`fV9fb|5u$J#Afs|">
            <mutation items="1"></mutation>
            <field name="CONDITION">gt</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="B?-au^pP[51TLqvw:;3_">
                <field name="oid">fakeroku.0.ioBroker.keys.Back</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="control" id="tcQJu_~KY^*xk+LMclxe">
                <mutation delay_input="false"></mutation>
                <field name="OID">mqtt.0.instar.local.features.ptz.preset.raw</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="text" id="RUTkXYszfDj__Z_xLRP]">
                    <field name="TEXT">1</field>
                  </block>
                </value>
                <next>
                  <block type="control" id=".nqhS?=t]X?:Iw*N;yi8">
                    <mutation delay_input="false"></mutation>
                    <field name="OID">mqtt.0.instar.local.alarm.area1.enable.raw</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="text" id="H`Irv[C~yr]D.(Dud,s!">
                        <field name="TEXT">1</field>
                      </block>
                    </value>
                    <next>
                      <block type="control" id="{@T2R}:y[tVE3RmDJGyZ">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">mqtt.0.instar.local.alarm.area2.enable.raw</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="text" id="f72fIjd@pgEmbpkN*wRD">
                            <field name="TEXT">1</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="X[d_,-{4-?HtN_u^.lpo">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">mqtt.0.instar.local.alarm.area3.enable.raw</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="text" id="Y@n%b]+$BX2m|?6H;i(*">
                                <field name="TEXT">1</field>
                              </block>
                            </value>
                            <next>
                              <block type="control" id="g6;}H)hk]Ln(@8fJMVFm">
                                <mutation delay_input="false"></mutation>
                                <field name="OID">mqtt.0.instar.local.alarm.area4.enable.raw</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="text" id="=^gtJ-l7v-sKpl7r{:Js">
                                    <field name="TEXT">1</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </next>
      </block>
    </next>
  </block>
  <block type="comment" id="Ej}EwLZxa*uxjJp@h`x3" x="-37" y="463">
    <field name="COMMENT">Manual Recording</field>
    <next>
      <block type="on_ext" id="lT^wG1zJA[jTZ}seS1X?">
        <mutation items="1"></mutation>
        <field name="CONDITION">ge</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="$:sE0PF+cj*=@nWe$mDw">
            <field name="oid">fakeroku.0.ioBroker.keys.Play</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="control" id="k,*ua/iJiGU=kKMK9aNN">
            <mutation delay_input="false"></mutation>
            <field name="OID">mqtt.0.instar.local.features.manualrec.start.raw</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="{WUob~?`ZYTi{y/a1!Zm">
                <field name="TEXT">60</field>
              </block>
            </value>
            <next>
              <block type="control" id="=-sj.d3H/rmDw+{LNgp}">
                <mutation delay_input="true"></mutation>
                <field name="OID">mqtt.0.instar.local.features.manualrec.stop.raw</field>
                <field name="WITH_DELAY">TRUE</field>
                <field name="DELAY_MS">30</field>
                <field name="UNIT">sec</field>
                <field name="CLEAR_RUNNING">FALSE</field>
                <value name="VALUE">
                  <block type="text" id="#q3EP{m}T6$=|Jh9dT*f">
                    <field name="TEXT">off</field>
                  </block>
                </value>
              </block>
            </next>
          </block>
        </statement>
      </block>
    </next>
  </block>
  <block type="comment" id="J]FEoC33xQY(@kf;+wMz" x="-38" y="687">
    <field name="COMMENT">Trigger Alarm</field>
    <next>
      <block type="on_ext" id="Hdx}6@U[djCs$6ChcSO?">
        <mutation items="1"></mutation>
        <field name="CONDITION">ge</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="H$d@+hd{G*}azTCiGg%$">
            <field name="oid">fakeroku.0.ioBroker.keys.Info</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="control" id="_jUfMn2vQn#qO7bPWU2#">
            <mutation delay_input="false"></mutation>
            <field name="OID">mqtt.0.instar.local.alarm.pushalarm.raw</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="32?hPl+U(C[i:2hzhWdP">
                <field name="TEXT">1</field>
              </block>
            </value>
          </block>
        </statement>
      </block>
    </next>
  </block>
</xml>
INSTAR Forum

Diskutieren Sie diesen Artikel im INSTAR Forum !