Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. HEX-Werte an Endgerät senden

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    HEX-Werte an Endgerät senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @1Topf last edited by Armilar

      @1topf sagte in HEX-Werte an Endgerät senden:

      welcher bei Betätigung immer einen anderen HEX-Wert sendet
      Die Werte des Dimmers werden übrigens in xy gesendet

      Klingt ein wenig konfus...

      Ich fass mal kurz nach meinem Verständnis zusammen:

      • Du hast einen Dimmer, der Farben per CIE in einen xy Datenpunkt schreibt.
      • Dein LED-Stripe kann HEX #RRGGBB verarbeiten.
      • Dir fehlt eine Umrechnung von xy auf HEX

      ist das so korrekt?

      Wenn dem so ist, dann:

      function cie_to_rgb(x, y, brightness) {
         
         if (brightness === undefined) {
            brightness = 254;
         }
      
         var z = 1.0 - x - y;
         var Y = (brightness / 254).toFixed(2);
         var X = (Y / y) * x;
         var Z = (Y / y) * z;
      
         //Convert to RGB using Wide RGB D65 conversion
         var red 	=  X * 1.656492 - Y * 0.354851 - Z * 0.255038;
         var green 	= -X * 0.707196 + Y * 1.655397 + Z * 0.036152;
         var blue 	=  X * 0.051713 - Y * 0.121364 + Z * 1.011530;
      
         //If red, green or blue is larger than 1.0 set it back to the maximum of 1.0
         if (red > blue && red > green && red > 1.0) {
            green = green / red;
            blue  = blue / red;
            red   = 1.0;
         }
         else if (green > blue && green > red && green > 1.0) {
            red  = red / green;
            blue  = blue / green;
            green = 1.0;
         }
         else if (blue > red && blue > green && blue > 1.0) {
            red   = red / blue;
            green = green / blue;
            blue  = 1.0;
         }
      
         //Reverse gamma correction
         red   = red <= 0.0031308 ? 12.92 * red : (1.0 + 0.055) * Math.pow(red, (1.0 / 2.4)) - 0.055;
         green = green <= 0.0031308 ? 12.92 * green : (1.0 + 0.055) * Math.pow(green, (1.0 / 2.4)) - 0.055;
         blue  = blue <= 0.0031308 ? 12.92 * blue : (1.0 + 0.055) * Math.pow(blue, (1.0 / 2.4)) - 0.055;
      
         red   = Math.round(red * 255);
         green = Math.round(green * 255);
         blue  = Math.round(blue * 255);
      
         if (isNaN(red))
            red = 0;
      
         if (isNaN(green))
            green = 0;
      
         if (isNaN(blue))
            blue = 0;
      
         return [red, green, blue];
      }
      

      Wobei bei dem Farbraum bestenfalls noch Brightness (0-254) mitgegeben werden sollte.

      Anschließend nur noch RGB (also den return-Wert) verhexen und fertig...

      function componentToHex(c) {
        // This expects `c` to be a number:
        const hex = c.toString(16);
      
        return hex.length === 1 ? `0${ hex }` : hex;
      }
      
      function rgbToHex(rgb) {
        // .map(Number) will convert each string to number:
        const [r, g, b] = rgb.replace('rgb(', '').replace(')', '').split(',').map(Number);
        
        return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
      }
      

      VG

      1Topf 1 Reply Last reply Reply Quote 0
      • 1Topf
        1Topf @Armilar last edited by

        @armilar

        😳 Da fallen mir schon ein wenig die Augen raus.

        Ich saß gestern abend noch recht lang daran und hab in Blockly was zusammengeschustert. Das Problem ist auch, daß Dimmer und Strip von unterschiedlichen Herstellern sind. Nun sollten zwar die HEX-Werte gleich sein, aber hier unterscheidet sich wohl der Wunsch von der Realität. Die vom Dimmer gesendeten Werte frißt der Strip nicht.
        Ich werde mich mal mit Deiner Lösung befassen, wenn ich etwas mobiler bin (gab heut wieder 2 nette Spritzen in den Rücken 😠 ).

        Klingt ein wenig konfus...

        Das liegt aber nicht an mir 😉 . Im zigbee2mqtt - Dashboard wird es als xy erkannt/dargestellt, in den Objekten von ioBroker als HEX. An welcher Stelle das jetzt umgewandelt wird, entzieht sich meinem Wissen.

        Danke erstmal für Deine Mühe. Schönen Abend noch.

        Armilar 1 Reply Last reply Reply Quote 0
        • Armilar
          Armilar Most Active Forum Testing @1Topf last edited by

          @1topf

          Ich weiß... steht zwar unter Blockly, aber das dürfte ohne JS wohl schwierig werden 😉

          Jetzt noch einen Trigger draufsetzen, der den Wert vom Dimmer konvertiert und dann in einen Hex-Datenpunkt der Lampe setzt

          Nicht gerade Hexenwerk aber schon etwas gehobener (dein Wunsch)

          Sollte aber tatsächlich alles in Hex stehen und nur ein Transport von A nach B stattfinden, dann kann man es ja so machen:

          69e0b088-7e3f-4b90-a112-311e9f2066c5-image.png

          1Topf 1 Reply Last reply Reply Quote 0
          • 1Topf
            1Topf @Armilar last edited by

            @armilar

            Ich dachte, Du willst mich zwingen, JS zu lernen. 😁

            Mein Ansatz gestern war

            DimmerStrip01.jpg

            , aber der Strip hat sich aus irgendeinem Grund immer wieder auf Lila gestellt. Also ich habe alle HEX-Werte, die der Dimmer geliefert hat (insgesamt 16), in Blöcke wie oben geschrieben. Aber wie gesagt, der Strip wollte nicht. Ich hab noch ne Idee, muß ich mal ausprobieren. Hab vermutlich noch bis Ende des Jahres Krankenschein, also viel Zeit. Leider ...

            Armilar 1 Reply Last reply Reply Quote 0
            • Armilar
              Armilar Most Active Forum Testing @1Topf last edited by

              @1topf

              Schmerzhafte Sache im Rücken 😰

              Ja, du gibst ihm ja auch immer Lila mit. Versuche es mal mit der Variante. Der Trigger schleust 1:1 den Wert des Datenpunktes durch.

              Schade... man kann es ja mal versuchen 😉

              Aber wenn du die andere Variante von xy nach hex brauchts, musst du nicht mehr lange suchen 😊

              Gute Besserung

              1Topf 2 Replies Last reply Reply Quote 0
              • 1Topf
                1Topf @Armilar last edited by

                @armilar sagte in HEX-Werte an Endgerät senden:

                @1topf

                Ja, du gibst ihm ja auch immer Lila mit.

                Nein, das war auch bei rot oder grün usw. so. Hab natürlich grad den blödesten Screenshot gewählt. 😂

                Gute Besserung

                Vielen Dank.

                1 Reply Last reply Reply Quote 0
                • 1Topf
                  1Topf @Armilar last edited by

                  @armilar

                  Ich glaube, ich habe das Problem gefunden. Im DP ist lila / #ff00ff hinterlegt. Aus irgendeinem Grund wird der Strip immer wieder darauf getriggert, wenn ich ihn per Dimmer schalten will. Das Kuriose daran ist: wenn ich den Strip per Alexa über den IOT-Adapter schalte, funktioniert es. Ebenso über das dashboard von zigbee2mqtt. Es könnte doch mal was einfach funktionieren ...

                  {
                    "type": "state",
                    "common": {
                      "id": "color",
                      "name": "Color",
                      "role": "level.color.rgb",
                      "write": true,
                      "read": true,
                      "type": "string",
                      "def": "#ff00ff",
                      "smartName": {
                        "de": "Bett",
                        "smartType": "LIGHT"
                      }
                    },
                    "native": {},
                    "_id": "zigbee2mqtt.0.0xa4c138e864efed32.color",
                    "acl": {
                      "object": 1636,
                      "state": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator"
                    },
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1669674342096
                  }
                  
                  Armilar 1 Reply Last reply Reply Quote 0
                  • Armilar
                    Armilar Most Active Forum Testing @1Topf last edited by

                    @1topf

                    Ist ja der Knaller, wie kommt das da rein. Da mag aber jemand Lila 😉

                    Einfach mal rauslöschen...

                    1Topf 1 Reply Last reply Reply Quote 0
                    • 1Topf
                      1Topf @Armilar last edited by

                      @armilar War auch mein erster Gedanke, aber geht nicht. Läßt sich nicht bearbeiten.

                      Armilar 1 Reply Last reply Reply Quote 0
                      • Armilar
                        Armilar Most Active Forum Testing @1Topf last edited by

                        @1topf

                        Auch nicht im Expertenmodus?
                        ba2bafe8-abee-46ec-862d-69071ae50ee9-image.png

                        Oder einfach den Datenpunkt wegwerfen. Sollte sich ja neu anlegen

                        1Topf 1 Reply Last reply Reply Quote 0
                        • 1Topf
                          1Topf @Armilar last edited by

                          @armilar Bin bereits im Expertenmodus. Hab jetzt den ganzen Objektbaum gelöscht, ist bis jetzt leider nicht wieder aufgetaucht. Ich mach morgen weiter, falls ich dazu komme. Als Kranker hat man nur noch Termine. 😂
                          Gute N8.

                          Armilar 1 Reply Last reply Reply Quote 0
                          • Armilar
                            Armilar Most Active Forum Testing @1Topf last edited by Armilar

                            @1topf

                            Gute N8 😊

                            P.S.: Starte die Gurke mal durch...

                            1Topf 1 Reply Last reply Reply Quote 0
                            • 1Topf
                              1Topf @Armilar last edited by

                              @armilar Also ich geb's jetzt auf. Bekomme das hübsche Lila nicht weg. Egal. Ich kann das Teil per Alexa schalten, das ist schon mal was wert. Dann werde ich mir noch die Browserseite des Strips von zigbee2mqtt per iFrame in die VIS holen. Und dann ist gut. Ist ja nur für's Kinderzimmer. Soll der kleine Scheißer doch sehen, wie er damit klar kommt. 😂 😂 😇

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              849
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              2
                              14
                              487
                              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