Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. MQTT Light über Homekit steuern

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    328

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

MQTT Light über Homekit steuern

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
mqttnodemcuyahkaesp8266
6 Beiträge 2 Kommentatoren 825 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Georg BachmannG Offline
    Georg BachmannG Offline
    Georg Bachmann
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich hab mir mal auf einen meiner NodeMCUs folgenden sketch geladen:
    https://github.com/Dullage/ESP-LED-MQTT
    An der NodeMCU hängt ein LED Streifen dran und den kann ich jetzt per MQTT steuern. Ich schicke zb. sowas hin: {0:1,2:[255,0,0]} und das LED ist voll rot. Also sprich der Teil zwischen den [] ist der RGB Farbwert.
    Leider kenn ich mich noch nicht so wirklich mit dem yahka adapter aus, aber geht das? Also kann der das so umkonvertieren?

    Und was jetzt natürlich noch super geil wäre... neben Solid-Farben... Könnte man da einen Picker machen für Farb-Effekte? Kann Homekit das? Wenn ich nämlich zb. {0:13} an den mqtt broker schicken würde, hätte ich einen Regenbogen-Effekt. Das wäre ein nettes Zusatzfeature, aber jetzt nicht sooo wichtig :)

    AsgothianA 1 Antwort Letzte Antwort
    0
    • Georg BachmannG Georg Bachmann

      Hallo,
      ich hab mir mal auf einen meiner NodeMCUs folgenden sketch geladen:
      https://github.com/Dullage/ESP-LED-MQTT
      An der NodeMCU hängt ein LED Streifen dran und den kann ich jetzt per MQTT steuern. Ich schicke zb. sowas hin: {0:1,2:[255,0,0]} und das LED ist voll rot. Also sprich der Teil zwischen den [] ist der RGB Farbwert.
      Leider kenn ich mich noch nicht so wirklich mit dem yahka adapter aus, aber geht das? Also kann der das so umkonvertieren?

      Und was jetzt natürlich noch super geil wäre... neben Solid-Farben... Könnte man da einen Picker machen für Farb-Effekte? Kann Homekit das? Wenn ich nämlich zb. {0:13} an den mqtt broker schicken würde, hätte ich einen Regenbogen-Effekt. Das wäre ein nettes Zusatzfeature, aber jetzt nicht sooo wichtig :)

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @Georg-Bachmann sagte in MQTT Light über Homekit steuern:

      Hallo,
      ich hab mir mal auf einen meiner NodeMCUs folgenden sketch geladen:
      https://github.com/Dullage/ESP-LED-MQTT
      An der NodeMCU hängt ein LED Streifen dran und den kann ich jetzt per MQTT steuern. Ich schicke zb. sowas hin: {0:1,2:[255,0,0]} und das LED ist voll rot. Also sprich der Teil zwischen den [] ist der RGB Farbwert.
      Leider kenn ich mich noch nicht so wirklich mit dem yahka adapter aus, aber geht das? Also kann der das so umkonvertieren?

      Das Umkonvertieren kann gehen, ist aber nicht trivial, da der notwendige RGB Wert aus den bei Yahka verwendeten HSV Werten berechnet werden muss. Der Ablauf ist wie folgt:

      • eigene Datenpunkte anlegen: Yahka_H, Yahka_S, Yahka_V
      • 2 Skripte schreiben, einmal Umrechnung HSV zu RGB, einmal RGB zu HSV. Die Umrechnung jeweils an Veränderungen an den Datenpunkten Triggern (HSV-> RGB bei Änderung von Yahka_H, S, V), RGB->HSV an dem Datenpunkt der im MQTT Adapter liegt.
      • Die Datenpunkte Yahka_H, Yahka_S, Yahka_V mit den Einstellungen im Yahka verbinden.

      Skripte zu HSV-RGB Konvertierung (und Umgekehrt) sind auf Github zu finden, und können per "require" in den JS Adapter eingelesen werden.

      Und was jetzt natürlich noch super geil wäre... neben Solid-Farben... Könnte man da einen Picker machen für Farb-Effekte? Kann Homekit das? Wenn ich nämlich zb. {0:13} an den mqtt broker schicken würde, hätte ich einen Regenbogen-Effekt. Das wäre ein nettes Zusatzfeature, aber jetzt nicht sooo wichtig :)

      Da sehe ich nicht wie man das so ohne weiteres machen kann. Du kannst halt für jeden Effekt einen eigenen Button definieren, der dann den relevanten Effekt-String an MQTT sendet. Wie das genau geht weiss ich nicht aus dem Kopf.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      Georg BachmannG 1 Antwort Letzte Antwort
      0
      • AsgothianA Asgothian

        @Georg-Bachmann sagte in MQTT Light über Homekit steuern:

        Hallo,
        ich hab mir mal auf einen meiner NodeMCUs folgenden sketch geladen:
        https://github.com/Dullage/ESP-LED-MQTT
        An der NodeMCU hängt ein LED Streifen dran und den kann ich jetzt per MQTT steuern. Ich schicke zb. sowas hin: {0:1,2:[255,0,0]} und das LED ist voll rot. Also sprich der Teil zwischen den [] ist der RGB Farbwert.
        Leider kenn ich mich noch nicht so wirklich mit dem yahka adapter aus, aber geht das? Also kann der das so umkonvertieren?

        Das Umkonvertieren kann gehen, ist aber nicht trivial, da der notwendige RGB Wert aus den bei Yahka verwendeten HSV Werten berechnet werden muss. Der Ablauf ist wie folgt:

        • eigene Datenpunkte anlegen: Yahka_H, Yahka_S, Yahka_V
        • 2 Skripte schreiben, einmal Umrechnung HSV zu RGB, einmal RGB zu HSV. Die Umrechnung jeweils an Veränderungen an den Datenpunkten Triggern (HSV-> RGB bei Änderung von Yahka_H, S, V), RGB->HSV an dem Datenpunkt der im MQTT Adapter liegt.
        • Die Datenpunkte Yahka_H, Yahka_S, Yahka_V mit den Einstellungen im Yahka verbinden.

        Skripte zu HSV-RGB Konvertierung (und Umgekehrt) sind auf Github zu finden, und können per "require" in den JS Adapter eingelesen werden.

        Und was jetzt natürlich noch super geil wäre... neben Solid-Farben... Könnte man da einen Picker machen für Farb-Effekte? Kann Homekit das? Wenn ich nämlich zb. {0:13} an den mqtt broker schicken würde, hätte ich einen Regenbogen-Effekt. Das wäre ein nettes Zusatzfeature, aber jetzt nicht sooo wichtig :)

        Da sehe ich nicht wie man das so ohne weiteres machen kann. Du kannst halt für jeden Effekt einen eigenen Button definieren, der dann den relevanten Effekt-String an MQTT sendet. Wie das genau geht weiss ich nicht aus dem Kopf.

        A.

        Georg BachmannG Offline
        Georg BachmannG Offline
        Georg Bachmann
        schrieb am zuletzt editiert von
        #3

        @Asgothian Danke für deine Hilfe!
        Ok... cool... dann schreib ich jetzt mein erstes ioBroker Script :) Schon eeeeewig nix mehr mit JS gemacht.

        Alora... Ich hab jetzt mal die eine Richtung fertig. Also wenn ich in MQTT den RGB Farbwert ändere, setze ich die HSV Datenpunkte und somit bekommt HomeKit das bereits korrekt mit. Jippie...

        Jetzt schreibt aber ja HomeKit dann ja auch auf diese Werte. Somit muss ich deren Änderung ja überwachen. Aber sobald ich selbst ja von RGB -> HSV schreibe, gibts da ja schon die Änderung...

        Also ich geb über meinen MQTT Broker einen neuen Wert ein... somit wird der HSV Wert gesetzt. Wenn jetzt ein Script den überwacht dann würde das dann wieder einen RGB Wert schreiben (durch Rundungsfehler kann der ja auch leicht anders sein)... und das würde dann wieder das andere Script auslösen usw...

        Wie löse ich das Problem?

        AsgothianA 1 Antwort Letzte Antwort
        0
        • Georg BachmannG Georg Bachmann

          @Asgothian Danke für deine Hilfe!
          Ok... cool... dann schreib ich jetzt mein erstes ioBroker Script :) Schon eeeeewig nix mehr mit JS gemacht.

          Alora... Ich hab jetzt mal die eine Richtung fertig. Also wenn ich in MQTT den RGB Farbwert ändere, setze ich die HSV Datenpunkte und somit bekommt HomeKit das bereits korrekt mit. Jippie...

          Jetzt schreibt aber ja HomeKit dann ja auch auf diese Werte. Somit muss ich deren Änderung ja überwachen. Aber sobald ich selbst ja von RGB -> HSV schreibe, gibts da ja schon die Änderung...

          Also ich geb über meinen MQTT Broker einen neuen Wert ein... somit wird der HSV Wert gesetzt. Wenn jetzt ein Script den überwacht dann würde das dann wieder einen RGB Wert schreiben (durch Rundungsfehler kann der ja auch leicht anders sein)... und das würde dann wieder das andere Script auslösen usw...

          Wie löse ich das Problem?

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          @Georg-Bachmann
          Das löst du ganz einfach: Du musst schauen ob die Werte vom HomeKit mit oder ohne "ack" gesetzt werden. Wenn HomeKit die Werte mit ack setzt, dann setzt du sie durch das Script ohne, und setzt den trigger auf "nur werte mit ack". Ansonsten machst du das umgekehrt. Das gleiche machst du auch beim RGB Wert zum MQTT

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          Georg BachmannG 1 Antwort Letzte Antwort
          0
          • AsgothianA Asgothian

            @Georg-Bachmann
            Das löst du ganz einfach: Du musst schauen ob die Werte vom HomeKit mit oder ohne "ack" gesetzt werden. Wenn HomeKit die Werte mit ack setzt, dann setzt du sie durch das Script ohne, und setzt den trigger auf "nur werte mit ack". Ansonsten machst du das umgekehrt. Das gleiche machst du auch beim RGB Wert zum MQTT

            A.

            Georg BachmannG Offline
            Georg BachmannG Offline
            Georg Bachmann
            schrieb am zuletzt editiert von Georg Bachmann
            #5

            @Asgothian sehr cool! Danke für den Tipp!!! Eine Frage jetzt noch... es werden sich ja dann meistens 3 Datenpunkte ändern. H, S und V... das wären dann 3 Änderungen und ich will ja nicht GLEICH des an MQTT schicken... Also das wäre ja nicht sehr effizient, oder?
            Und dann noch eine Frage... Um dann die MQTT Message zu schicken reicht es nicht einfach den Datenpunkt zu befüllen, oder? Muss ich das direkt machen? (Hab leider auf die schnelle keinen Sample Code gefunden :()

            AsgothianA 1 Antwort Letzte Antwort
            0
            • Georg BachmannG Georg Bachmann

              @Asgothian sehr cool! Danke für den Tipp!!! Eine Frage jetzt noch... es werden sich ja dann meistens 3 Datenpunkte ändern. H, S und V... das wären dann 3 Änderungen und ich will ja nicht GLEICH des an MQTT schicken... Also das wäre ja nicht sehr effizient, oder?
              Und dann noch eine Frage... Um dann die MQTT Message zu schicken reicht es nicht einfach den Datenpunkt zu befüllen, oder? Muss ich das direkt machen? (Hab leider auf die schnelle keinen Sample Code gefunden :()

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von
              #6

              @Georg-Bachmann
              Korrekt. Der Trick dazu nennt sich timeout.

              Du machst eine funktion recalculate_rgb. Diese funktion gibst du beim Trigger fuer h, s und v an (an statt die Funktion inline in das "on" zu schreiben.

              Zusaezlich machst du eine Variable "recalculate_timeout" die du mit null initialisierst.

              In der Funktion recalculate_rgb kannst du dann als erstes prüfen, ob recalculate_timeout ungleich null ist. Wenn ja, sagst du "recalculate_timeout = set_timeout(...)". In dieser Funktion holst Du dir dann immer die h, s, v werte und stellst die Berechnung an. Als letztes setzt du dann noch "recalculate_timeout" auf null zurück.

              Wie lange du den Timeout setzt definiert wie fix das ganze antwortet. ich wuerde mit 250 ms anfangen.

              Im MQTT - wenn korrekt konfiguriert reicht das ändern des Datenpunktes um die Message auszulösen. Am besten testest du das einmal von Hand bevor du Skriptes.

              A.

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

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

              475

              Online

              32.5k

              Benutzer

              81.7k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe