[Modul] Tasmota

Hallo Kai,
es können mehrere Schalter und auch mehrere Rolläden an einen Tasmota angeschlossen werden - wenn man die Daten empfängt, kennt man die genaue verbaute Anzahl nicht. Bei den Switchen zähle ich daher von 0-15 durch, die Zahl hatte ich einfach mal von Dir an anderer Stelle beim MCP230XX_INT übernommen, obwohl vermutlich niemand 16 Schalter anschließen wird :slight_smile:
Bei den Shuttern habe ich es auf 0-5 begrenzt, da ich nicht davon ausgehe, dass jemand mehr als 5 bzw. 6 Relais/Rollos an einen Tasmota anschließt.
Ohne die Schleifen müsste man wohl z.B. 15 mal „if (property_exists($Payload->{‚Switch1‘}, ‚Action‘))“ schreiben, um alle erdenklichen Switches verarbeiten zu können.
Für einen Shelly mit Tastern (anstelle Schaltern mit Raste) hatte ich gestern auch noch die Abfrage für Buttons hinzugefügt:


		if (fnmatch('*Button*', $Buffer->Payload)) {                    
						$this->SendDebug('Sensor Payload', $Buffer->Payload, 0);
                        $this->SendDebug('Sensor Topic', $Buffer->Topic, 0);
						for ($i = 0; $i <= 15; $i++) {
							if (property_exists($Payload->{'Button' . $i}, 'Action')) {
								$this->RegisterVariableString('Tasmota_Button' . $i, 'Button' . $i, '', 0);
								SetValue($this->GetIDForIdent('Tasmota_Button' . $i), $Payload->{'Button' . $i}->{'Action'});
							}
						}
                    }

Deine Idee, das Anlegen von Variablen flexibler zu gestalten, klingt gut. Optimal (aber wohl recht aufwändig) wäre es, wenn man in der Instanz die interessanten MQTT-Nachrichten als eine Art RegEx-Pattern definieren könnte und dazu angeben, was für ein Variablentyp bei Empfang einer solchen Nachricht angelegt werden müsste. Dann bräuchte man für alle laufenden Neuerungen bei Tasmota nichts mehr im Modul ändern.
Vielen Dank und Gruß
Martin

Ich schaue mir deinen Code nochmal an und werde das irgendwie übernehmen.

Das ist nicht so einfach wie du dir das vorstellst. Du musst ja auch die Kommandos mit einbinden und nicht nur Variablen anlegen.

Man muss also irgendwie anhand der Templates die Variablen anlegen. Oder verschiedene Instanzen erstellen. Ich weiß es einfach noch nicht. :frowning:

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Kai,
bei mir kommt im Debug der Tasmota-Instanz leider gar nichts an.

Grüße,
Jürgen

Also ich habe mir die Variablen, die nicht über das Modul angelegt werden per Tasmota-Rule angelegt und die werden dann auch immer entsprechend übermittelt :

rule1 ON Switch1#state DO Backlog Power1 TOGGLE; publish cmnd/shelly25/Switch1 %timestamp% ENDON ON Switch2#state DO Backlog Power2 TOGGLE; publish cmnd/shelly25/Switch2 %timestamp% ENDON

Die aktuelle Position während der Laufzeit kann man so bereitstellen:

$LinkID = IPS_GetObjectIDByName('Result', IPS_GetParent($_IPS['SELF']));   // ID der Result-Variable

$LivePosID = IPS_GetObjectIDByName('Position live', IPS_GetParent($_IPS['SELF']));  // ID der Zielvariable für die Position

$JString = GetValueString(IPS_GetLink($LinkID)['TargetID']);

if (substr($JString, 2, 8) == "Shutter1")             // nur während der Laufperiode steht dort "Shutter1"
   {
   $Werte = json_decode($JString,true);

   SetValueInteger($LivePosID, intval($Werte['Shutter1']['Position']));
   } 

Habe jetzt nochmal die Instanz neu installiert. Jetzt funktioniert es.

Danke, Jürgen

So ich habe alles eingebaut, ich habe es erstmal nur genauso übernommen von dir.
Kannst du die Beta Version mal testen?

Grüße,
Kai

Solltest du die Regeln nun mit der Ergänzung von @lurch entfernen können?

Grüße,
Kai

Habe die Luminea ZX-2831 in Betrieb. Werte werden auch ins Symcon übertragen, wenn ich sie auf dem WebUI verändere - die Lampe reagiert darauf korrekt.

Aus dem Symcon Richtung Lampe klappt das Schalten und Dimmen. Beim Verfärben (verschiedene Weißtöne) via

TasmotaLED_setColorHex($id, "#00FFFF");

wird die Farbe zwar korrekt gesetzt, jedoch wird auch gleichzeitig der Dimmer immer auf 100 Prozent gestellt, was man nicht nur an der Lampe, sondern auch im WebUI sehen kann.

Also Beta-Modul aktualisiert - gleiches Phänomen.

Allerdings habe ich nach dem Update des Moduls in den Meldungen permanent den Eintrag: „Tasmota Einstellung gespeichert“.

Poste mal bitte ein Debug aus der Tasmota Instanz, wenn du das Dimmen ausführst.
Wieviele Tasmota Instanzen hast du?

Grüße,
Kai

Starte gerade mal das Symcon durch … vielleicht sind die Meldungen dann weg. Ich würde sagen, um die 40 Instanzen.

Meldungen sind zum Glück wieder weg - Farbproblem bleibt. Dump anbei beim Ausführen des o.g. Befehls.

Wie kann man denn in diesem neuen Forum eine normale Textdatei hochladen und Code als Code deklarieren???

Dann eben erstmal uncool als Text im Beitrag:

HEX: 05.02.2021, 10:28:46 | MQTTCommandMQTT Server | 7B 22 44 61 74 61 49 44 22 3A 22 7B 30 34 33 45 41 34 39 31 2D 30 33 32 35 2D 34 41 44 44 2D 38 46 43 32 2D 41 33 30 43 38 45 45 42 34 44 33 46 7D 22 2C 22 50 61 63 6B 65 74 54 79 70 65 22 3A 33 2C 22 51 75 61 6C 69 74 79 4F 66 53 65 72 76 69 63 65 22 3A 30 2C 22 52 65 74 61 69 6E 22 3A 66 61 6C 73 65 2C 22 54 6F 70 69 63 22 3A 22 63 6D 6E 64 2F 6B 75 65 5F 54 69 73 63 68 6C 61 6D 70 65 2F 43 6F 6C 6F 72 22 2C 22 50 61 79 6C 6F 61 64 22 3A 22 23 30 30 46 46 46 46 22 7D 
TXT: 05.02.2021, 10:28:46 | MQTTCommandMQTT Client | {"DataID":"{97475B04-67C3-A74D-C970-E9409B0EFA1D}","Buffer":"{\"PacketType\":3,\"QualityOfService\":0,\"Retain\":false,\"Topic\":\"cmnd\/kue_Tischlampe\/Color\",\"Payload\":\"#00FFFF\"}"}
HEX: 05.02.2021, 10:28:46 | MQTTCommandMQTT Client | 7B 22 44 61 74 61 49 44 22 3A 22 7B 39 37 34 37 35 42 30 34 2D 36 37 43 33 2D 41 37 34 44 2D 43 39 37 30 2D 45 39 34 30 39 42 30 45 46 41 31 44 7D 22 2C 22 42 75 66 66 65 72 22 3A 22 7B 5C 22 50 61 63 6B 65 74 54 79 70 65 5C 22 3A 33 2C 5C 22 51 75 61 6C 69 74 79 4F 66 53 65 72 76 69 63 65 5C 22 3A 30 2C 5C 22 52 65 74 61 69 6E 5C 22 3A 66 61 6C 73 65 2C 5C 22 54 6F 70 69 63 5C 22 3A 5C 22 63 6D 6E 64 5C 2F 6B 75 65 5F 54 69 73 63 68 6C 61 6D 70 65 5C 2F 43 6F 6C 6F 72 5C 22 2C 5C 22 50 61 79 6C 6F 61 64 5C 22 3A 5C 22 23 30 30 46 46 46 46 5C 22 7D 22 7D 
TXT: 05.02.2021, 10:28:47 |     ReceiveData JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":false,"Topic":"stat/kue_Tischlampe/RESULT","Payload":"{\"POWER\":\"ON\",\"Dimmer\":100,\"Color\":\"0,255\",\"White\":100,\"CT\":500,\"Channel\":[0,100]}"}
HEX: 05.02.2021, 10:28:47 |     ReceiveData JSON | 7B 22 44 61 74 61 49 44 22 3A 22 7B 37 46 37 36 33 32 44 39 2D 46 41 34 30 2D 34 46 33 38 2D 38 44 45 41 2D 43 38 33 43 44 34 33 32 35 41 33 32 7D 22 2C 22 50 61 63 6B 65 74 54 79 70 65 22 3A 33 2C 22 51 75 61 6C 69 74 79 4F 66 53 65 72 76 69 63 65 22 3A 30 2C 22 52 65 74 61 69 6E 22 3A 66 61 6C 73 65 2C 22 54 6F 70 69 63 22 3A 22 73 74 61 74 2F 6B 75 65 5F 54 69 73 63 68 6C 61 6D 70 65 2F 52 45 53 55 4C 54 22 2C 22 50 61 79 6C 6F 61 64 22 3A 22 7B 5C 22 50 4F 57 45 52 5C 22 3A 5C 22 4F 4E 5C 22 2C 5C 22 44 69 6D 6D 65 72 5C 22 3A 31 30 30 2C 5C 22 43 6F 6C 6F 72 5C 22 3A 5C 22 30 2C 32 35 35 5C 22 2C 5C 22 57 68 69 74 65 5C 22 3A 31 30 30 2C 5C 22 43 54 5C 22 3A 35 30 30 2C 5C 22 43 68 61 6E 6E 65 6C 5C 22 3A 5B 30 2C 31 30 30 5D 7D 22 7D 
TXT: 05.02.2021, 10:28:47 |                Topic | stat/kue_Tischlampe/RESULT
HEX: 05.02.2021, 10:28:47 |                Topic | 73 74 61 74 2F 6B 75 65 5F 54 69 73 63 68 6C 61 6D 70 65 2F 52 45 53 55 4C 54 
TXT: 05.02.2021, 10:28:47 |               Result | {"POWER":"ON","Dimmer":100,"Color":"0,255","White":100,"CT":500,"Channel":[0,100]}
HEX: 05.02.2021, 10:28:47 |               Result | 7B 22 50 4F 57 45 52 22 3A 22 4F 4E 22 2C 22 44 69 6D 6D 65 72 22 3A 31 30 30 2C 22 43 6F 6C 6F 72 22 3A 22 30 2C 32 35 35 22 2C 22 57 68 69 74 65 22 3A 31 30 30 2C 22 43 54 22 3A 35 30 30 2C 22 43 68 61 6E 6E 65 6C 22 3A 5B 30 2C 31 30 30 5D 7D 
TXT: 05.02.2021, 10:28:47 | Receive Result: POWER | ON
HEX: 05.02.2021, 10:28:47 | Receive Result: POWER | 4F 4E 
TXT: 05.02.2021, 10:28:47 | Receive Result: Dimmer | 100
HEX: 05.02.2021, 10:28:47 | Receive Result: Dimmer | 31 30 30 
TXT: 05.02.2021, 10:28:47 |   Receive Result: CT | 500
HEX: 05.02.2021, 10:28:47 |   Receive Result: CT | 35 30 30 
TXT: 05.02.2021, 10:28:47 | Receive Result: White | 100
HEX: 05.02.2021, 10:28:47 | Receive Result: White | 31 30 30 
TXT: 05.02.2021, 10:28:47 | Receive Result: Color | 0,255
HEX: 05.02.2021, 10:28:47 | Receive Result: Color | 30 2C 32 35 35

Ich habe deinen Beitrag editiert, dann kannst du dir anschauen, wie man das formatiert.
Passiert das mit der Farbe auch, wenn du die Farbe in der Konsole direkt setzt?
Versuch mal das hier in der Konsole einzugeben:

Color1 #00FFFF

Grüße,
Kai

Tatsächlich passiert das da auch. Dann ist das Modul vermutlich raus. Kann man mit einigen Optionen auf der Konsole daran was ändern? SW ist 9.1.0

Offtopic: über welches Icon hast du den Text formatiert? Und wie kann man ein Textdatei anhängen?

Bildschirmfoto 2021-02-05 um 11.01.08

Das kann ich dir leider gerade nicht sagen. Schau mal hier: Commands - Tasmota
Da gibt es leider kein Icon für. Du kannst aber eine Textdatei einfach per Drag and Drop in den Texteditor hier ziehen.

Grüße,
Kai

Das war ein guter Hinweis. Mit dem Befehl

Color2 #00FFFF

auf der Konsole klappt es. Nun habe ich nach dem Update auch auf die Statusvariablen „Farbtemperatur“ und „Weiß“ gesehen.

Wenn ich nun in der Instanz über „Befehle testen“ gehe, dann kann ich den Wert der Farbtemperatur zwischen den in der Doku verwendetet Werten 153 und 500 ändern, ohne dabei den Dimmer zu beeinflussen. Sieht also schon sehr gut aus. Mit welcher der Tasmota-Funktionen kann man die Farbtemperatur aber mittels Script ändern? Zumindest folgende Idee greift nicht:

TasmotaLED_setCT($id, 500);

Ich bekomme mit der gerade aktualisierten Modul Version folgenden Fehler:

05.02.2021, 20:13:57 | FlowHandler          | Could not forward data to instance #58276: <br />
<b>Notice</b>:  Undefined variable: Payload in <b>/var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php</b> on line <b>180</b><br />
<br />
<b>Notice</b>:  Trying to get property 'Switch0' of non-object in <b>/var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php</b> on line <b>180</b><br />
<br />
<b>Warning</b>:  First parameter must either be an object or the name of an existing class in <b>/var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php</b> on line <b>180</b><br />
<br />
...

Die Meldung ist viel länger und betrifft scheinbar meine Wemos D1.

Diese Meldung hatte ich gestern auch nach dem Update. Gemeinsam mit der von etwas weiter oben. Nach dem Neustart des Dienstes (bei mir Windows) war es dann bei mir weg.

OK, dann teste ich das auch gleich, ich bin erstmal auf die normale Version zurück.

Ich antworte mir mal selber, aber eigentlich für @KaiS.
Beta und Reboot hilft bei mir nicht, ich bin wieder auf der Stable vom Modul.

Sollte mit der aktuellen Beta Version gefixt sein.

Grüße,
Kai

Hallo Kai,
seit nummehr fast 10 Jahren erfreue ich mich an IPSymcon, nach erst viel Anbindung über Seriellen Port (viel Eigenabau, Lötkolben) ist jetzt alles auf LAN/WLAN umgestellt und läuft erfolgreich unter Docker auf der NAS, auch Dank Tasmota MQTT und natürlich deiner hervoragenden Anbindung DANKE.
Meine Frage lasse jetzt auch einige D1 mini unter Tasmota mit DeepSleep laufen, funktioniert bestens. Jetzt wäre ich an dem Befehl um Retain zu benutzen. Retain habe ich ind der Tasmota Instanz aktiviert. Flag wird aber im Debug Protokoll als false gesetzt. Was mache ich falsch.
Nochmals Danke für die Super Software und Danke für die Hilfe