NEWS
MQTT Error von Tasmota Publish/Suscription Einstellung?
-
Hallo
baue gerade eine Touch Display Lösung für eine Heizungssteuerung ein die über MQTT kommuniziert.
Was ich nun nicht verstehe ist diese Logmeldung:
mqtt.0 2024-11-18 12:51:28.268 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD732830 7B226175746F74253A32327D [{"autot":22}]"}
Die Meldung ist Reaktion auf ein commando dass ich per Mqtt an die Heizungsreglung publish (per IObroker):
topic command/F0F5BD732830 payload: {"autot": 22}
Das Kommando erreicht den Regler (F0F5BD732830) und funktioniert. Gemäß log meldet sich aber eine Tasmota Steckdose (C1B666) und kann nix damit anfangen. Wäre auch seltsam wenn wohl. Aber warum reagiert Tasmota überhaupt darauf?
In den Mqtt Einstellung (Tasmota) sehe ich keine Option um die Subscription einzugrenzen. Insofern und da ich noch einge Tasmota Geräte mehr habe, nerven die error Meldungen natürlich.Was sollte man tun?
Thx!
-
@dieter_p sagte in MQTT Error von Tasmota Publish/Suscription Einstellung?:
Die Meldung ist Reaktion auf ein commando dass ich per Mqtt an die Heizungsreglung publish (per IObroker):
kannst mal ein wenig genauer zeigen wie und was du das published?
Tasmota Geräte reagieren eigentlich auf dinge unterhalb voncmnd
, also z.B.mqtt.0.cmnd.BlitzWolf168.DerBefehl
Siehe auch https://tasmota.github.io/docs/MQTT/#command-flow
Es gäbe noch das GroupTopic, default wäre das
mqtt.0.cmnd.tasmotas.DerBefehl
Nicht das dein Heizungsstabregler ungünstig antwortet, sprich ins falsche Topic.
Was für einen MQTT-Broker nutzt du? -
@bananajoe said in MQTT Error von Tasmota Publish/Suscription Einstellung?:
kannst mal ein wenig genauer zeigen wie und was du das published?
Das ist blockly wie ich zum Hezungsregler publish.Was für einen MQTT-Broker nutzt du?
der mqtt0 ist der IOBroker Adapter als Broker und dort hängt der Heizungsregler.
Es gibt noch einen weiteren Mosquitto Broker. Dort hängt das Touch Panel dran, da OpenHasp nur mit dem mqtt-client Adapter von IOBroker funktioniert. Beide Broker werden über unterschiedliche Ports verbunden. Ist natürlich ein Konstrukt aber da ich nur an mqtt0 hier publishe wo auch alle sonstigen Geräte wie Tasmota hängen, sehe ich das nicht als beachtenswert.
-
@dieter_p mhh, tja, die Tasmota sollten - in der Standardeinstellung - wirklich nicht darauf reagieren.
Was steht/erscheint denn auf dem Tasmotagerät selbst in der Konsole wenn du an den Datenpunkt etwas sendest? -
Ich publish auch zyklisch eine Raumtemperatur an die Reglung:
Tasmota bekommt auch das mit:
12:11:59.790 MQT: stat/tasmota_C1B666/RESULT = {"Command":"Unknown","Input":"CONTROL {\"env\":20.2}"}
Darüber hab ich komischerweise keinen Error-Eintrag im IObroker/Mqtt-Broker Log
Über die Sollwertänderung gibt es folgenden Tasmota Log:
12:20:00.416 MQT: stat/tasmota_C1B666/RESULT = {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32337D [{"autot":23}]"}
und promt wieder Error im IObroker:
mqtt.0 2024-11-19 12:20:36.761 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32327D [{"autot":22}]"} mqtt.0 2024-11-19 12:20:36.741 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32327D [{"autot":22}]"} mqtt.0 2024-11-19 12:20:34.483 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32312E357D [{"autot":21.5}]"} mqtt.0 2024-11-19 12:20:34.456 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32312E357D [{"autot":21.5}]"} mqtt.0 2024-11-19 12:20:33.656 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32327D [{"autot":22}]"} mqtt.0 2024-11-19 12:20:33.629 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32327D [{"autot":22}]"} mqtt.0 2024-11-19 12:20:30.019 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32322E357D [{"autot":22.5}]"} mqtt.0 2024-11-19 12:20:29.999 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32322E357D [{"autot":22.5}]"} mqtt.0 2024-11-19 12:20:29.364 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32322E357D [{"autot":22.5}]"} mqtt.0 2024-11-19 12:20:29.360 error Client [DVES_C1B666] Cannot parse "stat/tasmota_C1B666/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B226175746F74223A32322E357D [{"autot":22.5}]"}
-
@dieter_p zeig mal die kompletten Einstellungen deines MQTT-Adapters. Wenn du mehrere Instanzen hast, dann alle.
Wenn du neben Broker/Client Adapter auch noch den Nur-Client Adapter einsetzt, auch diesen! -
@bananajoe ok, einmal Bilderbuch
Einmal der zentrale mqtt0 Broker:
Dann der mqtt-client (Verbindung zum Mosquitto Broker) (Daten Empfangen vom Touch Panel):
Dann noch ein Client per broker/client Adapter mqtt.1 um die mqtt-Blocklys zum publishen nutzen zu können:
-
@dieter_p puhh, also:
Dein Blockly sendet an
mqtt.0
... das ist der in ioBroker realisierte MQTT-Broker auf Port 1886, über den MQTT Broker/Client-Adapter. Also ist deine Heizungsregelung hieran angeschlossen / nutzt diesen Broker.
Da es Probleme gibt - die anderen Tasmota-Geräte nutzen auch diesen Broker, sieht man ja auch in deinen Logs.Dann hast du noch eine
mqtt.1
Instanz die sich mit dem Moquitto auf Port 1884 verbindet, auch über den MQTT Broker/Client-AdapterUnd über den MQTT-Client Adapter noch einmal eine Verbindung zum Mosquitto auf Port 1884. Da hast du MQTT-Version 4 eingestellt. Laut deren Webseite beherrscht der Mosquitto aber:
Eclipse Mosquitto is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1.
Also solltest du da Version 5 eingestellt haben.Die letzten beiden sind redundant ... die MQTT-Client Instanz brauchst du nicht wirklich, die
mqtt.1
Instanz sollte dir das auch liefern (aber eventuell müssten Skripte angepasst werden.)Ich nutze nur den Mosquitto Broker (bei über 140 Tasmota-Geräten + diverse andere war der MQTT-Broker in ioBroker irgendwann mal überfordert bei mir wenn sich alle Geräte nach einem Neustart des Adapters gleichzeitig verbinden wollen), den MQTT-Broker/Client Adapter dementsprechend wie deine
mqtt.1
Instanz nur als Client.
Die Einstellungen deinermqtt.1
Instanz weichen bei mir in 3 Punkten ab:
Bei deiner
mqtt.0
Instanz bin ich mir nicht sicher wegen dem
Da ich das in meinen Client-Einstellungen nicht benutze / aktiviert habe, auf die schnelle habe ich aber auch nicht gefunden was das genau bedeutet.Bei wie vielen Geräten/Clients bist du denn an deinem Broker auf Port 1886?
Eigentlich könntest du alles über den Mosquitto laufen lassen und bräuchtest nur eine
mqtt.x
Instanz als Client. Der Mosquitto kann Problemlos mit einer 5-stelligen Zahl von Clients umgehen, bzw. 1000+ Clients can be easily handled
Der in ioBroker integrierte Broker ist natürlich auch toll. Aber der ist in JavaScript/TypeScript geschrieben und kommt ggf. dadurch etwas eher an seine Grenzen als der native/kompilierte Mosquitto. Auf meiner alten Hardware war das so, der Sonoff-Adapter der ja auch einen MQTT-Broker emuliert war schon bei 60 Geräten ausgestiegen - immer beim Neustart des ioBrokers, denn dann verlieren ja alle MQTT-Clients ihre Verbindung und versuchen dann ständig sich neu zu verbinden. Dann hatten sich 30 verbunden, er war dann beim 45. da hat der 1. schon wieder einen Reconnect gemacht weil ihm eine Antwort zu lange dauerte.Das wird nicht genau dein Problem sein, du hast ja eines mit dem Publish. Ich könnte mir vorstellen das an dem einen Haken liegen könnte.
Das herumreiten auf den Mosquitto kommt nur daher das der ja schon da ist und du ihn scheinbar nur für eine Sache nutzt. -
@bananajoe said in MQTT Error von Tasmota Publish/Suscription Einstellung?:
Das herumreiten auf den Mosquitto kommt nur daher das der ja schon da ist und du ihn scheinbar nur für eine Sache nutzt.
Kein Ding und bei dem "Konstrukt" bin ich ja überrascht, dass es nicht schon vorher kommentiert wurde und empfinde es selbst als gewachsene Notlösung.
Eigentlich war ich mit einer MqTT Broker/Client Instanz sehr zufrieden und das sollte auch so bleiben. Hab auch nicht das Gefühl Unmengen an Geräten darüber zu fahren.
Dann ging der "Spaß" los und das letzte neu installierte Gerät (openHASP Touch Panel) verträgt sich nicht mit dem IOBroker mqtt Broker: https://forum.iobroker.net/topic/76093/fehler-mit-mqtt-adapter-forbidden-properties/24?_=1732084848179
Zum Glück funktioniert der mqtt-client damit. Also kam dafür Mosquitto dazu.
Dann nutze ich zum publishen die MQTT-Blocklys und hier lassen sich nur Instanzen des MQTT-Broker-Adapters auswählen. Somit bin ich dann bei der zweiten Instanz mqtt1 des Broker/Clients.
Ich habe noch einen letzten Funken Hoffnung, dass die Entwickler des Mqtt Broker-Adapters sich dem gemeldeten annehmen und würde dann zurück bauen auf wieder eine Instanz und Broker.
Den Gedanken bzgl. nur einen Broker aber dann Mosquitto muß ich mal durch den Kopf gehen lassen. Problem, dass ich nicht auf der Kommandozeile geboren wurde und Mosquitto komplett darüber zu konfigurieren ist. Ergänzend ist mir noch nicht geglückt eine für mich verständliche heißt Nicht-Skript-Lösung also Blockly zum publishen ohne die spezifischen Blöcke zu realisieren.
Nichtsdestotrotz genau wie du sagst, ist mir aber prinzipiell beim Thema der Fehlermeldung nicht verständlich warum wieso dort von Tasmota etwas kommt. Für sollten die publish Befehle von Tasmota ignoriert werden und hier wie gezeigt gibt es scheinbar unterschiede in den cmds die ich publishe.
-
@dieter_p von der Webseite des Adapters:
Nimm den Haken mal raus, das brauchen die Clients nicht. Das könnte das Problem sein.
Eventuell den Adapter auch mal 3 Minuten aus lassen damit auch alle Clients merken das diese die Verbindung verloren haben und sich reconnecten -
@bananajoe said in MQTT Error von Tasmota Publish/Suscription Einstellung?:
Nimm den Haken mal raus, das brauchen die Clients nicht. Das könnte das Problem sein.
Bisher leider nein. Nach dem Neustart des mqtt0 und dann Ausführung des Publish wieder die Meldung.
Hätte mich auch ehrlicherweise gewundert. Für mich ist das eine Reaktion von Tasmota Geräten zu Publish Befehlen, die sie "nix angehen".Aber warte mal. Mir fällt gerade auf dass sich nur 2 Tasmota Geräte im IOBroker Log dazu melden. Ich habe aber mehr mit MQTT eingebunden.
Ich schau mal ob es da einen Unterschied gibt.
Edit:
Erster großer Unterschied, viele Tasmota Geräte hab ich gar nicht für Mqtt konfiguriert da kann sich nix melden.Hab nur noch 1 Relayboards gefunden mit MQTT Konfiguration das läuft auf Tasmota v13.4 und die "meckernden" Steckdosen auf v14.03.01. Sonst sehe ich keinen Unterschied.
-
Interessant:
Da ich bis auf Tasmota Version zum Relayboard keinen Unterschied gesehen hab, hab ich eine Steckdose auf den aktuellsten Status also v14.3.0.7 upgedated
und die andere Dose runter auf v13.4
Dann publish und Ergebnis, es erscheinen nur noch Fehler der v14.3 er Dose im Log
mqtt.0 2024-11-20 12:12:40.196 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B2266616E223A317D [{"fan":1}]"} mqtt.0 2024-11-20 12:12:20.129 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B2266616E223A317D [{"fan":1}]"} mqtt.0 2024-11-20 12:12:00.119 error Client [DVES_29BD00] Cannot parse "stat/tasmota_29BD00/RESULT": {"Command":"Unknown","Input":"F0F5BD731830 7B2266616E223A317D [{"fan":1}]"}
na supi
Edit: nun beide Dosen auf 13.4 und Ruhe ist. Ob das so sein soll(v14), darf man ja bezweifeln.
-
@dieter_p Also ich habe vor 2 Wochen grade erst alles auf 14.3.0 geupdatet - und mein Mosquitto-Log sieht so aus:
1732115615: Saving in-memory database to /var/lib/mosquitto//mosquitto.db. 1732115916: Saving in-memory database to /var/lib/mosquitto//mosquitto.db. 1732116217: Saving in-memory database to /var/lib/mosquitto//mosquitto.db. 1732116518: Saving in-memory database to /var/lib/mosquitto//mosquitto.db. 1732116819: Saving in-memory database to /var/lib/mosquitto//mosquitto.db. 1732117120: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
Könnte also doch irgendwie mit dem Adapter zusammenhängen.
Mich würde mal interessieren welche MQTT Version der iobroker-Adapter simuliert.
-
jetzt wirds spooky. Wollte mal testen und hab eine Dose wieder auf v14.3.07 gezogen und wollte sie mal mit dem Mosquitto Broker verbinden um zu sehen was passiert. Aber selbst am IOBroker-Mqtt-Broker ist nun Ruhe in den Logs obwohl ich im Tasmota Log schön alle publish command sehe die bisher die Fehler produziert haben....
bzgl. mqtt version bin ich auf github nicht schlauer geworden zum iobroker adapter.