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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Probleme beim Wandeln von RGB zu HEX

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Probleme beim Wandeln von RGB zu HEX

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 2 Kommentatoren 2.3k Aufrufe
  • Ä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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    Die RGB-Werte bleiben konstant ? Erweitere mal das Log

        log('R: ' + R + ' G: '+ G + ' B: ' + B + ' #' + toHex(R) + toHex(G) + toHex(B));
    
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      rom.wagner80
      schrieb am zuletzt editiert von
      #3

      Ui… die Werte R, G und B scheinen sich doch zu ändern (s. Screenshot) Die Quelle für diese Werte ist der YAHKA-Adapter

      Der Quellcode sieht folgendermaßen aus:

      var h = getState("javascript.0.Geraete.YAHKA.hue").val / 360; 
      var s = getState("javascript.0.Geraete.YAHKA.saturation").val / 100;
      var v = getState("javascript.0.Geraete.YAHKA.dimmer").val / 100;
      
      function HSVtoRGB() {
          var r, g, b, i, f, p, q, t;
          i = Math.floor(h * 6);
          f = h * 6 - i;
          p = v * (1 - s);
          q = v * (1 - f * s);
          t = v * (1 - (1 - f) * s);
          switch (i % 6) {
              case 0: r = v, g = t, b = p; break;
              case 1: r = q, g = v, b = p; break;
              case 2: r = p, g = v, b = t; break;
              case 3: r = p, g = q, b = v; break;
              case 4: r = t, g = p, b = v; break;
              case 5: r = v, g = p, b = q; break;
          }
      
      setState ("javascript.0.Geraete.YAHKA.r1"/*r1*/, Math.round(255 * r));
      setState ("javascript.0.Geraete.YAHKA.g1"/*g1*/, Math.round(255 * g));
      setState ("javascript.0.Geraete.YAHKA.b1"/*b1*/, Math.round(255 * b));     
      
      } // Ende der Funktion
      
      HSVtoRGB();  // Aufruf bei Skriptstart 
      
      on("javascript.0.Geraete.YAHKA.hue", function(dp) {
         h = dp.state.val / 360;
         HSVtoRGB();  // Aufruf bei Änderung von hue
      });
      on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
         s = dp.state.val / 100;
         HSVtoRGB();  // Aufruf bei Änderung von saturation
      });
      on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
         v = dp.state.val / 100;
         HSVtoRGB();  // Aufruf bei Änderung von dimmer
      });
      

      Die Objekte, die durch setState erzeugt werden (und die in der Wandlung von RGB zu HEX ja auch genutzt werden) zeigen allerdings (optisch) keine Änderung
      2476_errorlog_1.jpeg

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #4

        Das Skript RGB zu Hex funktioniert wie es soll. Logge mal im Quellskript in der Funktion HSVtoRGB() die Werte h, s und v.

        function HSVtoRGB() {
            log('h: ' + h + ' s: ' + s + ' v: ' + v);
        
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          rom.wagner80
          schrieb am zuletzt editiert von
          #5

          @paul53:

          Das Skript RGB zu Hex funktioniert wie es soll. Logge mal im Quellskript in der Funktion HSVtoRGB() die Werte h, s und v.

          function HSVtoRGB() {
              log('h: ' + h + ' s: ' + s + ' v: ' + v);
          
          ```` `  
          

          Die gefühlten zehn Stellen hinterm Komma machen mir ein wenig sorgen. Ansonsten ist das eine Fließende Funktion, da ich ja mit dem Finger über den Bildschirm streiche (s. Bild). Allerdings sollte der Letzte ausgegebene Wert ja auch die zuletzt Angefahrene Farbe sein, oder ?

          Log im Screenshot, Quellcode dazu hier :

          var h = getState("javascript.0.Geraete.YAHKA.hue").val / 360; 
          var s = getState("javascript.0.Geraete.YAHKA.saturation").val / 100;
          var v = getState("javascript.0.Geraete.YAHKA.dimmer").val / 100;
          
          function HSVtoRGB() {
               log('h: ' + h + ' s: ' + s + ' v: ' + v);
              var r, g, b, i, f, p, q, t;
              i = Math.floor(h * 6);
              f = h * 6 - i;
              p = v * (1 - s);
              q = v * (1 - f * s);
              t = v * (1 - (1 - f) * s);
              switch (i % 6) {
                  case 0: r = v, g = t, b = p; break;
                  case 1: r = q, g = v, b = p; break;
                  case 2: r = p, g = v, b = t; break;
                  case 3: r = p, g = q, b = v; break;
                  case 4: r = t, g = p, b = v; break;
                  case 5: r = v, g = p, b = q; break;
              }
          
          setState ("javascript.0.Geraete.YAHKA.r1"/*r1*/, Math.round(255 * r));
          setState ("javascript.0.Geraete.YAHKA.g1"/*g1*/, Math.round(255 * g));
          setState ("javascript.0.Geraete.YAHKA.b1"/*b1*/, Math.round(255 * b));     
          
          } // Ende der Funktion
          
          HSVtoRGB();  // Aufruf bei Skriptstart 
          
          on("javascript.0.Geraete.YAHKA.hue", function(dp) {
             h = dp.state.val / 360;
             HSVtoRGB();  // Aufruf bei Änderung von hue
          });
          on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
             s = dp.state.val / 100;
             HSVtoRGB();  // Aufruf bei Änderung von saturation
          });
          on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
             v = dp.state.val / 100;
             HSVtoRGB();  // Aufruf bei Änderung von dimmer
          });
          

          2476_errorlog_2.jpeg
          2476_img_bc9853b9a5f5-1.jpeg

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            rom.wagner80
            schrieb am zuletzt editiert von
            #6

            Hab noch was versucht :

            Es gibt im HomeKit die Möglichkeit, Farben direkt anzufahren. da sollte also eigentlich nur ein Wert raus kommen.

            Dem ist aber nicht so wie man im Log sieht…
            2476_img_e2e2b677e6cf-1.jpeg
            2476_errorlog_3.jpeg

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #7

              Stabilisieren sich die Werte nach einer bestimmten Zeit ? Dann kann man mit Verzögerung arbeiten.

              var timer = null;
              
              function HSVtoRGB() {
                 if(timer) clearTimeout(timer);
                 timer = setTimeout(HSV2RGB, 1000); // seit 1 s keine Änderung mehr
              }
              
              HSVtoRGB();  // Aufruf bei Skriptstart
              
              

              Die ursprüngliche Funktion HSVtoRGB() umbenennen in HSV2RGB() !

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                rom.wagner80
                schrieb am zuletzt editiert von
                #8

                Meinst du so ?

                var h = getState("javascript.0.Geraete.YAHKA.hue").val / 360; 
                var s = getState("javascript.0.Geraete.YAHKA.saturation").val / 100;
                var v = getState("javascript.0.Geraete.YAHKA.dimmer").val / 100;
                
                function HSV2RGB() {
                     log('h: ' + h + ' s: ' + s + ' v: ' + v);
                    var r, g, b, i, f, p, q, t;
                    i = Math.floor(h * 6);
                    f = h * 6 - i;
                    p = v * (1 - s);
                    q = v * (1 - f * s);
                    t = v * (1 - (1 - f) * s);
                    switch (i % 6) {
                        case 0: r = v, g = t, b = p; break;
                        case 1: r = q, g = v, b = p; break;
                        case 2: r = p, g = v, b = t; break;
                        case 3: r = p, g = q, b = v; break;
                        case 4: r = t, g = p, b = v; break;
                        case 5: r = v, g = p, b = q; break;
                    }
                
                setState ("javascript.0.Geraete.YAHKA.r1"/*r1*/, Math.round(255 * r));
                setState ("javascript.0.Geraete.YAHKA.g1"/*g1*/, Math.round(255 * g));
                setState ("javascript.0.Geraete.YAHKA.b1"/*b1*/, Math.round(255 * b));     
                
                } // Ende der Funktion
                var timer = null;
                
                function HSVtoRGB() {
                   if(timer) clearTimeout(timer);
                   timer = setTimeout(HSV2RGB, 1000); // seit 1 s keine Änderung mehr
                }
                
                HSV2RGB();  // Aufruf bei Skriptstart 
                
                on("javascript.0.Geraete.YAHKA.hue", function(dp) {
                   h = dp.state.val / 360;
                   HSV2RGB();  // Aufruf bei Änderung von hue
                });
                on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
                   s = dp.state.val / 100;
                   HSV2RGB();  // Aufruf bei Änderung von saturation
                });
                on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
                   v = dp.state.val / 100;
                   HSV2RGB();  // Aufruf bei Änderung von dimmer
                });
                

                Das scheint nicht zu wirken (s. Log)
                2476_errorlog_4.jpeg

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #9

                  Du solltest nur den Namen der Funktion selbst, nicht deren Aufruf ändern (wollte Dir unnötigen Aufwand ersparen). Richtig:

                  HSVtoRGB();  // Aufruf bei Skriptstart 
                  
                  on("javascript.0.Geraete.YAHKA.hue", function(dp) {
                     h = dp.state.val / 360;
                     HSVtoRGB();  // Aufruf bei Änderung von hue
                  });
                  on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
                     s = dp.state.val / 100;
                     HSVtoRGB();  // Aufruf bei Änderung von saturation
                  });
                  on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
                     v = dp.state.val / 100;
                     HSVtoRGB();  // Aufruf bei Änderung von dimmer
                  });
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    rom.wagner80
                    schrieb am zuletzt editiert von
                    #10

                    @paul53:

                    Du solltest nur den Namen der Funktion selbst, nicht deren Aufruf ändern (wollte Dir unnötigen Aufwand ersparen). Richtig:

                    HSVtoRGB();  // Aufruf bei Skriptstart 
                    
                    on("javascript.0.Geraete.YAHKA.hue", function(dp) {
                       h = dp.state.val / 360;
                       HSVtoRGB();  // Aufruf bei Änderung von hue
                    });
                    on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
                       s = dp.state.val / 100;
                       HSVtoRGB();  // Aufruf bei Änderung von saturation
                    });
                    on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
                       v = dp.state.val / 100;
                       HSVtoRGB();  // Aufruf bei Änderung von dimmer
                    });
                    ```` `  
                    

                    Okay. Das wird morgen getestet.

                    Vielen Dank erstmal und gute Nacht [emoji42]

                    Gesendet von iPhone mit Tapatalk

                    1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      rom.wagner80
                      schrieb am zuletzt editiert von
                      #11

                      @paul53:

                      Du solltest nur den Namen der Funktion selbst, nicht deren Aufruf ändern (wollte Dir unnötigen Aufwand ersparen). Richtig:

                      HSVtoRGB();  // Aufruf bei Skriptstart 
                      
                      on("javascript.0.Geraete.YAHKA.hue", function(dp) {
                         h = dp.state.val / 360;
                         HSVtoRGB();  // Aufruf bei Änderung von hue
                      });
                      on("javascript.0.Geraete.YAHKA.saturation", function(dp) {
                         s = dp.state.val / 100;
                         HSVtoRGB();  // Aufruf bei Änderung von saturation
                      });
                      on("javascript.0.Geraete.YAHKA.dimmer", function(dp) {
                         v = dp.state.val / 100;
                         HSVtoRGB();  // Aufruf bei Änderung von dimmer
                      });
                      ```` `  
                      

                      Nach erfolgter Änderung bekomme ich nur noch ein Ergebnis aus der Funktion HSVtoRGB. Allerdings immer noch zwei Ergebnisse bei der Funktion RGB zu Hex…Logs werde ich nachher noch nachreichen, wenn ich zuhause bin.

                      Gesendet von iPhone mit Tapatalk

                      1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        rom.wagner80
                        schrieb am zuletzt editiert von
                        #12

                        Hier jetzt mal der Log es sind sogar drei Ergebnisse aus der RGB zu Hex Funktion
                        2476_errorlog_5.jpeg

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #13

                          @rom.wagner80:

                          Hier jetzt mal der Log es sind sogar drei Ergebnisse aus der RGB zu Hex Funktion `
                          Es sind 3 setState() die <u>nacheinander</u> ausgeführt werden. Erst der letzte setState() sorgt für das endgültige Ergebnis (255, 21, 0).

                          EDIT: Wenn beide Wandlungen in <u>einem</u> Skript erfolgen würden, könnte man das Verhalten vermeiden.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • R Offline
                            R Offline
                            rom.wagner80
                            schrieb am zuletzt editiert von
                            #14

                            @paul53:

                            @rom.wagner80:

                            Hier jetzt mal der Log es sind sogar drei Ergebnisse aus der RGB zu Hex Funktion `
                            Es sind 3 setState() die <u>nacheinander</u> ausgeführt werden. Erst der letzte setState() sorgt für das endgültige Ergebnis (255, 21, 0).

                            EDIT: Wenn beide Wandlungen in <u>einem</u> Skript erfolgen würden, könnte man das Verhalten vermeiden. `

                            Das Mag sein und wird über kurz oder lang auch die Endlösung sein. Warum wird für den Wert der Farbe nicht der letzte Wert angenommen sondern der mittlere ? (s.Bilder) würde er tatsächlich den letzten nehmen, passt alles.
                            2476_errorlog_6.jpeg
                            2476_objekte.jpeg

                            1 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #15

                              @rom.wagner80:

                              würde er tatsächlich den letzten nehmen, passt alles. `
                              Der Empfänger der Hex-Werte ist wahrscheinlich mit der zu schnellen Übermittlung von 3 Werten überfordert.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • R Offline
                                R Offline
                                rom.wagner80
                                schrieb am zuletzt editiert von
                                #16

                                @paul53:

                                @rom.wagner80:

                                würde er tatsächlich den letzten nehmen, passt alles. Der Empfänger der Hex-Werte ist wahrscheinlich mit der zu schnellen Übermittlung von 3 Werten überfordert.

                                Das klingt plausibel. Aber wodurch werden denn die drei Hexadezimalen werte erzeugt? Ich übergebe doch nur einmal die Werte aus der HSV Funktion …

                                Gesendet von iPhone mit Tapatalk

                                1 Antwort Letzte Antwort
                                0
                                • paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #17

                                  @rom.wagner80:

                                  wodurch werden denn die drei Hexadezimalen werte erzeugt? `

                                  setState ("javascript.0.Geraete.YAHKA.r1"/*r1*/, Math.round(255 * r));
                                  setState ("javascript.0.Geraete.YAHKA.g1"/*g1*/, Math.round(255 * g));
                                  setState ("javascript.0.Geraete.YAHKA.b1"/*b1*/, Math.round(255 * b));     
                                  
                                  

                                  siehe erster Beitrag. Auf jeden Wert wird im 2. Skript getriggert.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  1 Antwort Letzte Antwort
                                  0
                                  • R Offline
                                    R Offline
                                    rom.wagner80
                                    schrieb am zuletzt editiert von
                                    #18

                                    @paul53:

                                    @rom.wagner80:

                                    wodurch werden denn die drei Hexadezimalen werte erzeugt? `

                                    setState ("javascript.0.Geraete.YAHKA.r1"/*r1*/, Math.round(255 * r));
                                    setState ("javascript.0.Geraete.YAHKA.g1"/*g1*/, Math.round(255 * g));
                                    setState ("javascript.0.Geraete.YAHKA.b1"/*b1*/, Math.round(255 * b));     
                                    
                                    

                                    siehe erster Beitrag. `

                                    Okay. Dann werde ich mal schauen, wie ich das Problem elegant gelöst bekomme. Werde mich dann hier wieder melden, wenn das Problem behoben ist oder ich neue Probleme habe [emoji6] Dank dir erstmal für deine Hilfe - wieder mal [emoji51]

                                    Gesendet von iPhone mit Tapatalk

                                    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

                                    473

                                    Online

                                    32.4k

                                    Benutzer

                                    81.4k

                                    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