MQTT-Broker-Verbindung von Iobroker schaltet ESPuino aus

Hallo,
Mein ESPuino verbindet sich zum MQTT-Broker (bei mir bei IOBROKER).
Wenn die Kanäle verbunden werden(sieht im IOBroker dann so aus:

2024-08-12 09:38:11.260 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] connected with secret 1723448291260_7063
2024-08-12 09:38:11.295 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.Sleep"
2024-08-12 09:38:11.315 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.Rfid"
2024-08-12 09:38:11.322 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.Loudness"
2024-08-12 09:38:11.323 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.SleepTimer"
2024-08-12 09:38:11.323 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.TrackControl"
2024-08-12 09:38:11.323 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.LockControls"
2024-08-12 09:38:11.323 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.RepeatMode"
2024-08-12 09:38:11.375 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] subscribes on "mqtt.0.ESPuinoLaurenz.Cmnd.LedBrightness"
2024-08-12 09:38:40.952 - info: mqtt.0 (299230) Client [ESPuinoLaurenz] connection closed: timeout

dann schaltet sich der ESPuino ab.
Im Debugger sieht das dann so aus:

N [61153] MQTT-Session aufgebaut.
I [67968] MQTT-Nachricht empfangen: [Topic: ESPuinoLaurenz/Cmnd/Sleep] [Command: ]
I [68211] MQTT-Nachricht empfangen: [Topic: ESPuinoLaurenz/Cmnd/Rfid] [Command: ]
I [68215] RFID-Karte empfangen:
E [68236] RFID-Karte ist im NVS nicht hinterlegt.
I [68259] MQTT-Nachricht empfangen: [Topic: ESPuinoLaurenz/Cmnd/Loudness] [Command: ]
I [68259] Neue Lautstärke empfangen via Queue: 0
I [68282] MQTT-Nachricht empfangen: [Topic: ESPuinoLaurenz/Cmnd/SleepTimer] [Command: ]
I [68284] LEDs wurden auf Nachtmodus gedimmt.
N [68284] Modifikator: Sleep-Timer per RFID aktiviert (2 Stunden).
N [68341] Sleep-Timer gesetzt auf 0 Minute(n)
I [68347] Gehe in Deep Sleep wegen Sleep Timer...
N [68347] Gehe jetzt in Deep Sleep!
N [68361] shutdown audioplayer..
N [68366] shutdown amplifier..
N [68366] Lautsprecher ausgeschaltet
N [68371] shutdown MQTT..
N [68389] shutdown LED..
N [68395] shutdown SD card (SD_MMC)..
N [68617] deep-sleep, good night.......

Er bekommt beim subscribe wohl eine Nachricht, welche aber definitiv leer ist.
Kann man irgendwie unterbinden, daß er auf solche leeren Nachrichten reagiert?

Wenn ich im Broker folgende Einstellungen deaktiviere, dann passiert das nicht:


Dann werden aber leider neue Teilnehmer (andere MQTT-Teilnehmer) nicht mehr richtig angelegt.

Hat hier jemand Hilfe?

Schau mal hier in der Mqtt.cpp:

Versuche mal in Zeile 294 folgenden Block zu integrieren:

	if (receivedString.size() == 0) {
		Serial.println("Leerstring!");
		return;
	}
	

Kann’s jetzt nur nicht testen. Die Zeile mit dem Leerstring nimmst im Anschluss wieder raus; das ist nur zu Debugging-Zwecken, um zu sehen, ob das Ganze auch greift.

image

Habs mal so probiert (meine C+±Kenntnisse gehen gegen 0):

if (strlen(receivedString) == 0) {
		Serial.println("Leerstring!");
		return;
	}

Mit dem Ergebnis:

N [61066] Versuche Verbindung zu MQTT-Broker aufzubauen: 192.168.178.46
N [61066] Verbinde zu MQTT-Server mit User und Passwort
N [61097] MQTT-Session aufgebaut.
I [61484] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Sleep] [Command: ]
Leerstring!
I [61538] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Rfid] [Command: ]
Leerstring!
I [61555] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Loudness] [Command: ]
Leerstring!
I [61585] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/SleepTimer] [Command: ]
Leerstring!
I [61609] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/TrackControl] [Command: ]
Leerstring!
I [61657] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/LockControls] [Command: ]
Leerstring!
I [61671] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/RepeatMode] [Command: ]
Leerstring!
I [61694] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/LedBrightness] [Command: ]
Leerstring!
I [68136] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Sleep] [Command: ]
Leerstring!
I [68168] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Rfid] [Command: ]
Leerstring!
I [68192] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/Loudness] [Command: ]
Leerstring!
I [68216] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/SleepTimer] [Command: ]
Leerstring!
I [68251] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/TrackControl] [Command: ]
Leerstring!
I [68273] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/LockControls] [Command: ]
Leerstring!
I [68296] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/RepeatMode] [Command: ]
Leerstring!
I [68321] MQTT-Nachricht empfangen: [Topic: ESPuinoMio/Cmnd/LedBrightness] [Command: ]
Leerstring!

Wenn die „richtigen“ MQTT-Kommandos jetzt noch durchgehen, sieht das doch gut aus.

Gehen durch. Danke

Den Fix dazu habe ich übrigens die Tage eingebracht:

Super. Vielen Dank!