[Modul 4.3] Tasmota

Warnung noch mal.
Wenn Ihr in der Datei was ändert, was mit MQTT zu tun hat, muss Kai das wissen:
Sonoff-Tasmota/user_config.h at development · arendst/Sonoff-Tasmota · GitHub
Ganz am Anfang hatte ich unsere Modul umgestellt :

#define MQTT_STATUS_OFF        "OFF"             // [StateText1] Command or Status result when turned off (needs to be a string like "0" or "Off")
#define MQTT_STATUS_ON "ON" // [StateText2] Command or Status result when turned on (needs to be a string like "1" or "On")

Da hatte ich statt OFF ne 0 gesetzt und bei ON ne 1, das bleibt im Eeprom erhalten !
Also immer drauf achten, was so in der Konsole der Sonoff läuft, ev. hilft da ein „Reset 2“, danach muss aber Wlan neu eingreichtet werden. (Tasmota Wiki lesen !)

#define STA_SSID1              "indebuurt1"      // [Ssid1] Wifi SSID
#define STA_PASS1              "VnsqrtnrsddbrN"  // [Password1] Wifi password
#define STA_SSID2              "indebuurt2"      // [Ssid2] Optional alternate AP Wifi SSID
#define STA_PASS2              "VnsqrtnrsddbrN"  // [Password2] Optional alternate AP Wifi password
#define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // [WifiConfig] Default tool if wifi fails to connect
//   (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT)

Die Daten dürft Ihr gerne in der config.h auf Euer Netz anpassen, dann Kompiler anwerfen und flashen.
Das muss hier keine wissen !

.

Ich habe meine Sonoff S20 jetzt auf Englisch umgeflasht. Jetzt geht es.
Ich flashe über den ESPLoader und mit einer *.bin.

Gruß
Marco

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

?>

Hallo,

verstehe ich dich richtig, dass du den Color Picker im Tasmota Modul nicht nutzen kannst aber gerne willst?
Ich habe zur Zeit so eine LED leider nicht hier, sonst könnte ich mir das mal genauer ansehen.

Grüße,
Kai

Ist es möglich, das Modul entsprechend anzupassen, damit auch die SK6812 einsetzbar sind ?

Wär bestimmt möglich, wenn Kai so ein Modul hätte, um damit probieren zu können.

Hallo,

die SK6812 gibts bei Ebay ( Nr. 263216587802 ) als 8er Modul für 1,99 Euro. oder als 100er ( Nr. 232365471706) für 10,84 Euro.
Wenn man den Picker des Tasmota Moduls verwenden könnte ohne die Tasmota Firmware zu ändern wärs natürlich optimal.
Ich habe momentan den Picker und die Slider und damit kann man die LEds sehr komfortabel einstellen.

Die Tasmota Firmware wurde mit #define USE_WS2812_CTYPE 3 geflasht ( angeblich GRBW ??) - der erste Beitrag oben wurde nochmal entsprechend dem aktuellen Stand geändert.

Die LEDs reagieren dann auf den Wert im MQTT Befehl (HEX) „RRGGBBWW“ und der original IPS Picker kann direkt verwendet werden, wenn man den Wert für Weiß am Ende dranhängt.

d.h. man müßte im Modul eine Einstellung für den Ctype der Tasmota Software hinzufügen. Derzeit ist demnach nur der CTYPE 1 ( GRB) unterstützt.

Nur leider stimmen im Tasmota Modul weder die LED Schemen noch kann der Picker verwendet werden ( siehe oben)

Weiß zufällig jemand, wie man die IPS Slider farbig im Webfront darstellen kann ?

Hallo,

also mit der Tasmota Firmware sollte es gehen schau mal im Wiki: Commands · arendst/Sonoff-Tasmota Wiki · GitHub
Ich kann ja mal schauen ob das mit dem Color Picker funktioniert, oder ob man da was umrechnen kann?!

Wie und an was hast du die LEDs denn angeschlossen? Kannst ja auch mal ein Foto posten, wie die LEDs aussehen, wenn sie an sind. :slight_smile:

Grüße,
Kai

Hallo Kai,

Die LEDs sind als WS2812 an GPIO4 eines Wemos D1 ( Generic) angeschlossen und die Firmware wurde mit


223   #define USE_WS2812_CTYPE     3                 // WS2812 Color type (0 - RGB, 1 - GRB, 2 - RGBW, 3 - GRBW)

in user_config.h
geflasht.
Soweit funktionierts ja entsprechend der Tasmota Doku nur passen die Sequenzen und der Picker nicht.

Bei Klick auf den IPS Picker „Lila“ kommte die Farbe richtig in der Farbanzeige des IPS Pickers und auf den LEDS - im Picker Deines Moduls kommt als Farbe „grün“

TXT: 10.02.2018 09:16:16.00 | setColorHex | {„Topic“:„cmnd/WemosD1Tasmota1/Color“,„MSG“:„4711ae02“}
TXT: 10.02.2018 09:16:17.00 | ReceiveData JSON | {„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:"{„TOPIC“:„cmnd\/WemosD1Tasmota1\/Color“,„MSG“:„4711ae02“,"SENDER
TXT: 10.02.2018 09:16:17.00 | Power Topic | stat/WemosD1Tasmota1/RESULT
TXT: 10.02.2018 09:16:17.00 | Power MSG | {„POWER“:„ON“,„Dimmer“:68,„Color“:„4610AD01“}

Bei Klick auf den Picker in Deinem Modul ändert sich nichts an der Farbe

TXT: 10.02.2018 09:16:32.00 | setColorHex | {„Topic“:„cmnd/WemosD1Tasmota1/Color“,„MSG“:"#4711ae"}
TXT: 10.02.2018 09:16:33.00 | ReceiveData JSON | {„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:"{„TOPIC“:„cmnd\/WemosD1Tasmota1\/Color“,„MSG“:"#4711ae",„SENDER“:„MQTT_GET_PAYLOAD“}"}
: 10.02.2018 09:16:34.00 | ReceiveData JSON | {„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:"{„TOPIC“:„stat\/WemosD1Tasmota1\/RESULT“,„MSG“:"{\„Color\“:\„4610AD01\“}",„SENDER“:„MQTT_GET_PAYLOAD“}"}
TXT: 10.02.2018 09:16:34.00 | Color Topic | stat/WemosD1Tasmota1/RESULT
TXT: 10.02.2018 09:16:34.00 | Color MSG | {„Color“:„4610AD01“}

Offensichtlich kann das Tasmota Modul „MSG“:"#4711ae" nicht richtig interpretieren sondern braucht als Wert „MSG“:„4711ae02“

Moin, danke für das IPS-Tasmota-Modul.
Habe das IPS-Tasmota erfolgreich mit Mosquitto-Broker mit mehreren Sonoff-Modulen am laufen.
Für meine Bosch-Garagentorantriebe habe ich ein Wemos D1 mini geflasht und kann in IP-Symcon den Zustand der Überwachungskontakte darstellen.
Das Schalten (Taster) der beiden Tore erfolgt über einen Script in dem ich einen 500ms Impuls über den jeweilige Wemos D1 Ausgang erzeuge:
Tasmota_setPower(55555, 2, true);
IPS_Sleep(500);
Tasmota_setPower(55555 , 2, false);

Im IPS-Tasmota gibt es aber den Befehl „Tasmota_sendMQTTCommand“, den ich nicht verstehe, Wo wird in diesem Befehl die $InstanceID für das jeweilige Modul angegeben? Wie würden die beiden Schaltbefehle von oben mit „Tasmota_sendMQTTCommand“ aussehen?
Möchte gerne direkt über MQTT das Command „PulseTime<x>“ den 500ms Impuls ausführen lassen, damit ich IPS_Sleep nicht nutzen muss.
Für ein einen Denkanstoss wäre ich dankbar.
Gruss GMilf

@roesl,

ich vermute, es liegt an RGBW oder GRBW. Wir haben zum testen nur RGB, also fehlt uns die weiße LED…
Und dann die Umrechnung anpassen…

Moin, meine eigene Antwort zu #229 nach einigem probieren:
Leider ist die Beschreibung unter:
IPS-Tasmota/IPS-Tasmota at master · Schnittcher/IPS-Tasmota · GitHub
nicht korrekt, es fehlt als erster Parameter die InstanzID und sollte sein:
Tasmota_sendMQTTCommand($InstanzID,$command, $msg);

Um einen Ausgang für 5*100ms=500ms Impuls vorzubereiten, ist der Befehl wie folgt:
Tasmota_sendMQTTCommand(37469, „tele/sonoff33/PulseTime1“, „5“);

Diese Einstellung wirkt nur auf einen Switch, schaltet man den Ausgang ON
Tasmota_sendMQTTCommand(37469, „tele/sonoff33/POWER1“, „ON“);
wird er nach 500ms wieder OFF geschaltet. Damit sind Pulse von 100ms bis in den hohen Sec-Bereich möglich.
(Natürlich müsst ihr eure eigene InstanzID und den eigenen Sonoff-Namen einsetzen, kontrollieren kann man das in der Web-Konsole des Sonoff bzw.Wemos)

Gruß GMilf

Hallo,

sorry für den Fehler in der Doku, ich werde es ändern.
Dann läuft ja jetzt alles? :slight_smile:

Grüße,
Kai

Jo KaiS,
im Moment noch im Test, wenns die nächsten zwei Wochen im „Trockenem“ durchläuft, wird es angebaut.
Gruß GMilf

@tomgr

wenn ich CTYPE = 2 nehme, dann stimmen die Werte vom Picker nicht - ich denke, daß CTYPE = 3 die richtige Einstellung ist, aber die Schemen im Tasmota Modul nur für die RGB bzw GRB Einstellung passen.
Zumidest passt beim CTYPE 3 die Reihenfolge RGBW und der IPS Picker

Hallo roesl,

verstehe ich dich jetzt richtig, dass der Picker doch geht und es nur noch um die Schemen geht?
Ich habe ja alle Schemen drin, also auch die, die unter WS2812 stehen, die sind ja nur für die WS2812 LEDs.
Welche Schemen gehen denn generell mit deinen LEDs?

Ich kann ja nur das einbauen, was auch im Wiki steht. Sonst evtl. dort mal ein Issue öffnen?

Grüße,
Kai

Hallo
Habe meinen Sonoff TH16 erfolgreich einbinden können. Danke für das Modul!

Ok, jetzt verstanden.:slight_smile:

Schemen liegen in der Tasmota-Firmware, da weiß ich jetzt nicht, ob die nur für 3 Kanäle sind und da noch was anderes über die config.h gemacht werden kann.
SK6812 müssten wir mal besorgen, damit man probieren kann.
Wir habe hier nur den WS2812 Stripe mit 50 LED’s, und 2 Ringe mit 16px und 7px zum testen.

Fall jemand mal ein Stripe mit SK6812 (mit ca 25 LED’s) über hat, und gegen Geld tauschen würde, möge er sich bei mir per PM melden. Dann könnten Kai und ich mal sehen, was so machbar ist.
Ich muss halt immer die Hardware für Kai zusammen bauen.

Moin,
Ich möchte einige Einstellungen eines Moduls überprüfen.
Gibts es eine Möglichkeit eine über Tasmota_sendMQTTCommand an ein Modul gesendete Anfrage (z.B Status) in einem PHP-Script zu empfangen und selbst auszuwerten ?

Gruß GMilf

Moin,

das ist mit dem Modul im Moment nicht möglich.

Du könntest noch einen MQTT Client einrichten und den auf Script einstellen.
Hier die Beispiele für die Scripte von thomasf68: IPS_MQTT/MQTT_clienet/IPS Scripte at master · thomasf68/IPS_MQTT · GitHub

Grüße,
Kai

Hallo Kai,

die Schemen sind offensichtlich in der Tasmota xplg_ws2812.ino festgelegt und passen nur für die RGB LEDs.
Evtl müssen die Schemen in der xplg_ws2812.ino für die RGBW Leds angepaßt werden.

Die Reihenfolge für die jeweiligen Farben sind in der NeoColorFeatures.h der Neopixelbuslibrary festgelegt ( abhängig vom Parameter .USE_WS2812_CTYPE

Der Picker Deines Moduls sendet und empfängt die falschen Werte wenn ein anderer Wert als 1 in USE_WS2812_CTYPE definiert wird.
.
Der IPS-eigene Picker funktioniert mit meinem Script.

Nur wie modifiziert man die Schemen, daß die nur die RGB ( in richtiger Reihenfolge) und nicht auch noch die weiße LED ansprechen ?

Es sieht für mich so aus, daß Dein Picker 4 Werte schicken müßte, wobei für das Weiß Hex „00“ notwendig wäre und beim Empfang der Wert für Weiß ignoriert wird.

viele Grüße
Georg.