NEWS
Versch. MQTT Broker und das Elend mit Tasmota.
-
Hallo Ihr!
Ich bin schon recht lange unter den ioB-Usern und habe bisher immer den sonoff Adapter für meine Sonoff/Shelly Geräte verwendet.
Seit dem im Laufe der Jahre/Monate immer mehr Geräte hinzugekommen sind, bekomme ich auch immer mehr Probleme.
Die Probleme äußern sich durch kurzzeitiges MQTT disconnecten der Clients (Tasmota) rc-2.
Die üblichen Sachen wie, Flash löschen, aktuellste Dev Version von Tasmota installieren, Wifi Empfang überprüfen, Router neustarten, RaspberryPi3b+ neu starten, Adapter neu installieren, alle Datenpunkte löschen, ip, topic, cliendID Konflikte überprüfen...Alles Fehlanzeige. Die Disconnects kommen mit einer sehr hohen Genauigkeit von 5 min. Am Wifi Empfang kann es nicht liegen, weil auch Geräte die nur 40cm entfernt vom WifiRouter diesen Fehler haben.
Deshalb wollte ich mal schauen wie es sich mit dem ioBroker MQTT Broker bzw. auch dem ioBroker MQTT Client verhält. Alternativ habe ich auch noch Mosquitto installiert. Nein. Es laufen natürlich nicht alle Broker / Clients gleichzeitig auf dem gleichen Port oder ähnliches.
Es war vermutlich naiv aber dennoch war ich sehr überrascht als ich feststellte, dass keines der anderen Adapter eine ähnliche Struktur der State,Tele,Cmnd generiert wie ich es von dem Sonoff Adapter kannte.
Schade!Daher mal meine Frage, wie löst ihr es? Vor allem bei der Kommunikation mit anderen Adaptern wie z.B. ShutterControl.
Hier ist es lediglich möglich einen Datenpunkt anzugeben, > der für die Shutterposition. Da dem Adapter (Shuttercontrol) allerdings auch wichtig ist, zu wissen wo die Jalousie aktuell steht, wäre es schon wichtig Ihm dieses auch mitteilen zu können. Das ist aber so nicht ohne weiteres möglich.
Der Tasmota Datenpunkt state/Result liefert zwar alle Ergebnisse der Ereignisse die der Tasmota Client zur Verfügung stellt, allerdings als JSON String. Damit kann Shuttercontrol recht wenig anfangen.
Ein Workaround wäre, eine Regel im Tasmota Client zu erzeugen, der nach dem Schalten (Sonoff Basic, Shelly1) oder nach dem Fahren der Jalousien (Shelly2.5, Sonoff Dual R2) noch einmal den aktuellen Stand als "cmnd" topic published.
Sähe also für die Jalousie so aus:Rule1 on Shutter1#Position do backlog publish cmnd/%topic%/ShutterPosition1 %value% endon
Das würde dazu führen, dass der Datenpunkt "cmnd/CLIENTNAME/ShutterPosition1" mit der aktuellen Position überschrieben wird. Was wiederum dazu führt, dass dieser Wert ein weiteres Mal via MQTT an den Clienten geschrieben wird. Also im Prinzip ein Loop. Dadurch, dass Tasmota erkennt, dass der Schalter bereits ausgeschaltet ist, oder die Jalousie bereits ihre Position erreicht hat, wird dieser Loop unterbrochen. Dennoch führt das ganze zu unnötigen Traffic.
Warum das ganze? Weil es bei mir möglich ist, die Jalousien auch ganz Analog mit einem Wandschalter hoch und runterzufahren. Wird dies gemacht ohne die oben genannte Regel, würde bei dem Datenpunkt keine Aktualisierung stattfinden.
Somit weiß dann ein Adapter wie der eben genannte ShutterControl, nicht, dass die Jalousie evtl. schon hochgefahren ist etc.Hat man nun allerdings irgendwelche Steckdosen-Adapter, die auch noch die aktuellen Stromverbrauchsdaten mitschreiben, dann sieht es bzgl. der Datenpunkte schon wieder sehr mager aus. Es wird alles wie wild in einem JSON String gepackt der erst irgendwie wieder auseinander genommen werden muss.
Des Weiteren ist es Schade, dass der Sonoff Adapter leider nicht TDM kompatibel ist.Nun zu meiner Frage:
Wie regelt ihr das alles?
Welche Adapter/Software/Broker/Clients verwendet ihr für eure Tasmota Geräte?
Habt ihr ähnliche Probleme?
Wie geht ihr mit den Datenpunkten um?
Habt ihr vielleicht ein JS-Skript welches die DP von den Standard-MQTT Broker/Clients umwandelt in eine Struktur ähnlich wie beim Sonoff Adapter?Vielen Dank im voraus!
-
@Kugelkopf Hi. Ich habe ähnliches Problem, dazu noch recht neu im Thema. Konnte bisher bei Google und Suche nichts passendes finden, oder suche falsch. Ich spiele ebenfalls mit dem nativen mqtt Adapter, da ich beim sonoff Adapter irgendwie nicht die Multipress und Hold Funktionen in den states oder sonstwo finde, auf die ich aber gerne reagieren möchte. Andererseits wie du schon schreibst, finde ich beim mqtt Adapter alles in den Result Datenpunkten, als String. Noch weiss ich nicht, wie man die einzelnen Merkmale separiert, wie es der sonoff Adapter tut. Dein Post hier beschreibt also auch genau mein Verständnisproblem und mich würde interessieren, wie Deine Recherche ausging. Vielen Dank und Gruß