NEWS
WLAN-Probleme ESP8266
-
@haselchen Es ist die Frage, welche Rolle die CPU, und welche das "Drumherum" auf der kleinen Leiterplatte spielt ...
Auf den meisten WLAN-Steckdosen, die mit Tasmota geflasht werden können arbeitet ein ESB8266 - und da hört man wenig von instabilem WLAN ...
Ich habe ja die Schaltung ursprünglich auf einem D1Mini aufgebaut, und nutzte vom D1Mini die Ports
D1 (Pin 14)-> Stellantrieb Heizkörper
D2 (Pin 13)<-Fensterkontakt (noch nicht implementiert)
D4 (Pin 11)-> PWM Heizkörperlüfter
D5 (Pin 4)<-> OneWire BusUm auf meiner Leiterplatte keine Änderungen vornehmen zu müssen werden beim Lolin S2 Mini folgende GPIOs verwendet (Pinnummern der äußeren Reihe wie beim D1 Mini gezählt)
GPIO35 (Pin 14)-> Stellantrieb Heizkörper
GPIO33 (Pin 13)<-Fensterkontakt (noch nicht implementiert)
GPIO16 (Pin 11)-> PWM Heizkörperlüfter
GPIO7 (Pin 4)<-> OneWire BusIn EINEM der Blogs zu dem S2 Mini habe ich gelesen, dass GPIO 35 und -33 nicht als Ausgang genutzt werden dürften - https://draeger-it.blog/vergleich-wemos-d1-mini-mit-lolin-s2-mini/
Die Pins 34, 35, 36 & 39 am Lolin S2 mini können nur als Input Pin dienen!
Er meint wohl die GPIO...
Aber diesen Hinweis habe ich nirgendwo sonst gefunden, und ihn deshalb nicht ernst genommen. Vielleicht ist das aber ein Problem ...
EDIT: Hier im ESP32 WROOM 32 Datasheet findet man einen Hinweis ... der wird aber im Lolin S2 mini nicht eingesetzt:
https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32_datasheet_en.pdf
Diese Einschränkung gibt es beim ESP32-S2 nicht
https://www.espressif.com/sites/default/files/documentation/esp32-s2_datasheet_en.pdf
@martinp said in WLAN-Probleme ESP8266:
Ich bin da etwas ratlos. Vielleicht gehe ich einfach pragmatisch an die Sache heran: Nach 10 "Disconnected From Wi-Fi" in z. B. 100 Sekunden wird ein Reboot ausgelöst ...
So, auch diese Änderung habe ich eingebaut... Die Hauptschleife läuft in einem 10 Sekunden-Takt (Temperatur auslesen, Berechnungen ausführen, Ventil+Lüfter ansteuern). Wenn 24 Mal in Folge MQTT und WLAN (eins oder beide) nicht "up" sind, wird ein Reboot gemacht ...
Danach gab es aber weiterhin Probleme. Habe dann den Verdacht gehabt, dass ein mqttClient.publish(...) bei nicht etablierter Verbindung irgendwie durchdringt, also nicht abgefragt wird, ob überhaupt eine Verbindung aufgebaut ist...
Nun alle publish-Aufrufe in eine connected Abfrage gepackt:if (mqttClient.connected()) { uint16_t packetIdPub1 = mqttClient.publish((MQTT_PUB_ACTOR_PREFIX + MQTT_PUB_FANACT_SUFFIX).c_str(), 1, true, String(help).c_str()); delay(10); packetIdPub1 = mqttClient.publish((MQTT_PUB_ACTOR_PREFIX + MQTT_PUB_VALVE_SUFFIX).c_str(), 1, true, ventState ? "1" : "0"); delay(10); } -
@martinp said in WLAN-Probleme ESP8266:
Ich bin da etwas ratlos. Vielleicht gehe ich einfach pragmatisch an die Sache heran: Nach 10 "Disconnected From Wi-Fi" in z. B. 100 Sekunden wird ein Reboot ausgelöst ...
So, auch diese Änderung habe ich eingebaut... Die Hauptschleife läuft in einem 10 Sekunden-Takt (Temperatur auslesen, Berechnungen ausführen, Ventil+Lüfter ansteuern). Wenn 24 Mal in Folge MQTT und WLAN (eins oder beide) nicht "up" sind, wird ein Reboot gemacht ...
Danach gab es aber weiterhin Probleme. Habe dann den Verdacht gehabt, dass ein mqttClient.publish(...) bei nicht etablierter Verbindung irgendwie durchdringt, also nicht abgefragt wird, ob überhaupt eine Verbindung aufgebaut ist...
Nun alle publish-Aufrufe in eine connected Abfrage gepackt:if (mqttClient.connected()) { uint16_t packetIdPub1 = mqttClient.publish((MQTT_PUB_ACTOR_PREFIX + MQTT_PUB_FANACT_SUFFIX).c_str(), 1, true, String(help).c_str()); delay(10); packetIdPub1 = mqttClient.publish((MQTT_PUB_ACTOR_PREFIX + MQTT_PUB_VALVE_SUFFIX).c_str(), 1, true, ventState ? "1" : "0"); delay(10); }Neue Nachrichten ...
heute an der iobroker Installation gebastelt, und mehrere Neustarts gemacht ...
Dabei kamen wieder altbekannte Nachrichten in Endlosschleife:
2024-09-16 14:00:15.781 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:17.792 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:19.783 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:21.782 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:22.567 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:00:31.955 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488031944_3480 2024-09-16 14:00:31.974 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1 2024-09-16 14:00:59.831 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:05.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:09.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.835 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.836 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:12.577 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:01:21.946 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488081946_210 2024-09-16 14:01:21.953 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1Bisher habe ich in diesen Situation immer den ESP32 MQTT-Client so lange neu gestartet (Reset-Taster, Stromlos machen), bis die Messages ausblieben ...
Diesmal habe ich etwas anderes probiert, und den MQTT Server/Client Adapter neu gestartet => erster Versuch hat das Problem behoben!
Ist der MQTTClient/Server-Adapter ggfs. etwas zickig, und das der Grund dafür, dass viele User zwischen iobroker und ihre MQTT Geräte einen Mosquitto Server klemmen, und dann mit dem MQTT-Client-Adapter arbeiten?
Abgesehen davon, dass dieses Problem ärgerlich ist, ist es durchaus positiv, dass es eine Lösung gibt, die das Problem im ersten Anlauf heilt, und "aus der Ferne" ausgelöst werden kann (kein Reset-Taster in einem schwer erreichbaren ESP32 betätigen...)
-
Neue Nachrichten ...
heute an der iobroker Installation gebastelt, und mehrere Neustarts gemacht ...
Dabei kamen wieder altbekannte Nachrichten in Endlosschleife:
2024-09-16 14:00:15.781 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:17.792 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:19.783 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:21.782 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:22.567 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:00:31.955 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488031944_3480 2024-09-16 14:00:31.974 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1 2024-09-16 14:00:59.831 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:05.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:09.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.835 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.836 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:12.577 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:01:21.946 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488081946_210 2024-09-16 14:01:21.953 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1Bisher habe ich in diesen Situation immer den ESP32 MQTT-Client so lange neu gestartet (Reset-Taster, Stromlos machen), bis die Messages ausblieben ...
Diesmal habe ich etwas anderes probiert, und den MQTT Server/Client Adapter neu gestartet => erster Versuch hat das Problem behoben!
Ist der MQTTClient/Server-Adapter ggfs. etwas zickig, und das der Grund dafür, dass viele User zwischen iobroker und ihre MQTT Geräte einen Mosquitto Server klemmen, und dann mit dem MQTT-Client-Adapter arbeiten?
Abgesehen davon, dass dieses Problem ärgerlich ist, ist es durchaus positiv, dass es eine Lösung gibt, die das Problem im ersten Anlauf heilt, und "aus der Ferne" ausgelöst werden kann (kein Reset-Taster in einem schwer erreichbaren ESP32 betätigen...)
@martinp said in WLAN-Probleme ESP8266:
Ist der MQTTClient/Server-Adapter ggfs. etwas zickig, und das der Grund dafür, dass viele User zwischen iobroker und ihre MQTT Geräte einen Mosquitto Server klemmen, und dann mit dem MQTT-Client-Adapter arbeiten?
Wenn du viele MQTT-Teilnehmer hast, dann legt dir halt auch der ioBroker MQTT-Broker sehr viele Datenpunkte an. Wenn man in ioBroker nur den Client hat, dann kannst du halt nur gezielt die Topics anfordern, die du brauchst. Das war für mich der Hauptgrund für den Einsatz von Mosquitto.
Zickig würd ich jetzt den ioBroker-Adapter nicht nennen
Installier halt einfach nen Mosquitto und probier es aus. Dann kannst du zumindest das Problem weiter eingrenzen. -
@martinp said in WLAN-Probleme ESP8266:
Ist der MQTTClient/Server-Adapter ggfs. etwas zickig, und das der Grund dafür, dass viele User zwischen iobroker und ihre MQTT Geräte einen Mosquitto Server klemmen, und dann mit dem MQTT-Client-Adapter arbeiten?
Wenn du viele MQTT-Teilnehmer hast, dann legt dir halt auch der ioBroker MQTT-Broker sehr viele Datenpunkte an. Wenn man in ioBroker nur den Client hat, dann kannst du halt nur gezielt die Topics anfordern, die du brauchst. Das war für mich der Hauptgrund für den Einsatz von Mosquitto.
Zickig würd ich jetzt den ioBroker-Adapter nicht nennen
Installier halt einfach nen Mosquitto und probier es aus. Dann kannst du zumindest das Problem weiter eingrenzen.@blockmove Derzeit ist das noch SEHR überschaubar ...
Ein paar Zigbee-Devices über Zigbee2MQTT, Frigate und eine Handvoll Tasmota - Devices ...
-
Neue Nachrichten ...
heute an der iobroker Installation gebastelt, und mehrere Neustarts gemacht ...
Dabei kamen wieder altbekannte Nachrichten in Endlosschleife:
2024-09-16 14:00:15.781 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:17.792 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:19.783 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:21.782 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:00:22.567 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:00:31.955 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488031944_3480 2024-09-16 14:00:31.974 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1 2024-09-16 14:00:59.831 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:05.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:09.833 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.835 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:11.836 - warn: mqtt.0 (498) Client [esp32-e0624b304ec0] Message 5 deleted after 11 retries 2024-09-16 14:01:12.577 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connection closed: closed 2024-09-16 14:01:21.946 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] connected with secret 1726488081946_210 2024-09-16 14:01:21.953 - info: mqtt.0 (498) Client [esp32-e0624b304ec0] Received pubrec on esp32-e0624b304ec0 for unknown messageId 1Bisher habe ich in diesen Situation immer den ESP32 MQTT-Client so lange neu gestartet (Reset-Taster, Stromlos machen), bis die Messages ausblieben ...
Diesmal habe ich etwas anderes probiert, und den MQTT Server/Client Adapter neu gestartet => erster Versuch hat das Problem behoben!
Ist der MQTTClient/Server-Adapter ggfs. etwas zickig, und das der Grund dafür, dass viele User zwischen iobroker und ihre MQTT Geräte einen Mosquitto Server klemmen, und dann mit dem MQTT-Client-Adapter arbeiten?
Abgesehen davon, dass dieses Problem ärgerlich ist, ist es durchaus positiv, dass es eine Lösung gibt, die das Problem im ersten Anlauf heilt, und "aus der Ferne" ausgelöst werden kann (kein Reset-Taster in einem schwer erreichbaren ESP32 betätigen...)
@martinp wie @Blockmove schon schreibt - ich habe mit meinen inzwischen über 150 MQTT-Clients (ich finde das Protokoll einfach genial) auch auf den Mosquitto gewechselt und den MQTT-Adapter auf Client umgestellt.
Der MQTT-Adapter läuft in JavaScript und "emuliert" (vereiht mir den Begriff) einen MQTT-Broker. Ja, natürlich, er ist ein richtiger MQTT Broker. Wann ist man ein richtiger MQTT-Broker? Wenn man die Anfragen und Meldungen der Clients so beantwortet wie ein MQTT-Broker das eben so machen muss.
Der MQTT-Adapter läuft aber nun mal in JavaScript oder TypeScript - und da kann das Timing irgendwann mal ein Problem sein, zumindest wenn es viele Geräte und/oder Anfragen werden. Antwortet der z.B. nicht innerhalb der Zeitlimits, brechen die Clients die Verbindung ab und machen sofort wieder einen reconnet. Ganz schlimm wird das nach einem Neustart des Adapters bei mir, dann sind ja alle 150 Clients getrennt und wollen quasi gleichzeitig wieder eine Verbindung.
Wie Leistungsfähig der MQTT-Adapter ist hängt dann auch von deinem System ab, also CPU & Netzwerkkarte. So ein Raspberry Pi 3 über WLAN kann da nur ganz wenige Geräte, ein Intel I9 15900 für fast 1.000 Euro mit Gigabit LAN schafft da ein paar tausend mehr.Der Mosquitto ist dagegen ein kompiliertes Programm das in C/C++ geschrieben wurde. Ist damit näher an der Hardware/Betriebssystem und schon dadurch vermutlich leistungsfähiger. Und schafft so auch auf schwachbrüstigen Systemen ein paar hundert oder tausend Clients. Und wenn der MQTT-Adapter dann als Clients mal eine halbe Sekunde länger braucht um einen Wertwechsel zu erfassen ist das dann ohne folgen.
Ich hab im MQTT-Client alle Topics abonniert, du kannst natürlich wie @Blockmove schreibt auch gezielt nur bestimmt holen.
Und auch wenn es überschaubar ist - es hängt vom Quellsystem ab und wie viele Topics deine Handvoll Geräte erzeugen bzw. wie oft diese aktualisiert werden
-
@martinp wie @Blockmove schon schreibt - ich habe mit meinen inzwischen über 150 MQTT-Clients (ich finde das Protokoll einfach genial) auch auf den Mosquitto gewechselt und den MQTT-Adapter auf Client umgestellt.
Der MQTT-Adapter läuft in JavaScript und "emuliert" (vereiht mir den Begriff) einen MQTT-Broker. Ja, natürlich, er ist ein richtiger MQTT Broker. Wann ist man ein richtiger MQTT-Broker? Wenn man die Anfragen und Meldungen der Clients so beantwortet wie ein MQTT-Broker das eben so machen muss.
Der MQTT-Adapter läuft aber nun mal in JavaScript oder TypeScript - und da kann das Timing irgendwann mal ein Problem sein, zumindest wenn es viele Geräte und/oder Anfragen werden. Antwortet der z.B. nicht innerhalb der Zeitlimits, brechen die Clients die Verbindung ab und machen sofort wieder einen reconnet. Ganz schlimm wird das nach einem Neustart des Adapters bei mir, dann sind ja alle 150 Clients getrennt und wollen quasi gleichzeitig wieder eine Verbindung.
Wie Leistungsfähig der MQTT-Adapter ist hängt dann auch von deinem System ab, also CPU & Netzwerkkarte. So ein Raspberry Pi 3 über WLAN kann da nur ganz wenige Geräte, ein Intel I9 15900 für fast 1.000 Euro mit Gigabit LAN schafft da ein paar tausend mehr.Der Mosquitto ist dagegen ein kompiliertes Programm das in C/C++ geschrieben wurde. Ist damit näher an der Hardware/Betriebssystem und schon dadurch vermutlich leistungsfähiger. Und schafft so auch auf schwachbrüstigen Systemen ein paar hundert oder tausend Clients. Und wenn der MQTT-Adapter dann als Clients mal eine halbe Sekunde länger braucht um einen Wertwechsel zu erfassen ist das dann ohne folgen.
Ich hab im MQTT-Client alle Topics abonniert, du kannst natürlich wie @Blockmove schreibt auch gezielt nur bestimmt holen.
Und auch wenn es überschaubar ist - es hängt vom Quellsystem ab und wie viele Topics deine Handvoll Geräte erzeugen bzw. wie oft diese aktualisiert werden
@bananajoe Danke, das klingt schlüssig ... Frigate ist schon sehr schwatzhaft, was Topics angeht ...
(13 Ordner unter einem Kamera-Knoten... da habe ich auf das Zählen der Datenpunkte in den Unterordnern verzichtet ...)