Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Yet another HomeKit adapter

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Yet another HomeKit adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      loverz @w00dst0ck last edited by

      @w00dst0ck hab da eine Lösung für, bin aber erst in einigen Tagen wieder an meinem iobroker. Melde mich.

      w00dst0ck 1 Reply Last reply Reply Quote 0
      • L
        loverz @TheAriba last edited by

        @theariba das kommt mir komisch vor.
        Was macht das zugehörige iobroker Objekt? Nichts oder?
        Was passiert wenn du die Home-App killst?

        T 1 Reply Last reply Reply Quote 0
        • w00dst0ck
          w00dst0ck @loverz last edited by

          @loverz Dann sag ich jetzt schon mal Danke ☺️

          1 Reply Last reply Reply Quote 0
          • L
            loverz @w00dst0ck last edited by loverz

            @w00dst0ck so hier bin ich mit der Einbindung von HomematicIP in Homekit:

            Homekit Betriebsart:
            4432f513-7096-49ff-9506-4cd9735e9e5e-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
              <block type="on_ext" id="%m[LZ#HLD{N$0KpC;u^z" x="87" y="62">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="St|MNIqw-nvgF}z=xyov">
                    <field name="oid">knx.0.EG.Heizung.Bad_Temperatur_Soll</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id="#V[!^zrOJR#jhht-)_hL">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_compare" id="CJW^#tmBPbnTNIy];zF:">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="FRsC6ghriAIg-%CePkK#">
                            <field name="ATTR">val</field>
                            <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Soll</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="a2o+`ypo^?Z6hJ^7`}AW">
                            <field name="NUM">7</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="2WE_$Bl.hYW0f{ggWpM:">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="_K/{M.{RTL}_BjyufF2`">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="controls_if" id="%V2PHY@vfAj1kKzZZ4J-">
                        <mutation else="1"></mutation>
                        <value name="IF0">
                          <block type="logic_compare" id="XhWnw198nH$0FYbiM#.L">
                            <field name="OP">GT</field>
                            <value name="A">
                              <block type="get_value" id="cn%-*=qL+Zr(|ucA^GXm">
                                <field name="ATTR">val</field>
                                <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Soll</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="get_value" id="o4dyP@+k!XCPPWb*$7!M">
                                <field name="ATTR">val</field>
                                <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Ist</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id="3w|0ka2mD5[pLZl!*=,$">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="=bADj4AaPZ5}lMrJ:1J}">
                                <field name="NUM">1</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <statement name="ELSE">
                          <block type="control" id="eCn#jXxtKS|F^V8Ptl.M">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="LULQ0Y5gs.[:^IXryvJi">
                                <field name="NUM">3</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="on_ext" id="fxl%fTISCSz5hZgV4e8Z">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                    <field name="CONDITION">ne</field>
                    <field name="ACK_CONDITION"></field>
                    <value name="OID0">
                      <shadow type="field_oid" id="p=z-GndO5XZW5Mx^*AlQ">
                        <field name="oid">knx.0.EG.Heizung.Bad_Temperatur_Ist</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="|@z4v,oR0{A`dmLRghg`">
                        <mutation else="1"></mutation>
                        <value name="IF0">
                          <block type="logic_compare" id="yqmxN|0(8.E$4k[?EfB.">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value" id="My]s0U,U}l0$Mzfus([[">
                                <field name="ATTR">val</field>
                                <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Soll</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id=",su;S8!dI7e}J3XWB^m|">
                                <field name="NUM">7</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id="_n]Ak|m5e4;~Cr-.4rY8">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="oJLm0pLQN~J|.UT#{fX0">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <statement name="ELSE">
                          <block type="controls_if" id="7u~D+LuPft!C)q-$;g`E">
                            <mutation else="1"></mutation>
                            <value name="IF0">
                              <block type="logic_compare" id="y@8ZU=~Bomlwc]}T?Gw)">
                                <field name="OP">GT</field>
                                <value name="A">
                                  <block type="get_value" id="Q7`*JQz[-?-b#U13+(Xt">
                                    <field name="ATTR">val</field>
                                    <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Soll</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="get_value" id="HSjBgx[_B!.PVME#ZPex">
                                    <field name="ATTR">val</field>
                                    <field name="OID">knx.0.EG.Heizung.Bad_Temperatur_Ist</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="control" id="r9mfEjKgK:8:~Qmhdc@g">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id="jw,*ar|t@Jnc,Z+GP2Zy">
                                    <field name="NUM">1</field>
                                  </block>
                                </value>
                              </block>
                            </statement>
                            <statement name="ELSE">
                              <block type="control" id="kCwrXR*,OU~g0T68H~15">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">javascript.0.Variablen.Heizung.Betriebsart.Bad</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id="yPE?xZJ9WzoSg_^UXtI0">
                                    <field name="NUM">3</field>
                                  </block>
                                </value>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </xml>
            

            Homekit Ventilposition [hier habe ich den Wert "humidity" zweckentfremdet]:

            5734efd9-5eb8-46e9-b78b-8fe515ee364a-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
              <block type="on_ext" id="VY.r@5H22S4GM3vLjI^n" x="62" y="62">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="G|nKQ0g`Idp!Q@_JwdX9">
                    <field name="oid">hmip.0.devices.3014F711A0000393C99C0F1B.channels.1.valvePosition</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="control" id="?m`R+/MONWtx]s#A5@`/">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">javascript.0.Variablen.Heizung.Ventilposition.Bad</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="math_arithmetic" id="HYIFAeaozz[mj|b[iT~4">
                        <field name="OP">MULTIPLY</field>
                        <value name="A">
                          <shadow type="math_number" id="(gx=Qi~lo,9Y0BVdewCd">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="get_value" id="3|^f}}bXu42XN7T;~08[">
                            <field name="ATTR">val</field>
                            <field name="OID">hmip.0.devices.3014F711A0000393C99C0F1B.channels.1.valvePosition</field>
                          </block>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="Wr{z2Lo7+f/!#[OD-N??">
                            <field name="NUM">100</field>
                          </shadow>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </xml>
            

            Homekit Ventilstatus:
            527d1127-ae7c-4f93-b511-feb5c9f94a9b-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
              <block type="on_ext" id="tv$0!4E1vlk;3tyK$Y[]" x="62" y="62">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="|=N|6wW){`jH_91_.X#5">
                    <field name="oid">hmip.0.devices.3014F711A0000393C99C0F1B.channels.1.valvePosition</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id="-O=vEQDY(ShEs}gc*e2@">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_compare" id="D_9|1EP!/6xvq]~C5-/}">
                        <field name="OP">GT</field>
                        <value name="A">
                          <block type="get_value" id="^-EOpyE*nG,n)[tD_hOl">
                            <field name="ATTR">val</field>
                            <field name="OID">hmip.0.devices.3014F711A0000393C99C0F1B.channels.1.valvePosition</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="lav{cSqb[v8=!xFGfNmB">
                            <field name="NUM">0.01</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="aDLF]S`5zxhPU$Zp4OCw">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">javascript.0.Variablen.Heizung.Ventilstatus.Bad</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="okwUy9r)4[OJv6[85uEV">
                            <field name="NUM">1</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="control" id="kkXj$;AarM8/SSb)f`A,">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">javascript.0.Variablen.Heizung.Ventilstatus.Bad</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="IWKFK~-m#5/DzNO=RY.K">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </xml>
            

            Hier die benötigten Variablen:
            6587ec1a-d8a6-44da-8a04-0ddce35fc51d-image.png

            w00dst0ck 1 Reply Last reply Reply Quote 0
            • T
              TheAriba @loverz last edited by

              @loverz das Objekt macht nichts. Wenn ich die Home App kille dann wird nichts angezeigt. Also Home springt dann auch zurück.

              1 Reply Last reply Reply Quote 0
              • w00dst0ck
                w00dst0ck @loverz last edited by

                @loverz Vielen Dank für den Input.

                Der Lösungsansatz ist sicher funktional, sorgt aber dafür, dass ich hier 2 Stellen berücksichtigen muss.
                Am liebsten wäre mir ja eine Script Lösung direkt im YAHKA Adapter. Aber vermutlich geht das nicht.

                Werde dann übergangsweise ersmal Deine Blocky Lösung adaptieren.

                V 1 Reply Last reply Reply Quote 0
                • V
                  Videonisse @w00dst0ck last edited by Videonisse

                  @w00dst0ck sagte in Yet another HomeKit adapter:

                  Am liebsten wäre mir ja eine Script Lösung direkt im YAHKA Adapter. Aber vermutlich geht das nicht.

                  I'm not sure Yahka is the right place to solve this. If I understand what you need to achieve is it a "virtual" data point where the state/value is based on values from other data points (Off = 0; Heat = 1; Cool = 2).

                  In the long-term, you maybe also want to use this virtual DP in other ioBroker adapters, like for history and visualisation?

                  If yes, then it would probably be better if it was available as an Object in ioBroker. But I'm not sure if it can be realized based on an Alias with a script calculating what you want, or if it has to be stored in a User object.

                  I see the similar needs to calculate for example a second colour space for lights and have this available as a virtual data point/object for ioBroker Adapters to use when they don't support the native colour space used by the light device (RGB <-> HUE). To do this calculation in each Adapter is not effective.

                  w00dst0ck 1 Reply Last reply Reply Quote 0
                  • w00dst0ck
                    w00dst0ck @Videonisse last edited by w00dst0ck

                    @videonisse @loverz

                    I've found a solution to solve it in the YAHKA adapter.

                    I add it as a comment to my initial post.

                    1 Reply Last reply Reply Quote 0
                    • w00dst0ck
                      w00dst0ck @w00dst0ck last edited by

                      @videonisse @loverz

                      I've found a solution to solve it in the YAHKA adapter.

                      if (value) {
                          if (value.length == 2) {
                              if (value[0] == value[1]) {return 0;}
                              if (value[0] > value[1]) {return 1;}
                              if (value[0] < value[1]) {return 2;}
                          }
                      }
                      
                      L 1 Reply Last reply Reply Quote 0
                      • L
                        loverz @w00dst0ck last edited by

                        @w00dst0ck Kannst du uns kurz erklären was genau diese Zeilen machen?

                        w00dst0ck 1 Reply Last reply Reply Quote 0
                        • w00dst0ck
                          w00dst0ck @loverz last edited by

                          @loverz Sehr gerne.

                          In meinem Fall geht es darum, dass ich für HomeMaticIP Thermostate keinen direkten Datenpunkt für CurrentHeatingCoolingState habe, der anzeigt, ob gerade geheizt wird oder nicht.

                          Daher greife ich auf die zur Verfügung stehenden Datenpunkte setPointTemperature & valveActualTemperature zu, vergleiche diese per ConversionScript und gebe abhängig von der Differenz einen gültigen Wert an Homekit aus. Gültige Werte habe ich hier gefunden.

                          Wenn man per iobroker.Multistate mehrere Daten holt, werden diese als Array in "value" gespeichert und können so ausgewertet werden.

                          927efb64-631f-44bc-9db0-31d72909c176-image.png

                          L 1 Reply Last reply Reply Quote 1
                          • L
                            loverz @w00dst0ck last edited by

                            @w00dst0ck sagte in Yet another HomeKit adapter:

                            setPointTemperature & valveActualTemperature

                            Also sind die beiden in/out-Werte setPointTemperature & valveActualTemperature
                            Und dein Script vergleicht beide miteinander?

                            w00dst0ck 1 Reply Last reply Reply Quote 0
                            • w00dst0ck
                              w00dst0ck @loverz last edited by

                              @loverz eigentlich ganz simpel..

                              Wenn die eingestellte Temperatur höher als die am Ventil gemessene Temperatur ist, wird geheizt.

                              Wenn die eingestellte Temperatur niedriger als die am Ventil gemessene ist, wird abgekühlt.

                              V 1 Reply Last reply Reply Quote 0
                              • V
                                Videonisse @w00dst0ck last edited by

                                @w00dst0ck Nice work!

                                So value[0] is the first value in the array and value[1] is the second? (I'm not a developer...)

                                w00dst0ck 1 Reply Last reply Reply Quote 0
                                • w00dst0ck
                                  w00dst0ck @Videonisse last edited by

                                  @videonisse Yes that's true. If you add more values at Read, then it continues like this.
                                  value[0], value[1], value[2]...

                                  1 Reply Last reply Reply Quote 1
                                  • L
                                    loverz last edited by loverz

                                    ich habe meinen Raspberry Pi ins LAN5 (Gastnetz) meiner Fritzbox gepackt. Meine iPhones sind ebenfalls alle im Gast-WLAN. Die Geräte können untereinander kommunizieren (Client-Isolation Aus)

                                    Nun ist es aber so, dass YAHKA bzw. Die Geräte in meiner Home-App nach dem Neustart des YAHKA Adapter nur kurz funktionieren und dann gehen sämtliche Geräte auf "keine Antwort" oder "aktualisieren".

                                    Nach dem Neustart (oft nur für einige Sekunden) sind alle Geräte und Stati verfügbar. Auch steuern kann ich alles, aber wieso geht das nach kurzer Zeit nicht mehr?

                                    Weiß da jemand mehr?
                                    Was für ein Service wird denn da von Apple verwendet? Bein YAHKA Start steht etwas von "Ciao" im log?

                                    yahka.1	2021-04-17 17:11:14.877	info	(1764) publishing bridge Yahka-1 on 0.0.0.0 using ciao
                                    

                                    Woran könnte es denn liegen?
                                    Vor der Einbindung ins Gast-Netz hat alles funktioniert.

                                    Wir benötigen das mit dem Gastnetz aber leider so, da wir bei 2 Haushalten 1 Internet teilen und wir dabei im Gastnetz sind...

                                    L 1 Reply Last reply Reply Quote 0
                                    • L
                                      loverz @loverz last edited by

                                      Keiner eine Idee?

                                      Asgothian V 2 Replies Last reply Reply Quote 0
                                      • Asgothian
                                        Asgothian Developer @loverz last edited by

                                        @loverz
                                        Eine Idee woran es liegen kann schon, aber keinen echten Lösungsvorschlag.

                                        A.

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          Videonisse @loverz last edited by

                                          @loverz Welchen Yahka Version hast du? Es kann sein das es ein Problem mit dem Bonjour dienst "Ciao" ist. Probiere dann mit Yahka v0.13.0 oder früher.

                                          Oder vieleicht kann man auch "useLegacyAdvertiser option" in Yahka v.0.13.1 aktivieren, aber ich weiß leider nicht wie.

                                          Hap-nodejs Issue "Accessories deregistered from Bonjour about 1-2min after launching": https://github.com/homebridge/HAP-NodeJS/issues/856

                                          gkaindl created this issue in homebridge/HAP-NodeJS

                                          closed ciao: Accessories deregistered from Bonjour about 1-2min after launching #856

                                          L 1 Reply Last reply Reply Quote 0
                                          • L
                                            loverz @Videonisse last edited by

                                            @videonisse guter Hinweis!

                                            Mit Version 0.13 ging es noch nicht, 0.12 auch nicht, aber mit 0.11 dann geht es wieder.

                                            Wie gesagt: Das Problem trat erst auf, als ich meine Geräte ins Fritz!Box Gast-Netzwerk umgezogen habe. Zuvor im normalen Fritz!Box Netzwerk haben alle Versionen tadellos funktioniert.

                                            Tausend Dank!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            994
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            204
                                            1744
                                            579785
                                            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