Seit Kurzem MQTT-Problem

Ich verwende 12 Tasmota-Geräte, die alle gleich sind und weil sie auf Batterie laufen, senden sie nur alle 30min und gehen dann in Deepsleep. Wenn eines der Geräte mal länger als 1h nichts an MQTT gesendet hat, bekomme ich das angezeigt. Seit Kurzem stelle ich nun fest, dass es vermehrt zu solchen Ausfällen kommt und zwar Random bei den Geräten. Dass die Geräte weiterhin funktionieren, sehe ich, da sie sich zu anderen halben Stunden wieder melden. Es scheint so zu sein, dass Mosquitto nur die Daten nicht empfängt. Mit dem MQTT-Explorer sehe ich, dass es wirklich auch so ist.

Da ich das erst seit kurzer Zeit feststelle, vermute ich irgend ein Update dahinter. Alle diese 12 Geräte senden auch ungefähr zu selben Zeitpunkt, also zu jeder halben Stunde. Bis vor etwa einem Monat war das aber kein Problem. Hat jemand eine Idee? Momentan fallen 11 von den 12 Geräten aus, es scheinen immer mehr zu werden.

Ich habe das jetzt mal genauer untersucht und bei einem Gerät konnte ich eine Auffälligkeit finden.
Das Log vom Geräte sagt:

{"Time":"2025-03-21T11:24:48","BME280":{"Temperature":31.3,"Humidity":15.1,"DewPoint":1.6,"Pressure":1023.4},"BH1750":{"Illuminance":0},"PCF8574-1":{"D0":1,"D1":1,"D2":1,"D3":1,"D4":0,"D5":0,"D6":1,"D7":0},"PressureUnit":"hPa","TempUnit":"C"}

Im Mqtt-Explorer wurde die Message um “11:26:11” empfangen als:

{"Time":"2025-01-24T21:12:46","BME280":{"Temperature":26.3,"Humidity":25.4,"DewPoint":4.9,"Pressure":1007.5},"BH1750":{"Illuminance":63},"PCF8574-1":{"D0":0,"D1":1,"D2":1,"D3":1,"D4":1,"D5":1,"D6":1,"D7":1},"PressureUnit":"hPa","TempUnit":"C"}

Time, Messwerte und D-Werte sind total falsch. Und wie gesagt, im Log des Gerätes gibt es keinen Eintrag um 11:26. Das Gerät muss richtig sein, ich habe nur eins, was D-Werte sendet.

Das Problem mit der falschen Zeit konnte ich klären, es liegt daran, dass die mqtt-Message nicht “retained” war und deshalb der mqtt-sensor in HA einen falschen Wert nach einer Codeänderung hatte. Unglücklicherwese erfolgte dann durch Node-Red ein Publish mit mit den falschen einstellungen.

Aber dennoch gibt es ein Zeitproblem.
Mit {{ now() }} bekomme ich eine Zeit angezeigt, die ca. 2 Minuten in der Zukunft liegt. Zeitzone ist richtig konfiguriert. Woran kann das liegen?

Habe gerade einen kompletten Neustart gemacht, jetzt stimmt die Zeit wieder.
Ich hätte vermutet, dass HA in Abständen einen NTP kontaktiert um sich zu synchronisieren, oder?

:crayon:by HarryP:
. Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Moin,

die schnelle Suche hier im Forum hat das, zu tage gefördert

VG
Bernd

Danke für den Hinweis, werde es ausprobieren.
Verstehe halt folgendes nicht. Ich habe zwei HAs, einer auf einem Raspi, der andere auf einem MiniPC. Und nur der mit dem MiniPC hat die Zeitabweichung. Und wenn HA den Zeitserver von Google benutzt und die Lösung vorschlägt, manuell 8.8.8.8 zu bentzten, dann wäre das ja auch Google.

Aber ich werde es probieren.

Moin,

der MiniPC hat eine RTC der RasPI soweit mir bekannt nicht, glaube erst der RasPI 5 hat eine.
Boote mal ins BIOS des MiniPCs, schaue dort, ob die Zeit stimmt, wie alt ist der MiniPC, hat der eine Stützbatterie, ist die evtl. leer?

RTC = Real Time Clock

Ist HA als HAOS auf dem MiniPC installiert, oder als VM in einer Virtualisierung?

Vielleicht hilf Dir das ja auch dabei

VG
Bernd

Ich hatte grad’ auch massig Probleme mit MQTT (auch hier gefragt). Inklusive MQTT-Abstürzen, die auch der Watchdog nicht auffangen konnte.
Hatte als erstes MQTT-Projekt einen Hichi an den Stromzähler gehängt, die Energieanzeige war auch öfters “schräg”, zeigte auch nach Freischaltung des Zählers ab und an “negative Energie” an, was wohl auf Zeitfehler hinweist.

Am Ende war’s der Raspi. Hab’ den Home Assistant auf einen (älteren) x86 Mini-PC umgerüstet (Simon’s Video eine gute Hilfe), seitdem überhaupt keine Probleme mehr :face_with_peeking_eye:
Also würde ich tendenziell erst Mal beim Raspi gucken, auch die dortigen MQTT-Logs und die Zeit kontrollieren.

Irgenwie wohl falsch verstanden. Das Problem ist auf dem MiniPC, der Raspi macht keine.
Was ich bisher harausgefunden habe, meine Tasmota-Devices senden korrekt an den Broker, zumindest sagt das Device-Log das. Aber Mosquitto published die Nachricht manchmal nicht, sowohl im MQTT-Explorer als auch im HA-mqtt-Sensor kommen die Messages nicht an.

Tasmota sendet mit QoS=0, geht nicht anders, da ist die Entgegennahme der Nachricht nicht garantiert. Und wenn sie im Broker nicht ankommt, published auch keiner was. Soweit meine Erkenntnis. Ich bin mir aber sicher, dass das Problem erst seit einiger Zeit besteht und ich habe das Mosquitto-Update auf 2.0.20 im Verdacht.
Kann man das irgendwie rückgängig machen?

Nach weiteren Analysen (nur exemplarisch verifiziert und noch unsicher), handelt es sich bei den Tasmota-Geräten nur um diejenigen, die aus den DeppSleep kommen. Andere, die ständig an sind, hatten bisher, solange ich teste, das Problem nicht. Ich habe jetzt auch noch das Mesh im Verdacht.

Moin,

Tasmota, baut kein Mesh auf, das ist WLAN :thinking:

Ich habe Deine Installation noch nicht so ganz verstanden, was läuft wie, wo bei Dir?

Du hast also ein MiniPC, da läuft HA drauf und ein RasPI da läuft auch ein HA, wo ist der MQTT Broker (Mosquitto) installiert, auf dem MiniPC, oder dem RasPI?
Welches HA ist nur als MQTT Client konfiguriert?

VG
Bernd

P.S.:

Dann geh doch mal zurück auf die Version, wo es anscheinend funktioniert hat :wink:

Wie macht man das? Muss ich dazu Mosquitto deinstallieren und dann neu installieren?

Und hier noch einmal mein Setup.

Ich habe zwei HAs an verschiedenen Orten. Eines läuft auf einem MiniPC, das andere auf einem Raspi. In beiden Umgebungen benutze ich Tasmota-Devices. Die sind alle Eigenbau und funktionierten sei über einem Jahr. Einige der Devices laufen jeweils in beiden HAs mit Netzteil und andere mit Batterie. Die mit Batterie verfallen in Deepsleep für 30min. Und nur die mit Deepsleep machen das Problem und auch nur in den HA mit dem MiniPC.

Was ich schon rausgefunden habe, die Devices verbinden sich nach dem Aufwecken mit Mosqitto und senden auch ihre Daten. Das konnte ich mit einem Log verifizieren, was über COM verbunden war. Aber weder HA noch der MQTT-Explorer wurden über den Empfang benachrichtigt.
Tasmota sendet mit QoS=0, was die Delivery nicht garantiert. Somit lassen sich die Logs zumindest erklären. Und in ca. 40% der Fälle klappt es auch.

Dieses Verhalten ist aber erst seit ca. zwei Monaten so, vorher ging alles. Und in diesen Zeitraum fällten sowohl HA-Core updates als auch Mosqitto. Beide HA sind aber auch auf dem gleichen Stand, so dass ich auch eine schlechte Internetverbindung ins Auge gefasst habe. Allerdings haben die am Netzbetriebenen Devices das Problem nicht. Und lt. Log habe sie sich ja auch mit Mosqitto verbunden und hätten sonst ja auch nicht gesendet.,

Mosqitto zurücksetzen würde ich gerne versuchen, hatte aber noch nicht herausgefunden, wie das geht. Vlt. könnt ihr mir das erklären.

Moin,

aus dem Backup, das Du ja hoffentlich vor dem Update gemacht hast, holen.
Du kannst nicht nur das ganze Backup wieder herstellen, sondern auch einzelne Komponenten, z. B. das MQTT Add-on Mosquitto.

Ich verstehe das Setup nicht :man_shrugging:

Gerät A, am Standort A sendet alles zum MQTT Broker A und HA A zeigt alles an?
Genau so alles am Standort B, Gerät B, sendet an MQTT Broker B und HA B zeigt alles an?

Sind die Problemfälle, alles die gleichen Sensoren, z. B. immer Temperatursensoren, oder querbeet und nur der gemeinsame Nenner ist Batterie?
Wie sehen die Tasmota Firmwares, bzw. die Skripte aus, kann es sein, dass mit neueren Mosquitto, Anpassungen vorgenommen werden müssen, Du sagst ja, das sind Eigenbauten.

VG
Bernd

Mit Update zurückdrehen ist es schwierig, wenn Mosqitto die Ursache ist, Ich hatte Mosqitto auf AutoUpdate ohne Backup. Ich finde nichts in meinen Backups. Meine Idee wäre, Mosqitto zu deinstallieren und neu installieren mit Auswahl der Version. Bin mir aber nicht sicher ob danach alles wieder läuft. Vielleich mal in einer ruhigen Minute oder auf einem Testsy<stem probieren.

Zum Setup.

Die Geräte sind an beiden Standorten Eigenbau mit Tasmota. Sie sind alle gleich. Scripte laufen da keine. Anpassungen sind keine gemacht und auch keine Updates von Tasmota, seit die Fehler auftreten. Exemplarisch habe ich mal ein Geräte upgedated, weil ich auch schon daran dachte, hat aber nichts gebracht. Und wie gesagt, alles lief schon über ein Jahr stabil.
Die Nachrichten die sie senden sehen alle so etwa aus:

12:05:33.553 MQT: HAS/Neubarnim/sleepingroom/sensormodule/tele/SENSOR = {“Time”:“2025-03-24T12:05:33”,“ANALOG”:{“Range”:3318},“BME280”:{“Temperature”:21.4,“Humidity”:35.1,“DewPoint”:5.3,“Pressure”:1012.9},“PressureUnit”:“hPa”,“TempUnit”:“C”} (retained)

Gerät A (Raspi), am Standort A sendet alles zum MQTT Broker A. Ja, alles wird angezeigt.
Gerät B (MiniPC), am Standort B sendet alles zum MQTT Broker B. Nein.
Hier wird es kompliziert. Alle Geräte, die kein Deepsleep machen funktionieren. Ich konnte bisher (5 Tage Überwachung) sehen, dass eine Nachricht wegen QoS0 nicht am Broker ankam.
Bei Nachrichten von Geräten, die nach einem DeepSleep ihre Nachricht senden, kommen diese sporadisch nicht am Broker an, vermutlich wegen QoS0. Leider kann Tasmota QoS1 nicht.

Moin,

soweit mir bekannt, kann man beim Add-on keine Version, bei der Installation auswählen.

Aber ansonsten bin ich dann raus, da mir dazu einfach einige Grundlagen fehlen.

Noch viel Erfolg.

VG
Bernd