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.
    • E
      el_malto @loverz last edited by

      @loverz brauchst du ja nicht. Eine passende Lösung wäre auch super 😄

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

        @el_malto
        @EnoceanEltako

        Also habe es mir jetzt doch aufmerksam durchgelesen.
        Das erste Problem das du hast ist, dass in deinen LVL Objekt theoretisch ein Wert stehen könnte nehmen wir mal 50 % an und in dem anderen CMD Objekt eine Zahl ungleich drei.
        Was passiert dann mit deiner Lampe? Ist die Auf 50 % an, oder ist die aus?

        Diese Situation solltest du auch abfangen. Heißt wenn dieses Objekt sich geändert hat und 0 ist, dann soll das andere Objekt CMD auch wieder zurück gestellt (OFF) werden.

        Letztlich hast du mit deinem Script schon mal einiges richtig gemacht.
        Du solltest den Schreibe-Block aber noch durch einen Steuere-Block austauschen.
        Außerdem würde ich statt „aktualisiere“ als Trigger „geändert“ auswählen. Hat auch einer schon geschrieben in deinem Post.

        Jetzt würde ich als erstes mal versuchen diesen einen Lichtkanal zum laufen zu bringen und das Skript dann anschließend für die anderen Kanäle kopieren, das ist keine große Sache.
        Der Vorteil wenn du alles in Blockly-Scripts machst ist, dass du auch von anderen Anwendungen anschließend einen Prozentwert an deine Lampen senden kannst. Wenn du das ganze über YahkaDirekt machst, dann würde das nicht gehen.

        Man kann die Skripts auch in einem Ordner zusammenfassen, dann ist es auch schön übersichtlich.

        1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @el_malto last edited by Asgothian

          @el_malto sagte in Yet another HomeKit adapter:

          Er sucht also eine Lösung die das evtl automatisiert. Mit dem Skript aus seinem Thread klappt das. Sein Problem ist nur, dass er jetzt 20 Skripte haben müsste.

          Das ist zu automatisieren.

          Angenommen seine Dimmaktoren kommen aus dem Adapter "dimmaktortest.0", und heissen Lampe.1 bis Lampe.20, darin jeweils die DP's level und cmd.

          1. Schritt:

          Ein Skript mit (JS oder Blockly) mit einem Selektor als Trigger anlegen (Doku zum Selektor siehe hier)
          Screen Shot 2020-12-11 at 19.56.44 .png

          Als Selektor channel[state.id=dimmaktortest.0*.level]

          Im Trigger sich mit diesem Baustein einmal die ID holen
          Screen Shot 2020-12-11 at 20.08.54 .png
          die ID zerlegen, und daraus die Ziel-ID fuer den CMD Datenpunkt heraus holen. Dann in diesen ein "3" herein schreiben.

          Damit reicht es mit Yahka den level Datenpunkt zu verbinden. Jede Anpassung sorgt dafuer das der Wert auch gesetzt wird.

          Zu testen wäre wie genau der Selektor aussehen muss. Das hängt von den Datenpunktnamen ab.

          A.

          Edit: ich hatte das Bild des korrekten Baustein vergessen

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

            @Asgothian Das scheint mir die fortgeschrittene Variante zu sein.
            Für den Anfang würde ich damit nicht anfangen 😄

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

              @loverz So fortgeschritten ist es nicht. Einmal den Selektor verstehen und glücklich sein. String Manipulationen sollten nicht das grosse Problem sein.

              Alles andere sind Erweiterungen am Adapter oder viel Skript-click Arbeit, also eher nicht besser.

              A.

              Zur not kann ich auch auf Discord helfen das zu bauen, so ist es nicht. (nur nicht heute)

              Nachtrag: Man kann das auch ohne Selektor bauen. Dann muss man halt alle 20 quell Datenpunkte von Hand in den Trigger eintragen. Entscheidend ist das man sich die ID des zu setzenden DP's aus der ID des DP welchen den Trigger ausgelöst hat zusammen baut. Dann reicht ein Skript für alle Lampen.

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

                @Asgothian Naja, solange ich googeln muss was Discord, String Manipulationen und DP IDs sind finde ich es für mich zu kompliziert. Ich kann natürlich nicht für andere sprechen.

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

                  @loverz

                  ...

                  Discord kann ich noch verstehen - das Programm muss man nicht kennen.

                  Wenn ich aber vorher von Datenpunkten schreibe und das dann als DP abkürze sollte klar sein was gemeint ist.
                  Und Object ID kommt in jedem Skript vor, sollte also auch klar sein.

                  A.

                  L T 2 Replies Last reply Reply Quote 0
                  • L
                    loverz @Asgothian last edited by loverz

                    @Asgothian Ja ich hätte mir Das vielleicht schon Zusammenreimen können, stimmt schon.
                    Meine Botschaft war einfach nur, dass es Anfänger oft deutlich schwerer haben als hier angenommen wird. Zumindest war es bei mir so, Das weiß ich noch, weil es noch nicht allzu lange her ist 🙂

                    Ich bin natürlich trotzdem dankbar über jede Hilfe. Vor allem Spezialisten wie du sind für uns die beste Quelle zum lernen.

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

                      @Asgothian @loverz besten Dank euch für die Antworten und den Input. Der Level Wert ist in %.
                      Wenn der cmd Wert bspw. auf 1 (on) 0 (off) gestellt wird wird das Dimmlevel nicht verändert.

                      Im yahka die on off Funktion funktioniert mit dem Aktor.

                      Im Skript habe ich bereits steuere und aktualisiert eingebunden.

                      Komme voraussichtlich erst nach Mittwoch dazu das nochmal zu testen. Könnt ihr mir nur nochmal den Hintergrund zum Datenpunkt erstellen und Selektor nutzten erläutern?
                      Ich verstehe:
                      -smarter da globale Funktion

                      • dadurch keine Anpassungen bei neu hinzukommenden Lampen etc.
                        Frage noch dazu: wie ist das in dem Fall mit dem cmd Endpunkt? Habe noch Jalousie Aktoren im gleichen Adapter die ebenfalls einen cmd Punkt haben. Diese werden allerdings mit 0=stop 1=auf 2=ab gesteuert und in 100ms Einheiten.
                        An das traue ich mich erst ran wenn die Lichter alle funktionieren.

                      Könnt ihr mir noch bei dem Thema dass sich Home den aktuellen Stand nicht merkt helfen?
                      Habe noch keine Steuerzentrale angelegt, hätte kurzfristig ein IPad zur Hand und mittelfristig weil ich einen neuen Apple TV holen.

                      Asgothian 1 Reply Last reply Reply Quote 0
                      • Asgothian
                        Asgothian Developer @TheAriba last edited by

                        @EnoceanEltako Da ist nicht viel zu erklären. Ich habe in diesem Post beschrieben was zu tun ist, sowie den Link auf die Dokumentation zum Selektor verlinkt.

                        Viel mehr kann man da nicht erklären. Vielleicht noch wie das mit der DP ID geht:

                        Der verlinkte Baustein "object ID" liefert die ID des Datenpunktes welcher den trigger ausgelöst hat, also z.Bsp.

                        adaptername.0.Light.1.brightness

                        Daraus extrahierst du über "finde das letzte auftreten von '.'" und nimm den Teilstrich vom Anfang bis zum letzten Punkt erst einmal das "gerät" :

                        adaptername.0.Light.1.

                        Dem hängst Du dann ein ".CMD" an und nutzt diesen String als Datenpunkt ID in einem Steuere Befehl.

                        A.

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

                          @Asgothian ok ich schaue mir grad die Tage mal an.
                          Kannst du mir bei dem Thema dass sich Home den aktuellen Stand nicht merkt helfen?
                          Habe noch keine Steuerzentrale angelegt, hätte kurzfristig ein IPad zur Hand und mittelfristig weil ich einen neuen Apple TV holen. Liegt es daran?

                          L Asgothian 2 Replies Last reply Reply Quote 0
                          • L
                            loverz @TheAriba last edited by

                            @EnoceanEltako ob iPad oder AppleTV sollte egal sein. Sind beide offiziell dafür gedacht.

                            Mir ist aber aufgefallen, dass meine Home App langsamer aktualisiert hat, als ich iPad UND AppleTV als Homezentrale konfiguriert habe.

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

                              @EnoceanEltako hat aber das Problem, dass seine Homekit App gar nicht updated. Das müsste ja auch ohne Homezentrale normal funktionieren.

                              1 Reply Last reply Reply Quote 0
                              • Asgothian
                                Asgothian Developer @TheAriba last edited by

                                @EnoceanEltako
                                Das ist leider normal. Beim Start der Home app holt sich diese von den Geräten den Status. Sofern das Netz gut ist und du zu haus bist geht das relativ zügig.

                                A.

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  TDCroPower last edited by

                                  Hi, kann mir jemand sagen welche Services ich für eine Lampe benötige um den gleichen Stand zu haben wie hier eine Xiaomi Yeelight per HomeKit Sticker eingebunden?

                                  Bildschirmfoto 2020-12-14 um 12.32.24.png

                                  Also ist hier kein simpler Switch Services, sondern kann man damit auch die Helligkeit regeln und unten drunter die Temperatur (Color Picker?).

                                  oberfragger 1 Reply Last reply Reply Quote 0
                                  • oberfragger
                                    oberfragger @TDCroPower last edited by

                                    Brauchst die Hue-Zahl dann kommt der Colorpicker. Wie du siehst.. auch Yeelight.

                                    13fd084f-91fc-4575-acc0-053e8d9a3797-image.png

                                    T 1 Reply Last reply Reply Quote 1
                                    • T
                                      TDCroPower @oberfragger last edited by

                                      @oberfragger danke für die Rückmeldung.
                                      Leider hat die Meteorit Lampe für das Hauptlicht kein Hue Wert, sondern nur den ct Wert...
                                      Bildschirmfoto 2020-12-14 um 13.42.54.png

                                      ich habe dazu Brightness, ColorTemperature und On im Service "Lightbulb" zugewiesen und wie bei dir unter "Properties" bei ColorTemperature die Min und Max Values angepasst (da muss man erst einmal drauf kommen, das dort was dahinter versteckt ist).
                                      Leider stimmt da irgendwas noch nicht, da jetzt alles einen schwarzen Hintergrund hat und die 6 Farbbuttons ohne Funktion sind.
                                      Bildschirmfoto 2020-12-14 um 13.46.43.png

                                      Asgothian 1 Reply Last reply Reply Quote 0
                                      • Asgothian
                                        Asgothian Developer @TDCroPower last edited by Asgothian

                                        @TDCroPower

                                        Du brauchst ein Skript zum Umrechnen von RGB in HSV, dann kannst du ggf. bei der Farbeinstellung was tun.

                                        Das Anpassen der Grenzwerte bei der Farbtemperatur funktioniert nicht. Yahka erwartet die Farbtemperatur in Mired, nicht in Kelvin.

                                        Die Funktion fuer die Umrechnung (warum, wieso, etc.) sollte mit einer einfachen Websuche zu finden sein. In Yahka kannst du dann einfach als "Transferfunktion" Skript eintragen und die Umrechnung machen. Du bekommst dann 2 Skripte zum Eintragen:

                                        toHomeKit - Darin willst du haben:

                                        return (math.max(math.min(1000000/value, 500),150)
                                        

                                        fromHomekit:

                                        return (math.max(math.min(100000/value, 6500),2000)
                                        

                                        A.

                                        oberfragger T 2 Replies Last reply Reply Quote 0
                                        • oberfragger
                                          oberfragger @Asgothian last edited by

                                          @Asgothian

                                          Oh, vielen Dank.

                                          Das schau ich mir mal an. Vielleicht kann ich damit ja parallel in Homebridge das Hyperion Plugin entsorgen.

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            TDCroPower @Asgothian last edited by TDCroPower

                                            @Asgothian mit deinen Formeln erhalte ich beim starten vom Adapter folgende error Logmeldung...

                                            yahka.0	2020-12-14 15:50:29.796	error	at _loop_1 (/opt/iobroker/node_modules/iobroker.yahka/main.js:2874:40)
                                            yahka.0	2020-12-14 15:50:29.796	error	at THomeKitBridge../yahka.homekit-bridge.ts.THomeKitBridge.createDevice (/opt/iobroker/node_modules/iobroker.yahka/main.js:2960:33)
                                            yahka.0	2020-12-14 15:50:29.796	error	at YahkaServiceInitializer../yahka.homekit-service.ts.YahkaServiceInitializer.initServices (/opt/iobroker/node_modules/iobroker.yahka/main.js:3366:22)
                                            yahka.0	2020-12-14 15:50:29.796	error	at YahkaServiceInitializer../yahka.homekit-service.ts.YahkaServiceInitializer.initService (/opt/iobroker/node_modules/iobroker.yahka/main.js:3414:22)
                                            yahka.0	2020-12-14 15:50:29.796	error	at YahkaServiceInitializer../yahka.homekit-service.ts.YahkaServiceInitializer.initCharacteristic (/opt/iobroker/node_modules/iobroker.yahka/main.js:3460:57)
                                            yahka.0	2020-12-14 15:50:29.796	error	at TIOBrokerAdapter../yahka.ioBroker-adapter.ts.TIOBrokerAdapter.CreateBinding (/opt/iobroker/node_modules/iobroker.yahka/main.js:3722:64)
                                            yahka.0	2020-12-14 15:50:29.796	error	at Object.createConversionFunction (/opt/iobroker/node_modules/iobroker.yahka/main.js:2055:61)
                                            yahka.0	2020-12-14 15:50:29.796	error	at Object../yahka.functions/functions.import.ts.functions_factory_1.conversionFactory.script (/opt/iobroker/node_modules/iobroker.yahka/main.js:2110:86)
                                            yahka.0	2020-12-14 15:50:29.796	error	at new TIoBrokerConversion_Script (/opt/iobroker/node_modules/iobroker.yahka/main.js:1919:30)
                                            yahka.0	2020-12-14 15:50:29.796	error	at new Function (<anonymous>)
                                            yahka.0	2020-12-14 15:50:29.796	error	(27929) SyntaxError: Unexpected token '}'
                                            yahka.0	2020-12-14 15:50:29.795	error	(27929) unhandled promise rejection: Unexpected token '}'
                                            Unhandled	2020-12-14 15:50:29.794	error	promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                            yahka.0
                                            

                                            edit:
                                            muss das Ergebnis nicht vielleicht noch am Ende gerundet werden mit math.round() um die Nachkommastellen zu eliminieren?
                                            Denn mit dem Kelvin Wert 6500 und der ersten Min formel erhalte ich...
                                            Math.min(1000000/6500,500) = 153.84615384615384

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

                                            Support us

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

                                            814
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            204
                                            1745
                                            580988
                                            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