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. Skripten / Logik
  4. *GELÖST* HSV to RGB Script Frage/ Hilfe

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    105

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
10 Beiträge 5 Kommentatoren 2.8k 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.
  • ElzersharkE Offline
    ElzersharkE Offline
    Elzershark
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • ElzersharkE Offline
      ElzersharkE Offline
      Elzershark
      schrieb am zuletzt editiert von
      #2

      /push

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

      https://t.me/joinchat/BD87n3xMU0QzYmUy

      https://www.facebook.com/elzershark

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • ElzersharkE Offline
          ElzersharkE Offline
          Elzershark
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • ElzersharkE Offline
              ElzersharkE Offline
              Elzershark
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • ElzersharkE Offline
                  ElzersharkE Offline
                  Elzershark
                  schrieb am zuletzt editiert von
                  #8

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

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

                  https://t.me/joinchat/BD87n3xMU0QzYmUy

                  https://www.facebook.com/elzershark

                  1 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    rom.wagner80
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #10

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

                      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

                      855

                      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