Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. *GELÖST* HSV to RGB Script Frage/ Hilfe

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    307

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

*GELÖST* HSV to RGB Script Frage/ Hilfe

Scheduled Pinned Locked Moved Skripten / Logik
10 Posts 5 Posters 2.9k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ElzersharkE Offline
    ElzersharkE Offline
    Elzershark
    wrote on last edited by
    #1

    Hi, ich bräuchte mal Hilfe.

    Und zwar möchte ich gerne HSV Werte umwandeln in RGB Werte.

    Ich habe das hier gefunden und schon ein wenig probiert, aber bekomme es nicht hin.

    Das Original Script:

    ! ````
    /* accepts parameters

    • h Object = {h:x, s:y, v:z}
    • OR
    • h, s, v
      */
      function HSVtoRGB(h, s, v) {
      var r, g, b, i, f, p, q, t;
      if (arguments.length === 1) {
      s = h.s, v = h.v, h = h.h;
      }
      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;
      }
      return {
      r: Math.round(r * 255),
      g: Math.round(g * 255),
      b: Math.round(b * 255)
      };
      }
    
    Das was ich gerne machen möchte:
    
    Ich habe 3 Objekte (h,s,v) wo z.B. die Werte drin sind: h=120 s=100 v=100 (Farbe Grün)
    
    Jetzt möchte ich gerne das in den 3 Objekten die ich angelegt habe (r,g,b) die Werte für Grün dann drin stehen (0,255,0)
    
    Ich habe das probiert, aber ohne Erfolg.
    
    Weiß jemand wie es richtig gemacht wird?
    
    

    /* accepts parameters

    • h Object = {h:x, s:y, v:z}
    • OR
    • h, s, v
      */
      function HSVtoRGB(

    h = getState("javascript.0.Geraete.Arduino.hue").val,
    s = getState("javascript.0.Geraete.Arduino.saturation").val,
    v = getState("javascript.0.Geraete.Arduino.dimmer").val)

    {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
    s = h.s, v = h.v, h = h.h;
    }
    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;
    }
    return {
    r: Math.round(r * 255),
    g: Math.round(g * 255),
    b: Math.round(b * 255)
    };

    setState("javascript.0.Geraete.Arduino.r1"/r1/, r),
    setState("javascript.0.Geraete.Arduino.g1"/g1/, g),
    setState("javascript.0.Geraete.Arduino.b1"/b1/, b);

    }

    https://www.youtube.com/c/Elzershark

    https://t.me/joinchat/BD87n3xMU0QzYmUy

    https://www.facebook.com/elzershark

    1 Reply Last reply
    0
    • ElzersharkE Offline
      ElzersharkE Offline
      Elzershark
      wrote on last edited by
      #2

      /push

      https://www.youtube.com/c/Elzershark

      https://t.me/joinchat/BD87n3xMU0QzYmUy

      https://www.facebook.com/elzershark

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        Eine Funktion wird nur abgearbeitet, wenn sie auch aufgerufen wird.

        // Initialisierung bei Skriptstart
        var h = getState("javascript.0.Geraete.Arduino.hue").val; 
        var s = getState("javascript.0.Geraete.Arduino.saturation").val;
        var v = getState("javascript.0.Geraete.Arduino.dimmer").val;
        
        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.Arduino.r1"/*r1*/, Math.round(255 * r));
           setState("javascript.0.Geraete.Arduino.g1"/*g1*/, Math.round(255 * g));
           setState("javascript.0.Geraete.Arduino.b1"/*b1*/, Math.round(255 * b));     
        } // Ende der Funktion
        
        HSVtoRGB();  // Aufruf bei Skriptstart 
        
        on("javascript.0.Geraete.Arduino.hue", function(dp) {
           h = dp.state.val;
           HSVtoRGB();  // Aufruf bei Änderung von hue
        });
        on("javascript.0.Geraete.Arduino.saturation", function(dp) {
           s = dp.state.val;
           HSVtoRGB();  // Aufruf bei Änderung von saturation
        });
        on("javascript.0.Geraete.Arduino.dimmer", function(dp) {
           v = dp.state.val;
           HSVtoRGB();  // Aufruf bei Änderung von dimmer
        });
        
        

        EDIT: Faktor 255 bei setState() zugefügt.

        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 Reply Last reply
        0
        • ElzersharkE Offline
          ElzersharkE Offline
          Elzershark
          wrote on last edited by
          #4

          Leider funktioniert es so noch nicht.

          Ganz oben stimmt was mit der Klammer nicht.

          hm..

          https://www.youtube.com/c/Elzershark

          https://t.me/joinchat/BD87n3xMU0QzYmUy

          https://www.facebook.com/elzershark

          1 Reply Last reply
          0
          • paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #5

            Sorry. Die Variablendeklaration stimmt nicht (Semikolon).

            // Initialisierung bei Skriptstart
            var h = getState("javascript.0.Geraete.Arduino.hue").val;
            var s = getState("javascript.0.Geraete.Arduino.saturation").val;
            var v = getState("javascript.0.Geraete.Arduino.dimmer").val; 
            
            

            Sowas kommt von Copy & paste.

            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 Reply Last reply
            0
            • ElzersharkE Offline
              ElzersharkE Offline
              Elzershark
              wrote on last edited by
              #6

              Kann sein das was an der Formel nicht stimmt. Es ändert sich nichts. Es werden keine Werte gesetzt in r,g,b.

              r1 hat immer den Wert 255… b.z.w. 100.. grad nochmal geguckt

              g1 u. b1 haben immer 0

              hm..
              4339_2018-03-26.jpg

              https://www.youtube.com/c/Elzershark

              https://t.me/joinchat/BD87n3xMU0QzYmUy

              https://www.facebook.com/elzershark

              1 Reply Last reply
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                wrote on last edited by
                #7

                Sieht für mich aus als wird hue, sat, brightness im Bereich von 0..1 erwartet, nicht 0..360 bzw. 0..100. Probier mal folgende Änderung:

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

                und außerdem

                // Initialisierung bei Skriptstart
                var h = getState("javascript.0.Geraete.Arduino.hue").val / 360;
                var s = getState("javascript.0.Geraete.Arduino.saturation").val / 100;
                var v = getState("javascript.0.Geraete.Arduino.dimmer").val / 100;
                

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                1 Reply Last reply
                0
                • ElzersharkE Offline
                  ElzersharkE Offline
                  Elzershark
                  wrote on last edited by
                  #8

                  Super. Funzt… Danke schön :) :)

                  https://www.youtube.com/c/Elzershark

                  https://t.me/joinchat/BD87n3xMU0QzYmUy

                  https://www.facebook.com/elzershark

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    rom.wagner80
                    wrote on last edited by
                    #9

                    Hallo zusammen,

                    darf ich das Thema nochmal aufnehmen ?

                    Habe das ganze halbwegs ans laufen bekommen.

                    Mir werden allerdings Kommazahlen für r g und b ausgegeben. wie runde ich die ?

                    Danke für eure Hilfe

                    M 1 Reply Last reply
                    0
                    • R rom.wagner80

                      Hallo zusammen,

                      darf ich das Thema nochmal aufnehmen ?

                      Habe das ganze halbwegs ans laufen bekommen.

                      Mir werden allerdings Kommazahlen für r g und b ausgegeben. wie runde ich die ?

                      Danke für eure Hilfe

                      M Offline
                      M Offline
                      Magicmoon1
                      wrote on last edited by
                      #10

                      @rom-wagner80 Math.Round(); würde ich sagen oder .Ceil() zum aufrunden oder .floor() zum abrunden

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      590

                      Online

                      32.7k

                      Users

                      82.5k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe