Hallo,
ich habe nun mein Modul für die SK6812 LEDs geflasht ( #define USE_WS2812_CTYPE 3)
Wenn ich nun per MQTT als Wert „RRGGBBWW“ z.B. 00112233 sende , bekomme ich bei der Farbpalette des Tasmota Moduls folgende Farben angezeigt:
aus Grün wird Rot
Blau wird Grün
Rot wird Schwarz
Weiß wird blau
Leider kann ich die Farbe nicht aus der Palette des Tasmota Moduls auswählen sondern muß die Farbe per Slider oder mit dem IPS Color Picker einstellen.
Ist es möglich, das Modul entsprechend anzupassen, damit auch die SK6812 einsetzbar sind ?
Derzeit habe ich es mit eigenem Script so gelöst:
Script Colorpicker
<?
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']); // Speichert den vom Picker gesendeten Wert in der angelegten Variable
//Nun steht in der Vaiable ein HEX wert drin, z.b. FF321B diesen müssen wir nun in einzelne Werte für Rot / Grün / Blau zerlegen und genau das war der Part der für mich im Forum nicht einfach zu finden war
$r = (($_IPS['VALUE'] >> 16) & 0xFF);
$g = (($_IPS['VALUE'] >> 8) & 0xFF);
$b = (($_IPS['VALUE'] >> 0) & 0xFF);
//Slider mit Farbwerten aus dem Picker aktualisieren - da Slider Hexwerte ( 255) haben aber %Angaben geschrieben werden muß durch 2.55 geteilt werden
setvalueinteger(10061 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Rot]*/,hexdec($r)/2.55);
setvalueinteger(30011 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Grün]*/,hexdec($g)/2.55);
setvalueinteger(16888 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Blau]*/,hexdec($b)/2.55);
//Nun haben wir tatsächlich einzelne Werte für RGB und können diese weiterverarbeiten, z.B. an einen Client Socket senden um wie bei mir den LW-12 WLAN RGB Stripe Controller anzusteuern
$weiß=dechex(getvalueinteger(10048 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Weiß]*/)); // Wert vom Slider für Weiß holen und in Hex umwandeln
$weiß = str_pad($weiß, 2 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$hexcolor=dechex(getvalue(30016 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\color]*/));
$hexcolor = str_pad($hexcolor, 6 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$hexcolor=($hexcolor.$weiß); //Weißwert hinter den Farbwert setzen
$Farbwert = str_pad($hexcolor, 8 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
setvaluestring(30028 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Farbwert]*/,$Farbwert); //zur Kontrolle
TasmotaLED_setColorHex(10046 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED]*/,$Farbwert);
?>
Script Slider: ( die Variablen für die Slider sind als Typ „Integer“ mit Profil ~Intensity.255 angelegt)
<?
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$weiß=getvalueinteger(10048 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Weiß]*/); //Slider für Weiß
$rot=getvalueinteger(10061 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Rot]*/); //Slider für Rot
$grün=getvalueinteger(30011 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Grün]*/); //Slider für grün
$blau=getvalueinteger(16888 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Blau]*/); //Slider für Blau
$weiß1=dechex($weiß);
$weiß1 = str_pad($weiß1, 2 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$rot1=dechex($rot);
$rot1 = str_pad($rot1, 2 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$grün1=dechex($grün);
$grün1 = str_pad($grün1, 2 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$blau1= dechex($blau);
$blau1 = str_pad($blau1, 2 ,'0', STR_PAD_LEFT); //String mit "0" am Anfang auffüllen
$Farbwert=($rot1.$grün1.$blau1.$weiß1);
setvaluestring(30028 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED\Farbwert]*/,$Farbwert);
TasmotaLED_setColorHex(10046 /*[Test\Sonoff und ESPeasy\Sonoff MQTT Tasmota\WemosD1Tasmota1LED]*/,$Farbwert); //Farbwert per MQTT an Modul senden
?>