NEWS
RGBW Farbe berechnen
-
Ich habe mal wieder eine Denkblockade.
Hintergrund:
Wir haben user Bad renoviert.
Jetzt habe ich in der Decke DualWhite Spots, die ĂŒber den Tagesverlauf ihre Farbe von 2700K ĂŒber 5700K wieder auf 2700K Ă€ndern. lĂ€uft eigentlich ganz gut, mit der HCL Funktion des HmIP RGBW war ich nicht ganz zufrieden.ZusĂ€tzlich haben wir noch eine Nische mit einem RGBW Streifen in der Wand.
Anscheinend hat EQ-3 es auch da nicht geschafft RGB und W getrennt zu steuern, so dass man dem Weiss mit ca. 2700K noch RGB mit einem höheren Blauanteil zumischen kann um eine neutralweiĂe oder gar kaltweiĂe Farbe zu erhalten.
gehe ich auf dem Colorpicker ein wenig Richtung blau scheint weiss ganz auszugehen und der Streifen wird massiv dunkler.Jetzt versuche ich es ĂŒber die 4-Kanal Ansteuerung von RGB + WW.
Das klappt auch leidlich.
Meine Herausforderung liegt jetzt daran die Decke mit der Nische zu synchronisieren, so dass beides den annÀhernd gleichen Farbton bei annÀhernd konstanter Helligkeit des RGBW Streifens haben.
Mir ist klar, dass dabei der Streifen nicht auf 100% Maximalhelligkeit laufen kann, da der Blau-, ggf. auch Rotanteil des Streifens die maximale Helligkeit beeinflussen werden.
mein erster Versuch

dient eigentlich nur der Vorbereitung der möglichen variablen Anteile.
Erste HĂŒrde:
wie berechne ich aus dem Farbwert der Decke (2700K bis 5700K) die Zusammensetzung der RGB Anteile
(wobei das WeiĂ aus RGB erschwerend eher KaltweiĂ und dann noch mit einem lila stich ist) -
Ich habe mal wieder eine Denkblockade.
Hintergrund:
Wir haben user Bad renoviert.
Jetzt habe ich in der Decke DualWhite Spots, die ĂŒber den Tagesverlauf ihre Farbe von 2700K ĂŒber 5700K wieder auf 2700K Ă€ndern. lĂ€uft eigentlich ganz gut, mit der HCL Funktion des HmIP RGBW war ich nicht ganz zufrieden.ZusĂ€tzlich haben wir noch eine Nische mit einem RGBW Streifen in der Wand.
Anscheinend hat EQ-3 es auch da nicht geschafft RGB und W getrennt zu steuern, so dass man dem Weiss mit ca. 2700K noch RGB mit einem höheren Blauanteil zumischen kann um eine neutralweiĂe oder gar kaltweiĂe Farbe zu erhalten.
gehe ich auf dem Colorpicker ein wenig Richtung blau scheint weiss ganz auszugehen und der Streifen wird massiv dunkler.Jetzt versuche ich es ĂŒber die 4-Kanal Ansteuerung von RGB + WW.
Das klappt auch leidlich.
Meine Herausforderung liegt jetzt daran die Decke mit der Nische zu synchronisieren, so dass beides den annÀhernd gleichen Farbton bei annÀhernd konstanter Helligkeit des RGBW Streifens haben.
Mir ist klar, dass dabei der Streifen nicht auf 100% Maximalhelligkeit laufen kann, da der Blau-, ggf. auch Rotanteil des Streifens die maximale Helligkeit beeinflussen werden.
mein erster Versuch

dient eigentlich nur der Vorbereitung der möglichen variablen Anteile.
Erste HĂŒrde:
wie berechne ich aus dem Farbwert der Decke (2700K bis 5700K) die Zusammensetzung der RGB Anteile
(wobei das WeiĂ aus RGB erschwerend eher KaltweiĂ und dann noch mit einem lila stich ist)Das hat die ki ungeprĂŒft ausgegeben. Allerdings wurde ich noch nach weitern Informationen gefragt. Was ich so interpretiere, das selbst mit dieser Formel uU nicht das gewĂŒnschte Ergebnis herauskommt.
Kelvin Farbe RGB Ergebnis 1800 K Kerzenlicht (255, 147, 41) 2700 K WarmweiĂ (255, 169, 87) 4000 K NeutralweiĂ (255, 194, 135) 6500 K Tageslicht (255, 249, 253) 10000 K BlĂ€ulich (206, 226, 255) Wenn du mir sagst: Ob du RGBW, RGBWW, RGB+CCT, WS2812, PWM-LEDs, ⊠verwendest In welchem Farbraum oder Controller du das einsetzen willst (z. B. ioBroker, WLED, HomeKit, Zigbee) Ob du eine Variante mit Helligkeitskurve oder Tint-Shift brauchst ⊠dann erstelle ich dir eine optimierte Kelvin-â-RGB-Engine, exakt abgestimmt auf deine Hardware.function kelvinToRgb(tempK) { let T = tempK; // Step 1: CCT â xy let x, y; if (T < 4000) { x = -0.2661239e9 / (T*T*T) - 0.2343580e6 / (T*T) + 0.8776956e3 / T + 0.179910; } else { x = -3.0258469e9 / (T*T*T) + 2.1070379e6 / (T*T) + 0.2226347e3 / T + 0.240390; } y = -3.0 * x * x + 2.87 * x - 0.275; // Step 2: xy â XYZ let Y = 1.0; let X = (Y / y) * x; let Z = (Y / y) * (1 - x - y); // Step 3: XYZ â Linear RGB let r = 3.2406*X - 1.5372*Y - 0.4986*Z; let g = -0.9689*X + 1.8758*Y + 0.0415*Z; let b = 0.0557*X - 0.2040*Y + 1.0570*Z; // Clamp negative r = Math.max(0, r); g = Math.max(0, g); b = Math.max(0, b); // Step 4: Gamma correction function correct(c) { return c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1/2.4) - 0.055; } // Step 5: Scale to 0â255 return { r: Math.round(correct(r) * 255), g: Math.round(correct(g) * 255), b: Math.round(correct(b) * 255) }; }Wahrscheinlich gibt es bei npm noch ganz tolle Bibliotheken, die das bis zum Exzess können
-
Das hat die ki ungeprĂŒft ausgegeben. Allerdings wurde ich noch nach weitern Informationen gefragt. Was ich so interpretiere, das selbst mit dieser Formel uU nicht das gewĂŒnschte Ergebnis herauskommt.
Kelvin Farbe RGB Ergebnis 1800 K Kerzenlicht (255, 147, 41) 2700 K WarmweiĂ (255, 169, 87) 4000 K NeutralweiĂ (255, 194, 135) 6500 K Tageslicht (255, 249, 253) 10000 K BlĂ€ulich (206, 226, 255) Wenn du mir sagst: Ob du RGBW, RGBWW, RGB+CCT, WS2812, PWM-LEDs, ⊠verwendest In welchem Farbraum oder Controller du das einsetzen willst (z. B. ioBroker, WLED, HomeKit, Zigbee) Ob du eine Variante mit Helligkeitskurve oder Tint-Shift brauchst ⊠dann erstelle ich dir eine optimierte Kelvin-â-RGB-Engine, exakt abgestimmt auf deine Hardware.function kelvinToRgb(tempK) { let T = tempK; // Step 1: CCT â xy let x, y; if (T < 4000) { x = -0.2661239e9 / (T*T*T) - 0.2343580e6 / (T*T) + 0.8776956e3 / T + 0.179910; } else { x = -3.0258469e9 / (T*T*T) + 2.1070379e6 / (T*T) + 0.2226347e3 / T + 0.240390; } y = -3.0 * x * x + 2.87 * x - 0.275; // Step 2: xy â XYZ let Y = 1.0; let X = (Y / y) * x; let Z = (Y / y) * (1 - x - y); // Step 3: XYZ â Linear RGB let r = 3.2406*X - 1.5372*Y - 0.4986*Z; let g = -0.9689*X + 1.8758*Y + 0.0415*Z; let b = 0.0557*X - 0.2040*Y + 1.0570*Z; // Clamp negative r = Math.max(0, r); g = Math.max(0, g); b = Math.max(0, b); // Step 4: Gamma correction function correct(c) { return c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1/2.4) - 0.055; } // Step 5: Scale to 0â255 return { r: Math.round(correct(r) * 255), g: Math.round(correct(g) * 255), b: Math.round(correct(b) * 255) }; }Wahrscheinlich gibt es bei npm noch ganz tolle Bibliotheken, die das bis zum Exzess können
Super!
Danke! Das ist ein Anfang.@OliverIO sagte in RGBW Farbe berechnen:
Ob du RGBW, RGBWW, RGB+CCT, WS2812, PWM-LEDs, ⊠verwendest
@OliverIO sagte in RGBW Farbe berechnen:
In welchem Farbraum oder Controller du das einsetzen willst (z. B. ioBroker, WLED, HomeKit, Zigbee)
ÀÀÀh

Das sollte unerheblich srin, wenn ich R, G, B, WW einzeln ansteuere.
Das fertige von Homematic ist ja das Problem@OliverIO sagte in RGBW Farbe berechnen:
Ob du eine Variante mit Helligkeitskurve
das kommt spĂ€ter on top đ
@OliverIO sagte in RGBW Farbe berechnen:
Wahrscheinlich gibt es bei npm noch ganz tolle Bibliotheken, die das bis zum Exzess können.
Will ich aus verschiedenen GrĂŒnden gar nicht
...
und das JS muss ich erstmal in Blockly umdenken. -
Super!
Danke! Das ist ein Anfang.@OliverIO sagte in RGBW Farbe berechnen:
Ob du RGBW, RGBWW, RGB+CCT, WS2812, PWM-LEDs, ⊠verwendest
@OliverIO sagte in RGBW Farbe berechnen:
In welchem Farbraum oder Controller du das einsetzen willst (z. B. ioBroker, WLED, HomeKit, Zigbee)
ÀÀÀh

Das sollte unerheblich srin, wenn ich R, G, B, WW einzeln ansteuere.
Das fertige von Homematic ist ja das Problem@OliverIO sagte in RGBW Farbe berechnen:
Ob du eine Variante mit Helligkeitskurve
das kommt spĂ€ter on top đ
@OliverIO sagte in RGBW Farbe berechnen:
Wahrscheinlich gibt es bei npm noch ganz tolle Bibliotheken, die das bis zum Exzess können.
Will ich aus verschiedenen GrĂŒnden gar nicht
...
und das JS muss ich erstmal in Blockly umdenken. -
@Homoran sagte in RGBW Farbe berechnen:
und das JS muss ich erstmal in Blockly umdenken
ich wĂŒrde das in einen funktionsblock packen
-
@OliverIO sagte in RGBW Farbe berechnen:
ich wĂŒrde das in einen funktionsblock packen
auch ne Möglichkeit!
fĂŒr mich aber nur die allerletzte.
Ich will es ja nachvollziehen können -
Super!
Danke! Das ist ein Anfang.@OliverIO sagte in RGBW Farbe berechnen:
Ob du RGBW, RGBWW, RGB+CCT, WS2812, PWM-LEDs, ⊠verwendest
@OliverIO sagte in RGBW Farbe berechnen:
In welchem Farbraum oder Controller du das einsetzen willst (z. B. ioBroker, WLED, HomeKit, Zigbee)
ÀÀÀh

Das sollte unerheblich srin, wenn ich R, G, B, WW einzeln ansteuere.
Das fertige von Homematic ist ja das Problem@OliverIO sagte in RGBW Farbe berechnen:
Ob du eine Variante mit Helligkeitskurve
das kommt spĂ€ter on top đ
@OliverIO sagte in RGBW Farbe berechnen:
Wahrscheinlich gibt es bei npm noch ganz tolle Bibliotheken, die das bis zum Exzess können.
Will ich aus verschiedenen GrĂŒnden gar nicht
...
und das JS muss ich erstmal in Blockly umdenken. -
@Homoran sagte: erstmal in Blockly umdenken.
Ich habe mal diese Funktion nach Blockly umgesetzt, vereinfacht fĂŒr den Bereich von 1900 K bis 6600 K.

Gesteuert wird maximale Helligkeit.
-
@paul53 Super!
ich hÀtte es sogar noch mehr vereinfacht: mit einer linearen Formel. wÀre dann aber wahrscheinlich schiefgegangen.
Dass es eine Formel direkt fĂŒr Kelvin gibt "vereinfacht" die Sache natĂŒrlich.
Dann werd ich mal...
Danke!
-
@Homoran sagte: Dann werd ich mal...
Mit variabler Helligkeit:

Welche Farbtemperatur hat die weiĂe LED?
@paul53 sagte in RGBW Farbe berechnen:
Welche Farbtemperatur hat die weiĂe LED?
geschÀtzte 2700K
Doch bevor du v3 aus dem Hut zauberst..hab jetzt mal gebastelt:
ich nehme an, dass die 0...255 die ĂŒblichen RGB Steuerungen reprĂ€sentieren sollen.Leider arbeite der HmIP RGB mit stinknormalen Prozenten von 0-100

ich habe versucht das Skript darauf anzupassen

sollten die Faktoren auch betroffen sein, hab ich diese nicht geÀndert.Das Ergebnis des debug-Bausteins

und in der RealitÀt

wobei der automatische Weissabgleich hier alles deutlich schlimmer darstelltSORRY fĂŒr die bisher fehlenden Informationen und RiesenDank bis hierhin.
-
Um bei WeiĂ die gleiche Farbtemperatur zu haben, brauchst du einen LED-Streifen der sowohl KaltweiĂe als auch WarmweiĂe LEDs hat. Ăber die Farbtemperatur mischt dann der Controller die beiden richtig zusammen. Es gibt auch nur wenige Controller (ich habe noch keine gefunden), die zusĂ€tzlich zur Farbtemperatur noch RGB mischen können. Ich steuere dafĂŒr meinen RGBWW-Steifen mit zwei Controllern an (WeiĂ und RGB getrennt). So kann man dann alles zusammen mischen wie man möchte. Um mit einem RGBW-Streifen die gleiche Farbtemperatur zu bekommen wie mit einem rein weiĂen Streifen muss man einiges probieren. Ob das nur mit rechnen geht, bezweifle ich.
-
@paul53 sagte in RGBW Farbe berechnen:
Welche Farbtemperatur hat die weiĂe LED?
geschÀtzte 2700K
Doch bevor du v3 aus dem Hut zauberst..hab jetzt mal gebastelt:
ich nehme an, dass die 0...255 die ĂŒblichen RGB Steuerungen reprĂ€sentieren sollen.Leider arbeite der HmIP RGB mit stinknormalen Prozenten von 0-100

ich habe versucht das Skript darauf anzupassen

sollten die Faktoren auch betroffen sein, hab ich diese nicht geÀndert.Das Ergebnis des debug-Bausteins

und in der RealitÀt

wobei der automatische Weissabgleich hier alles deutlich schlimmer darstelltSORRY fĂŒr die bisher fehlenden Informationen und RiesenDank bis hierhin.
@Homoran sagte: HmIP RGB mit stinknormalen Prozenten von 0-100
Die Formeln sind fĂŒr den Wertebereich bis 255 ausgelegt. Um den HmIP-Bereich zu berĂŒcksichtigen, dividiere einfach den Wert des Level-DP (0...100) durch 255:

Beachte, dass bei "blue" der Logarithmus von temp - 10 gebildet wird!
-
Um bei WeiĂ die gleiche Farbtemperatur zu haben, brauchst du einen LED-Streifen der sowohl KaltweiĂe als auch WarmweiĂe LEDs hat. Ăber die Farbtemperatur mischt dann der Controller die beiden richtig zusammen. Es gibt auch nur wenige Controller (ich habe noch keine gefunden), die zusĂ€tzlich zur Farbtemperatur noch RGB mischen können. Ich steuere dafĂŒr meinen RGBWW-Steifen mit zwei Controllern an (WeiĂ und RGB getrennt). So kann man dann alles zusammen mischen wie man möchte. Um mit einem RGBW-Streifen die gleiche Farbtemperatur zu bekommen wie mit einem rein weiĂen Streifen muss man einiges probieren. Ob das nur mit rechnen geht, bezweifle ich.
@Dr.-Bakterius sagte in RGBW Farbe berechnen:
brauchst du einen LED-Streifen der sowohl KaltweiĂe als auch WarmweiĂe LEDs hat.
nicht ganz!
manuell bekomme ich es ja halbwegs hin, indem ich blau zumische.
Allerdings muss ich dann rot und grĂŒn etwas weniger zugeben wenn ich RGB und WW nitzen will um ausreichend Helligkeit beim "neutralweiss" zu bekommen.Das ist der Hintergrund dieser Diskussion
-
@Dr.-Bakterius sagte in RGBW Farbe berechnen:
brauchst du einen LED-Streifen der sowohl KaltweiĂe als auch WarmweiĂe LEDs hat.
nicht ganz!
manuell bekomme ich es ja halbwegs hin, indem ich blau zumische.
Allerdings muss ich dann rot und grĂŒn etwas weniger zugeben wenn ich RGB und WW nitzen will um ausreichend Helligkeit beim "neutralweiss" zu bekommen.Das ist der Hintergrund dieser Diskussion
@Homoran sagte in RGBW Farbe berechnen:
nicht ganz!
manuell bekomme ich es ja halbwegs hin, indem ich blau zumische.Und das wird immer mehr schlecht als recht funktionieren.
-
@Homoran sagte: HmIP RGB mit stinknormalen Prozenten von 0-100
Die Formeln sind fĂŒr den Wertebereich bis 255 ausgelegt. Um den HmIP-Bereich zu berĂŒcksichtigen, dividiere einfach den Wert des Level-DP (0...100) durch 255:

Beachte, dass bei "blue" der Logarithmus von temp - 10 gebildet wird!
@paul53 sagte in RGBW Farbe berechnen:
dividiere einfach den Wert des Level-DP (0...100) durch 255:
und in der steuereDP trotzdem bis 255 begrenzen?
@paul53 sagte in RGBW Farbe berechnen:
Beachte, dass bei "blue" der Logarithmus von temp - 10 gebildet wird!
Danke! my fault
-
@paul53 sagte in RGBW Farbe berechnen:
dividiere einfach den Wert des Level-DP (0...100) durch 255:
und in der steuereDP trotzdem bis 255 begrenzen?
@paul53 sagte in RGBW Farbe berechnen:
Beachte, dass bei "blue" der Logarithmus von temp - 10 gebildet wird!
Danke! my fault
-
@Homoran sagte: und in der steuereDP trotzdem bis 255 begrenzen?
Ja, das ist der gĂŒltige Wertebereich der Variablen.
@paul53 da klemmt's bei mir.
Level: 1...100; warum denn durch 255 teilen?
(klappt ĂŒbrigens auch nicht, nur wenn ich den Level z.B. auf 240 stelle.@Dr.-Bakterius sagte in RGBW Farbe berechnen:
Und das wird immer mehr schlecht als recht funktionieren.
das ist mir leider bewusst.
-
@paul53 da klemmt's bei mir.
Level: 1...100; warum denn durch 255 teilen?
(klappt ĂŒbrigens auch nicht, nur wenn ich den Level z.B. auf 240 stelle.@Dr.-Bakterius sagte in RGBW Farbe berechnen:
Und das wird immer mehr schlecht als recht funktionieren.
das ist mir leider bewusst.
-
@Homoran sagte: warum denn durch 255 teilen?
Weil anschlieĂend mit 0...255 multipliziert wird.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden