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. ioBroker Allgemein
  4. Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich

NEWS

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

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

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

Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
tradfri
65 Beiträge 8 Kommentatoren 11.7k Aufrufe 8 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.
  • M Offline
    M Offline
    marco-mh
    schrieb am zuletzt editiert von
    #54

    das hat geklappt.

    [{"success":{"/lights/8/state/hue":18204}}]iobroker@ubuntu1804vm:/opt/iobroker$ 
    
    

    aber selbes problem. erst änderung wenn ich in xy klicke und enter drücke

    node.js 16.15.1, NPM 8.11, js.Controller 4.0.23

    AsgothianA 1 Antwort Letzte Antwort
    0
    • M marco-mh

      das hat geklappt.

      [{"success":{"/lights/8/state/hue":18204}}]iobroker@ubuntu1804vm:/opt/iobroker$ 
      
      

      aber selbes problem. erst änderung wenn ich in xy klicke und enter drücke

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

      @marco-mh was ist mit den beiden zusätzlichen Befehlen die ich oben gepostet habe ?

      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
      • M marco-mh

        das wäre klasse wenn du da mal gucken könntest.
        die meldung beim support werde ich gleich machen.

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

        @marco-mh sagte in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

        das wäre klasse wenn du da mal gucken könntest.
        die meldung beim support werde ich gleich machen.

        Im Spoiler ist das Script. ich hatte das damals fuer die Hue Lampen gemacht, bei denen es im deconz auch noch einen bug gab.

        Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen.

        Ansonsten musst du nur in den LightID's jeweils die Objektbezeichnungen vorgeben.. als erstes den Namen für die Scriptgesteuerten Objekte, als zweites den Namen des Objektes im deconz, als drittes halt den typstring.

        Die States legt er beim ersten start selber an.

        var colorconv = require('color-convert');
        var converter = require('@q42philips/hue-color-converter');
        var JS = "javascript.0."
        var LightIDs = [ ["Light1","deconz.0.Light_1","LCT015"]];
        
        /*
        * Setup
        */
        
        for (i=0; i<LightIDs.length; i++)
        {
         createState(LightIDs[i][0]+"-y_hue"); 
         createState(LightIDs[i][0]+"-y_sat");
         createState(LightIDs[i][0]+"-y_ct")
         var LinkedObject = { self: JS+LightIDs[i][0], id: LightIDs[i][1], type:[i][2], v: ".bri", xy: '.xy', ct: '.ct' };
         createState(LightIDs[i][0]+"-LinkedObject");
         setState(LightIDs[i][0]+"-LinkedObject", { val: LinkedObject, ack:false });
         on({ id:LightIDs[i][0] + "-y_hue", change: "ne"}, CalcXYfromHueSat);
         on({ id:LightIDs[i][0] + "-y_sat", change: "ne"}, CalcXYfromHueSat);
         on({ id:LightIDs[i][0] + "-y_ct", change: "ne"}, CalcXYfromct);
        }
        
        var timer = null;
        
        function CalcXYfromHueSat(obj)
        {
         console.log('Object ' + JSON.stringify(obj.id) + ' was changed set');
         var ChangedIdName = JSON.stringify(obj.id);
         
         var i = ChangedIdName.lastIndexOf("-");
         ObjectName = ChangedIdName.substring(1, i);
         var Link = getState(ObjectName + "-LinkedObject").val
         console.log('Link = '+JSON.stringify(Link))
        
         console.log('Getting ' + Link.self + '-y_hue');
         var Hue = getState(Link.self + '-y_hue').val; // 0 .. 360
         console.log('Getting ' + Link.self + '-y_sat');
         var Sat = getState(Link.self + '-y_sat').val; // 0 .. 100
         console.log('Getting ' + Link.id + Link.v);
         var Val = getState(Link.id + Link.v).val * 255 / 100; // 0 .. 100 
        
         console.log('Hue ' + JSON.stringify(Hue) + ' Sat ' + JSON.stringify(Sat) + ' Bri '+JSON.stringify(Val));
        
         var rgb = colorconv.hsv.rgb(Hue, Sat, Val);
         console.log('RGB returned ' + JSON.stringify(rgb))
         var xy = converter.calculateXY(rgb[0], rgb[1], rgb[2], 'LCT015');
         console.log('xy returned ' + JSON.stringify(xy))
         if (!timer) {  setState(Link.id + Link.xy, xy[0]+','+xy[1]); }
        }
        
        
        function CalcXYfromct(obj)
        {
         var ct = obj.state.val
         var ctk = 6500 - ((ct-153) / (500-153) * 4500);
         console.log('Object ' + JSON.stringify(obj.id) + ' was set to raw'+ct+' '+ctk+'K')
         
         var ChangedIdName = JSON.stringify(obj.id);
         var i = ChangedIdName.lastIndexOf("-");
         ObjectName = ChangedIdName.substring(1, i);
         var Link = getState(ObjectName + "-LinkedObject").val
         console.log('Link = '+JSON.stringify(Link))
        
         var rgb = colorTemperatureToRGB(ctk);
         console.log('RGB returned ' + JSON.stringify(rgb))
         var hsv = colorconv.rgb.hsv(rgb.r, rgb.g, rgb.b);
         console.log('hsv returned ' + JSON.stringify(hsv))
         if (!timer) {
             timer = setTimeout(function() { timer = null; }, 50); 
             setState(Link.self+"-y_hue", hsv[0], false)
             setState(Link.self+"-y_sat", hsv[1], false)
             setState(Link.id + Link.ct, ct);
         }
        }
        
        function colorTemperatureToRGB(kelvin){
        
           var temp = kelvin / 100;
           var red, green, blue;
        
           if( temp <= 66 ){ 
               red = 255; 
               green = temp;
               green = 99.4708025861 * Math.log(green) - 161.1195681661;
               if( temp <= 19){
                   blue = 0;
               } else {
                   blue = temp-10;
                   blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
               }
           } else {
               red = temp - 60;
               red = 329.698727446 * Math.pow(red, -0.1332047592);
               green = temp - 60;
               green = 288.1221695283 * Math.pow(green, -0.0755148492 );
               blue = 255;
           }
           return {
               r : clamp(red,   0, 255),
               g : clamp(green, 0, 255),
               b : clamp(blue,  0, 255)
           }
        }
        
        function clamp( x, min, max ) {
           if(x<min){ return min; }
           if(x>max){ return max; }
           return x;
        }
        

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

        M G 2 Antworten Letzte Antwort
        0
        • AsgothianA Asgothian

          @marco-mh sagte in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

          das wäre klasse wenn du da mal gucken könntest.
          die meldung beim support werde ich gleich machen.

          Im Spoiler ist das Script. ich hatte das damals fuer die Hue Lampen gemacht, bei denen es im deconz auch noch einen bug gab.

          Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen.

          Ansonsten musst du nur in den LightID's jeweils die Objektbezeichnungen vorgeben.. als erstes den Namen für die Scriptgesteuerten Objekte, als zweites den Namen des Objektes im deconz, als drittes halt den typstring.

          Die States legt er beim ersten start selber an.

          var colorconv = require('color-convert');
          var converter = require('@q42philips/hue-color-converter');
          var JS = "javascript.0."
          var LightIDs = [ ["Light1","deconz.0.Light_1","LCT015"]];
          
          /*
          * Setup
          */
          
          for (i=0; i<LightIDs.length; i++)
          {
           createState(LightIDs[i][0]+"-y_hue"); 
           createState(LightIDs[i][0]+"-y_sat");
           createState(LightIDs[i][0]+"-y_ct")
           var LinkedObject = { self: JS+LightIDs[i][0], id: LightIDs[i][1], type:[i][2], v: ".bri", xy: '.xy', ct: '.ct' };
           createState(LightIDs[i][0]+"-LinkedObject");
           setState(LightIDs[i][0]+"-LinkedObject", { val: LinkedObject, ack:false });
           on({ id:LightIDs[i][0] + "-y_hue", change: "ne"}, CalcXYfromHueSat);
           on({ id:LightIDs[i][0] + "-y_sat", change: "ne"}, CalcXYfromHueSat);
           on({ id:LightIDs[i][0] + "-y_ct", change: "ne"}, CalcXYfromct);
          }
          
          var timer = null;
          
          function CalcXYfromHueSat(obj)
          {
           console.log('Object ' + JSON.stringify(obj.id) + ' was changed set');
           var ChangedIdName = JSON.stringify(obj.id);
           
           var i = ChangedIdName.lastIndexOf("-");
           ObjectName = ChangedIdName.substring(1, i);
           var Link = getState(ObjectName + "-LinkedObject").val
           console.log('Link = '+JSON.stringify(Link))
          
           console.log('Getting ' + Link.self + '-y_hue');
           var Hue = getState(Link.self + '-y_hue').val; // 0 .. 360
           console.log('Getting ' + Link.self + '-y_sat');
           var Sat = getState(Link.self + '-y_sat').val; // 0 .. 100
           console.log('Getting ' + Link.id + Link.v);
           var Val = getState(Link.id + Link.v).val * 255 / 100; // 0 .. 100 
          
           console.log('Hue ' + JSON.stringify(Hue) + ' Sat ' + JSON.stringify(Sat) + ' Bri '+JSON.stringify(Val));
          
           var rgb = colorconv.hsv.rgb(Hue, Sat, Val);
           console.log('RGB returned ' + JSON.stringify(rgb))
           var xy = converter.calculateXY(rgb[0], rgb[1], rgb[2], 'LCT015');
           console.log('xy returned ' + JSON.stringify(xy))
           if (!timer) {  setState(Link.id + Link.xy, xy[0]+','+xy[1]); }
          }
          
          
          function CalcXYfromct(obj)
          {
           var ct = obj.state.val
           var ctk = 6500 - ((ct-153) / (500-153) * 4500);
           console.log('Object ' + JSON.stringify(obj.id) + ' was set to raw'+ct+' '+ctk+'K')
           
           var ChangedIdName = JSON.stringify(obj.id);
           var i = ChangedIdName.lastIndexOf("-");
           ObjectName = ChangedIdName.substring(1, i);
           var Link = getState(ObjectName + "-LinkedObject").val
           console.log('Link = '+JSON.stringify(Link))
          
           var rgb = colorTemperatureToRGB(ctk);
           console.log('RGB returned ' + JSON.stringify(rgb))
           var hsv = colorconv.rgb.hsv(rgb.r, rgb.g, rgb.b);
           console.log('hsv returned ' + JSON.stringify(hsv))
           if (!timer) {
               timer = setTimeout(function() { timer = null; }, 50); 
               setState(Link.self+"-y_hue", hsv[0], false)
               setState(Link.self+"-y_sat", hsv[1], false)
               setState(Link.id + Link.ct, ct);
           }
          }
          
          function colorTemperatureToRGB(kelvin){
          
             var temp = kelvin / 100;
             var red, green, blue;
          
             if( temp <= 66 ){ 
                 red = 255; 
                 green = temp;
                 green = 99.4708025861 * Math.log(green) - 161.1195681661;
                 if( temp <= 19){
                     blue = 0;
                 } else {
                     blue = temp-10;
                     blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
                 }
             } else {
                 red = temp - 60;
                 red = 329.698727446 * Math.pow(red, -0.1332047592);
                 green = temp - 60;
                 green = 288.1221695283 * Math.pow(green, -0.0755148492 );
                 blue = 255;
             }
             return {
                 r : clamp(red,   0, 255),
                 g : clamp(green, 0, 255),
                 b : clamp(blue,  0, 255)
             }
          }
          
          function clamp( x, min, max ) {
             if(x<min){ return min; }
             if(x>max){ return max; }
             return x;
          }
          

          M Offline
          M Offline
          marco-mh
          schrieb am zuletzt editiert von
          #57

          @Asgothian
          Hey Asgothian, ich bin noch voll bei dir. Nur is gerade wenig Zeit. Ich komme gerade von der Weihnachtsfeier 🥃🥳🍺😇🍸🎊🍼. Am we ist auch wenig Zeit, Weihnachtszeit eben, du weißt was ich meine. Ich teste spätestens am Montag, ev schaffe ich es auch am Samstag.
          Aber ich bedanke mich schon einmal bei dir. Gruß Marco

          node.js 16.15.1, NPM 8.11, js.Controller 4.0.23

          1 Antwort Letzte Antwort
          0
          • AsgothianA Asgothian

            @marco-mh sagte in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

            das wäre klasse wenn du da mal gucken könntest.
            die meldung beim support werde ich gleich machen.

            Im Spoiler ist das Script. ich hatte das damals fuer die Hue Lampen gemacht, bei denen es im deconz auch noch einen bug gab.

            Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen.

            Ansonsten musst du nur in den LightID's jeweils die Objektbezeichnungen vorgeben.. als erstes den Namen für die Scriptgesteuerten Objekte, als zweites den Namen des Objektes im deconz, als drittes halt den typstring.

            Die States legt er beim ersten start selber an.

            var colorconv = require('color-convert');
            var converter = require('@q42philips/hue-color-converter');
            var JS = "javascript.0."
            var LightIDs = [ ["Light1","deconz.0.Light_1","LCT015"]];
            
            /*
            * Setup
            */
            
            for (i=0; i<LightIDs.length; i++)
            {
             createState(LightIDs[i][0]+"-y_hue"); 
             createState(LightIDs[i][0]+"-y_sat");
             createState(LightIDs[i][0]+"-y_ct")
             var LinkedObject = { self: JS+LightIDs[i][0], id: LightIDs[i][1], type:[i][2], v: ".bri", xy: '.xy', ct: '.ct' };
             createState(LightIDs[i][0]+"-LinkedObject");
             setState(LightIDs[i][0]+"-LinkedObject", { val: LinkedObject, ack:false });
             on({ id:LightIDs[i][0] + "-y_hue", change: "ne"}, CalcXYfromHueSat);
             on({ id:LightIDs[i][0] + "-y_sat", change: "ne"}, CalcXYfromHueSat);
             on({ id:LightIDs[i][0] + "-y_ct", change: "ne"}, CalcXYfromct);
            }
            
            var timer = null;
            
            function CalcXYfromHueSat(obj)
            {
             console.log('Object ' + JSON.stringify(obj.id) + ' was changed set');
             var ChangedIdName = JSON.stringify(obj.id);
             
             var i = ChangedIdName.lastIndexOf("-");
             ObjectName = ChangedIdName.substring(1, i);
             var Link = getState(ObjectName + "-LinkedObject").val
             console.log('Link = '+JSON.stringify(Link))
            
             console.log('Getting ' + Link.self + '-y_hue');
             var Hue = getState(Link.self + '-y_hue').val; // 0 .. 360
             console.log('Getting ' + Link.self + '-y_sat');
             var Sat = getState(Link.self + '-y_sat').val; // 0 .. 100
             console.log('Getting ' + Link.id + Link.v);
             var Val = getState(Link.id + Link.v).val * 255 / 100; // 0 .. 100 
            
             console.log('Hue ' + JSON.stringify(Hue) + ' Sat ' + JSON.stringify(Sat) + ' Bri '+JSON.stringify(Val));
            
             var rgb = colorconv.hsv.rgb(Hue, Sat, Val);
             console.log('RGB returned ' + JSON.stringify(rgb))
             var xy = converter.calculateXY(rgb[0], rgb[1], rgb[2], 'LCT015');
             console.log('xy returned ' + JSON.stringify(xy))
             if (!timer) {  setState(Link.id + Link.xy, xy[0]+','+xy[1]); }
            }
            
            
            function CalcXYfromct(obj)
            {
             var ct = obj.state.val
             var ctk = 6500 - ((ct-153) / (500-153) * 4500);
             console.log('Object ' + JSON.stringify(obj.id) + ' was set to raw'+ct+' '+ctk+'K')
             
             var ChangedIdName = JSON.stringify(obj.id);
             var i = ChangedIdName.lastIndexOf("-");
             ObjectName = ChangedIdName.substring(1, i);
             var Link = getState(ObjectName + "-LinkedObject").val
             console.log('Link = '+JSON.stringify(Link))
            
             var rgb = colorTemperatureToRGB(ctk);
             console.log('RGB returned ' + JSON.stringify(rgb))
             var hsv = colorconv.rgb.hsv(rgb.r, rgb.g, rgb.b);
             console.log('hsv returned ' + JSON.stringify(hsv))
             if (!timer) {
                 timer = setTimeout(function() { timer = null; }, 50); 
                 setState(Link.self+"-y_hue", hsv[0], false)
                 setState(Link.self+"-y_sat", hsv[1], false)
                 setState(Link.id + Link.ct, ct);
             }
            }
            
            function colorTemperatureToRGB(kelvin){
            
               var temp = kelvin / 100;
               var red, green, blue;
            
               if( temp <= 66 ){ 
                   red = 255; 
                   green = temp;
                   green = 99.4708025861 * Math.log(green) - 161.1195681661;
                   if( temp <= 19){
                       blue = 0;
                   } else {
                       blue = temp-10;
                       blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
                   }
               } else {
                   red = temp - 60;
                   red = 329.698727446 * Math.pow(red, -0.1332047592);
                   green = temp - 60;
                   green = 288.1221695283 * Math.pow(green, -0.0755148492 );
                   blue = 255;
               }
               return {
                   r : clamp(red,   0, 255),
                   g : clamp(green, 0, 255),
                   b : clamp(blue,  0, 255)
               }
            }
            
            function clamp( x, min, max ) {
               if(x<min){ return min; }
               if(x>max){ return max; }
               return x;
            }
            

            G Offline
            G Offline
            goeks
            schrieb am zuletzt editiert von
            #58

            @Asgothian said in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

            @marco-mh sagte in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

            das wäre klasse wenn du da mal gucken könntest.
            die meldung beim support werde ich gleich machen.

            Im Spoiler ist das Script. ich hatte das damals fuer die Hue Lampen gemacht, bei denen es im deconz auch noch einen bug gab.

            Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen.

            Ansonsten musst du nur in den LightID's jeweils die Objektbezeichnungen vorgeben.. als erstes den Namen für die Scriptgesteuerten Objekte, als zweites den Namen des Objektes im deconz, als drittes halt den typstring.

            Die States legt er beim ersten start selber an.

            var colorconv = require('color-convert');
            var converter = require('@q42philips/hue-color-converter');
            var JS = "javascript.0."
            var LightIDs = [ ["Light1","deconz.0.Light_1","LCT015"]];
            
            /*
            * Setup
            */
            
            for (i=0; i<LightIDs.length; i++)
            {
             createState(LightIDs[i][0]+"-y_hue"); 
             createState(LightIDs[i][0]+"-y_sat");
             createState(LightIDs[i][0]+"-y_ct")
             var LinkedObject = { self: JS+LightIDs[i][0], id: LightIDs[i][1], type:[i][2], v: ".bri", xy: '.xy', ct: '.ct' };
             createState(LightIDs[i][0]+"-LinkedObject");
             setState(LightIDs[i][0]+"-LinkedObject", { val: LinkedObject, ack:false });
             on({ id:LightIDs[i][0] + "-y_hue", change: "ne"}, CalcXYfromHueSat);
             on({ id:LightIDs[i][0] + "-y_sat", change: "ne"}, CalcXYfromHueSat);
             on({ id:LightIDs[i][0] + "-y_ct", change: "ne"}, CalcXYfromct);
            }
            
            var timer = null;
            
            function CalcXYfromHueSat(obj)
            {
             console.log('Object ' + JSON.stringify(obj.id) + ' was changed set');
             var ChangedIdName = JSON.stringify(obj.id);
             
             var i = ChangedIdName.lastIndexOf("-");
             ObjectName = ChangedIdName.substring(1, i);
             var Link = getState(ObjectName + "-LinkedObject").val
             console.log('Link = '+JSON.stringify(Link))
            
             console.log('Getting ' + Link.self + '-y_hue');
             var Hue = getState(Link.self + '-y_hue').val; // 0 .. 360
             console.log('Getting ' + Link.self + '-y_sat');
             var Sat = getState(Link.self + '-y_sat').val; // 0 .. 100
             console.log('Getting ' + Link.id + Link.v);
             var Val = getState(Link.id + Link.v).val * 255 / 100; // 0 .. 100 
            
             console.log('Hue ' + JSON.stringify(Hue) + ' Sat ' + JSON.stringify(Sat) + ' Bri '+JSON.stringify(Val));
            
             var rgb = colorconv.hsv.rgb(Hue, Sat, Val);
             console.log('RGB returned ' + JSON.stringify(rgb))
             var xy = converter.calculateXY(rgb[0], rgb[1], rgb[2], 'LCT015');
             console.log('xy returned ' + JSON.stringify(xy))
             if (!timer) {  setState(Link.id + Link.xy, xy[0]+','+xy[1]); }
            }
            
            
            function CalcXYfromct(obj)
            {
             var ct = obj.state.val
             var ctk = 6500 - ((ct-153) / (500-153) * 4500);
             console.log('Object ' + JSON.stringify(obj.id) + ' was set to raw'+ct+' '+ctk+'K')
             
             var ChangedIdName = JSON.stringify(obj.id);
             var i = ChangedIdName.lastIndexOf("-");
             ObjectName = ChangedIdName.substring(1, i);
             var Link = getState(ObjectName + "-LinkedObject").val
             console.log('Link = '+JSON.stringify(Link))
            
             var rgb = colorTemperatureToRGB(ctk);
             console.log('RGB returned ' + JSON.stringify(rgb))
             var hsv = colorconv.rgb.hsv(rgb.r, rgb.g, rgb.b);
             console.log('hsv returned ' + JSON.stringify(hsv))
             if (!timer) {
                 timer = setTimeout(function() { timer = null; }, 50); 
                 setState(Link.self+"-y_hue", hsv[0], false)
                 setState(Link.self+"-y_sat", hsv[1], false)
                 setState(Link.id + Link.ct, ct);
             }
            }
            
            function colorTemperatureToRGB(kelvin){
            
               var temp = kelvin / 100;
               var red, green, blue;
            
               if( temp <= 66 ){ 
                   red = 255; 
                   green = temp;
                   green = 99.4708025861 * Math.log(green) - 161.1195681661;
                   if( temp <= 19){
                       blue = 0;
                   } else {
                       blue = temp-10;
                       blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
                   }
               } else {
                   red = temp - 60;
                   red = 329.698727446 * Math.pow(red, -0.1332047592);
                   green = temp - 60;
                   green = 288.1221695283 * Math.pow(green, -0.0755148492 );
                   blue = 255;
               }
               return {
                   r : clamp(red,   0, 255),
                   g : clamp(green, 0, 255),
                   b : clamp(blue,  0, 255)
               }
            }
            
            function clamp( x, min, max ) {
               if(x<min){ return min; }
               if(x>max){ return max; }
               return x;
            }
            

            Ich habe mir schon viele Lösungsansätze angeschaut, jedoch konnte ich keins finden, mit dem ich Kelvin sowie die Farben einstellen kann.
            Einzig und allein was ich auch hinbekommen habe, ist das Ein- und Ausschalten, sowie die Anpassung der Helligkeit.

            Ich bin wie folgt vorgegangen:

            0: Hue Lampe mit cc2531
            1: Script unter Scirpte/Global eingefügt
            2: LightsIDs definiert
            3: Yahka folgende Einträge getätigt
            7ce811e0-0ca5-4078-aebf-b63be6ac12a6-grafik.png
            d089145d-8569-4f2f-9cb1-8b91c5b35b73-grafik.png

            Ich wäre mit Euch sehr verbunden, wenn mich jemand aufklären könnte...:grimacing:

            AsgothianA 1 Antwort Letzte Antwort
            0
            • G goeks

              @Asgothian said in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

              @marco-mh sagte in Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich:

              das wäre klasse wenn du da mal gucken könntest.
              die meldung beim support werde ich gleich machen.

              Im Spoiler ist das Script. ich hatte das damals fuer die Hue Lampen gemacht, bei denen es im deconz auch noch einen bug gab.

              Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen.

              Ansonsten musst du nur in den LightID's jeweils die Objektbezeichnungen vorgeben.. als erstes den Namen für die Scriptgesteuerten Objekte, als zweites den Namen des Objektes im deconz, als drittes halt den typstring.

              Die States legt er beim ersten start selber an.

              var colorconv = require('color-convert');
              var converter = require('@q42philips/hue-color-converter');
              var JS = "javascript.0."
              var LightIDs = [ ["Light1","deconz.0.Light_1","LCT015"]];
              
              /*
              * Setup
              */
              
              for (i=0; i<LightIDs.length; i++)
              {
               createState(LightIDs[i][0]+"-y_hue"); 
               createState(LightIDs[i][0]+"-y_sat");
               createState(LightIDs[i][0]+"-y_ct")
               var LinkedObject = { self: JS+LightIDs[i][0], id: LightIDs[i][1], type:[i][2], v: ".bri", xy: '.xy', ct: '.ct' };
               createState(LightIDs[i][0]+"-LinkedObject");
               setState(LightIDs[i][0]+"-LinkedObject", { val: LinkedObject, ack:false });
               on({ id:LightIDs[i][0] + "-y_hue", change: "ne"}, CalcXYfromHueSat);
               on({ id:LightIDs[i][0] + "-y_sat", change: "ne"}, CalcXYfromHueSat);
               on({ id:LightIDs[i][0] + "-y_ct", change: "ne"}, CalcXYfromct);
              }
              
              var timer = null;
              
              function CalcXYfromHueSat(obj)
              {
               console.log('Object ' + JSON.stringify(obj.id) + ' was changed set');
               var ChangedIdName = JSON.stringify(obj.id);
               
               var i = ChangedIdName.lastIndexOf("-");
               ObjectName = ChangedIdName.substring(1, i);
               var Link = getState(ObjectName + "-LinkedObject").val
               console.log('Link = '+JSON.stringify(Link))
              
               console.log('Getting ' + Link.self + '-y_hue');
               var Hue = getState(Link.self + '-y_hue').val; // 0 .. 360
               console.log('Getting ' + Link.self + '-y_sat');
               var Sat = getState(Link.self + '-y_sat').val; // 0 .. 100
               console.log('Getting ' + Link.id + Link.v);
               var Val = getState(Link.id + Link.v).val * 255 / 100; // 0 .. 100 
              
               console.log('Hue ' + JSON.stringify(Hue) + ' Sat ' + JSON.stringify(Sat) + ' Bri '+JSON.stringify(Val));
              
               var rgb = colorconv.hsv.rgb(Hue, Sat, Val);
               console.log('RGB returned ' + JSON.stringify(rgb))
               var xy = converter.calculateXY(rgb[0], rgb[1], rgb[2], 'LCT015');
               console.log('xy returned ' + JSON.stringify(xy))
               if (!timer) {  setState(Link.id + Link.xy, xy[0]+','+xy[1]); }
              }
              
              
              function CalcXYfromct(obj)
              {
               var ct = obj.state.val
               var ctk = 6500 - ((ct-153) / (500-153) * 4500);
               console.log('Object ' + JSON.stringify(obj.id) + ' was set to raw'+ct+' '+ctk+'K')
               
               var ChangedIdName = JSON.stringify(obj.id);
               var i = ChangedIdName.lastIndexOf("-");
               ObjectName = ChangedIdName.substring(1, i);
               var Link = getState(ObjectName + "-LinkedObject").val
               console.log('Link = '+JSON.stringify(Link))
              
               var rgb = colorTemperatureToRGB(ctk);
               console.log('RGB returned ' + JSON.stringify(rgb))
               var hsv = colorconv.rgb.hsv(rgb.r, rgb.g, rgb.b);
               console.log('hsv returned ' + JSON.stringify(hsv))
               if (!timer) {
                   timer = setTimeout(function() { timer = null; }, 50); 
                   setState(Link.self+"-y_hue", hsv[0], false)
                   setState(Link.self+"-y_sat", hsv[1], false)
                   setState(Link.id + Link.ct, ct);
               }
              }
              
              function colorTemperatureToRGB(kelvin){
              
                 var temp = kelvin / 100;
                 var red, green, blue;
              
                 if( temp <= 66 ){ 
                     red = 255; 
                     green = temp;
                     green = 99.4708025861 * Math.log(green) - 161.1195681661;
                     if( temp <= 19){
                         blue = 0;
                     } else {
                         blue = temp-10;
                         blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
                     }
                 } else {
                     red = temp - 60;
                     red = 329.698727446 * Math.pow(red, -0.1332047592);
                     green = temp - 60;
                     green = 288.1221695283 * Math.pow(green, -0.0755148492 );
                     blue = 255;
                 }
                 return {
                     r : clamp(red,   0, 255),
                     g : clamp(green, 0, 255),
                     b : clamp(blue,  0, 255)
                 }
              }
              
              function clamp( x, min, max ) {
                 if(x<min){ return min; }
                 if(x>max){ return max; }
                 return x;
              }
              

              Ich habe mir schon viele Lösungsansätze angeschaut, jedoch konnte ich keins finden, mit dem ich Kelvin sowie die Farben einstellen kann.
              Einzig und allein was ich auch hinbekommen habe, ist das Ein- und Ausschalten, sowie die Anpassung der Helligkeit.

              Ich bin wie folgt vorgegangen:

              0: Hue Lampe mit cc2531
              1: Script unter Scirpte/Global eingefügt
              2: LightsIDs definiert
              3: Yahka folgende Einträge getätigt
              7ce811e0-0ca5-4078-aebf-b63be6ac12a6-grafik.png
              d089145d-8569-4f2f-9cb1-8b91c5b35b73-grafik.png

              Ich wäre mit Euch sehr verbunden, wenn mich jemand aufklären könnte...:grimacing:

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

              @goeks Die Aufklärung ist einfach. Du musst schon die vom Skript erzeugten und überwachten Datenpunkte bei hue und sat eintragen, nicht den von Dir eingetragenen Datenpunkt der anzeigt ob das Skript läuft oder nicht.

              Wie die Datenpunkte heissen kann ich Dir so nicht sagen, da ich die von Dir benutzten Light ID's nicht kenne.

              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
              • G Offline
                G Offline
                goeks
                schrieb am zuletzt editiert von
                #60

                @Asgothian Vielen Dank für deine fixe antwort. Jedoch musste ich festellen, dass einmal in meinem letzten Post nicht funktioneirt bzw. ein Modul nachinstalliert wurde,aber trotz allem nicht gefunden wird und mir einfach die Grundlagen fehelen, um die umsetzen zu können.

                Kannst Du mir bitte mitteilen, was alles an Informationen fehlt, damit Du bzw. andere Forummitglieder mir helfen können.
                Wie im ersten Beitrag von mir schon erwähnt wurde, kann ich die Helligkeit und das komplette Ein- und Ausschalten bedienen, weil ich die die richtigen Datenpunkte unter yahka verknüpfen konnte. Nun weiß ich nicht, wie ich ein Script mit den Datenpunkten bzw. Objekten verküpfen kann.

                0c613969-b127-47c0-bb83-d8265eb87f90-grafik.png

                AsgothianA 1 Antwort Letzte Antwort
                0
                • G goeks

                  @Asgothian Vielen Dank für deine fixe antwort. Jedoch musste ich festellen, dass einmal in meinem letzten Post nicht funktioneirt bzw. ein Modul nachinstalliert wurde,aber trotz allem nicht gefunden wird und mir einfach die Grundlagen fehelen, um die umsetzen zu können.

                  Kannst Du mir bitte mitteilen, was alles an Informationen fehlt, damit Du bzw. andere Forummitglieder mir helfen können.
                  Wie im ersten Beitrag von mir schon erwähnt wurde, kann ich die Helligkeit und das komplette Ein- und Ausschalten bedienen, weil ich die die richtigen Datenpunkte unter yahka verknüpfen konnte. Nun weiß ich nicht, wie ich ein Script mit den Datenpunkten bzw. Objekten verküpfen kann.

                  0c613969-b127-47c0-bb83-d8265eb87f90-grafik.png

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

                  @goeks Kannst du auf TS kommen ? Dann können wir das zusammen durch gehen.

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

                  G 1 Antwort Letzte Antwort
                  0
                  • AsgothianA Asgothian

                    @goeks Kannst du auf TS kommen ? Dann können wir das zusammen durch gehen.

                    G Offline
                    G Offline
                    goeks
                    schrieb am zuletzt editiert von
                    #62

                    @Asgothian Ich entschuldige mich vielmals, habe deine Nachricht jetzt erst gesehen. Ich habe Teamspeak heruntergeladen und bin nun angemeledet, jedoch müsste ich noch von einem Mod freigeschaltet werden.

                    VG
                    goeks

                    AsgothianA 1 Antwort Letzte Antwort
                    0
                    • G goeks

                      @Asgothian Ich entschuldige mich vielmals, habe deine Nachricht jetzt erst gesehen. Ich habe Teamspeak heruntergeladen und bin nun angemeledet, jedoch müsste ich noch von einem Mod freigeschaltet werden.

                      VG
                      goeks

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

                      @goeks
                      Wir können das morgen Abend versuchen wenn du Zeit hast. Dann sollte auch ein mod da sein.

                      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
                      • Alexander RehA Offline
                        Alexander RehA Offline
                        Alexander Reh
                        schrieb am zuletzt editiert von
                        #64

                        Hi ihr geilen Menschen der Nullen und Einsen!

                        Ich hab das mit dem Script auch ausprobiert, weiß aber nicht was du meinst mit:

                        "Wichtig: fuer eine korrekte Umrechnung der Farben musst du eine der Philips Lampenbezeichnungen mit angeben, damit korrekt umgerechnet wird. Da heist es schauen und spielen."

                        Ich versteh auch nicht welche Datenpunkte man wo eintragen muss das es vernünftig läuft???

                        Kann mir da evtl. Jemand weiterhelfen???

                        IOBroker auf Raspi4 - 4GB; Hoobs - Homebridge auf Raspi 3+ - Homekit ;)

                        1 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          markwien
                          schrieb am zuletzt editiert von
                          #65

                          hallo ich habe selbes problem mit ikea farb lampen und cc2531 stick und yahka.

                          habt ihr da eine lösung gefunden... wie es theoretisch funktioniert ist mir klar aber meine javascript kentnisse sind etwas mager ...

                          im prinzip benötige ich einen script der die farb werte von hue auf hex rgb ikea umrechnet und dann setzt im objekt der lampe...

                          1 Antwort Letzte Antwort
                          1
                          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

                          749

                          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