Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Tradfri RGB über deconz und Yahka, Farbwahl nicht möglich

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @marco-mh last edited by Asgothian

      @marco-mh ersetz bitte das 'config' durch 'state' im Befehl
      wenn das klappt, bitte hinterher noch einmal, aber das "hue":18204 ersetzen durch

      "hue":18204, "sat": 230, "bri":230

      und danach noch :

      "hue":18204, "sat": 230, "bri":230 , "colormode": hue

      A.

      1 Reply Last reply Reply Quote 0
      • M
        marco-mh last edited by

        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

        Asgothian 1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @marco-mh last edited by

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

          A.

          1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @marco-mh last edited by

            @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 G 2 Replies Last reply Reply Quote 0
            • M
              marco-mh @Asgothian last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • G
                goeks @Asgothian last edited by

                @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...😬

                Asgothian 1 Reply Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @goeks last edited by

                  @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.

                  1 Reply Last reply Reply Quote 0
                  • G
                    goeks last edited by

                    @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

                    Asgothian 1 Reply Last reply Reply Quote 0
                    • Asgothian
                      Asgothian Developer @goeks last edited by

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

                      G 1 Reply Last reply Reply Quote 0
                      • G
                        goeks @Asgothian last edited by

                        @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

                        Asgothian 1 Reply Last reply Reply Quote 0
                        • Asgothian
                          Asgothian Developer @goeks last edited by

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

                          A.

                          1 Reply Last reply Reply Quote 0
                          • Alexander Reh
                            Alexander Reh last edited by

                            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???

                            1 Reply Last reply Reply Quote 0
                            • M
                              markwien last edited by

                              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 Reply Last reply Reply Quote 1
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              803
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              tradfri
                              8
                              65
                              9407
                              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