Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Logitech Harmony mit MQTT Kamera

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Logitech Harmony mit MQTT Kamera

    This topic has been deleted. Only users with topic management privileges can see it.
    • mpolinowski
      mpolinowski last edited by

      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:

      ioBroker_Logitech_Harmony_01.png

      Jetzt kann man in der Harmony Smartphone App nach neuen Geräten im Netzwerk suchen. Der Adapter wird einem dort als Roku 3 angezeigt werden. Noch eine Aktivität hinzufügen und fertig.

      ioBroker Einrichten

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

      ioBroker_Logitech_Harmony_02.png

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

      ioBroker_Logitech_Harmony_03.png

      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

      Ich werde dann jetzt den INSTAR MQTT Dienst meiner Kamera nutzen um die oben beschriebenen Aktionen auszulösen wenn eine Taste auf der Fernbedienung gedrückt wird.

      Dafür kann z.B. den Node-RED Adapter installieren und danach diesen Flow in der Node-RED Oberfläche importieren.

      Alternativ kann man den Script Engine Adapter installieren und die Arbeit mit Blockly erledigen. Hier können Sie nun den JSON-Code vom Ende dieses Posts importieren, um die damit folgenden Codeblöcke hinzuzufügen:

      ioBroker_Logitech_Harmony_07.png

      R 1 Reply Last reply Reply Quote 0
      • mpolinowski
        mpolinowski last edited by

        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>
        
        1 Reply Last reply Reply Quote 0
        • R
          RoPaBer @mpolinowski last edited by RoPaBer

          Hallo @mpolinowski,
          hast Du eine Info darüber, ob noch weitere Tasten mit dem fakeroku Adapter genutzt werden können? Ich habe alle Tasten auf der Harmony Companion Fernbedienung (die kleinere Variante ohne Touchscreen) ausprobiert, aber es kommen auch nur in etwa die von Dir im Screenshot genannten Tasten unter den Objekten des Adapters an.

          Bei mir sind es diese Tasten:
          09d45f34-4884-40fb-8968-6a12cf0b1219-grafik.png

          Man kann sich wohl zwar behelfen, indem man mehrere Instanzen vom fakeroku-Adapter nutzt, aber sind es wirklich nur diese wenigen Tasten?

          mpolinowski 1 Reply Last reply Reply Quote 0
          • Elektroniker86
            Elektroniker86 last edited by

            Hi, weiss hier einer von euch wie man die Multicast IP einstellen muss das der Logotech Hub den Fakeroku findet ?
            Mein ioBroker und Hub sind in unterschiedlichen IP Adressbereichen, die aber miteinander Kommunizieren dürfen (Unifi Komponenten)
            ioBroker: 192.168.1.20
            Hub: 192.100.1.16

            mpolinowski 1 Reply Last reply Reply Quote 0
            • mpolinowski
              mpolinowski @RoPaBer last edited by

              Hallo @RoPaBer,

              hatte mich auch etwas irritiert - aber scheint eine Limitierung des Fakeroku Adapters zu sein. Ich habe diese Einbindung sowohl für ioBroker als auch Node-RED und Home Assistant gemacht. Überall das gleiche Bild.

              Hätte auch gerne das vollständige Keypad zur Auswahl.

              R 1 Reply Last reply Reply Quote 0
              • mpolinowski
                mpolinowski @Elektroniker86 last edited by

                @Elektroniker86

                Das war auch eine weitere Besonderheit des Adapters. In deinem Fall müsste man eigentlich 0.0.0.0 als Netzwerke Interface wählen - um so auf allen Schnittstelle zu lauschen. Aber das geht nicht.

                Ich musste explizit das Interface angeben auf dem der Adapter läuft - d.h. die Kommunikation wird nicht über mehrere Subnetze laufen. Es sei denn man kann das im Router konfigurieren (IP Masquerade).

                Ich denke mit der Multicast IP hat es nichts zu tun, sondern nur damit, dass der Adapter alle anderen Schnittstellen ignoriert. Oder ist diese Ausage falsch?

                1 Reply Last reply Reply Quote 0
                • R
                  RoPaBer @mpolinowski last edited by RoPaBer

                  Hallo @mpolinowski,

                  danke für die schnelle Rückmeldung! Bin neu hier und positiv überrascht.
                  Mit der Tastenbeschränkung kann ich auskommen, wenn ich auch noch den Harmony-Adapter zur Hilfe nehme - allerdings wollte ich das eigentlich vermeiden. Bisher sehe ich für diesen Adapter keine andere Verwendung, als dass man den aktuellen Status der Activity abfragen kann. Die unter dem jeweiligen Gerät verfügbaren Tasten-Objekte verstehe ich irgendwie nicht: Ich konnte jedenfalls keine Trigger darauf anwenden.

                  Konkret geht es mir darum, mit der Logitech Fernbedienung Geräte anzusteuern, die z.B. nur über eine serielle Schnittstelle verfügen. Abhängig von der jeweiligen Activity sind jeweils andere Funktionen auf derselben Taste der Fernbedienung auszuführen, so dass ich mit den paar Fakeroku-Tasten schnell an die Grenze komme und dann wohl zusätzlich den Harmony-Adapter nutzen muss.

                  1 Reply Last reply Reply Quote 0
                  • mpolinowski
                    mpolinowski last edited by

                    Den Harmony Adapter habe ich nicht ausprobiert. Aber ich denke dass es das gleiche ist wie der Harmony Node in Node-RED. Und damit bin ich auch nicht weitergekommen. Wie du bereits sagst, kann man damit scheinbar keine Aktionen auslösen, sondern nur den State auslesen.

                    Aber es ist kein Problem mehrere Instanzen von Fakeroku gleichzeitig zu verwenden. Bei mir läuft es gerade im ioBroker, in Node-RED und unter Home Assistant - 3 Instanzen für drei unterschiedlich Kameras zwischen denen man schnell per Swipe Geste wechseln kann.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    855
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    1164
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo