Erweiterung der waveshare-Treiber um WifiManager, MQTT, OTA-Update und deepsleep

Begonnen von Jendaw, 30 März 2020, 17:12:31

Vorheriges Thema - Nächstes Thema

m.zielinski

Zitat von: Jendaw am 21 Juli 2021, 09:37:29
Wie updatest du den ESP, mit der Arduino-IDE? Beim Flashen mit der Arduino-IDE gibt es (neuerdings?) die Option, u.a. die WiFi-Daten beim Upload zu löschen. Ich schätze mit dem ESP-upload-Tool wäre das eine separate Option. Mit einem OTA-Update sollte das jedoch nicht sein.

Ich flashe mit Arduino 1.8.15. So eine Option habe ich bisher aber nicht gesehen. Ich gehe immer auf SKetch/Hochladen und lasse in compilieren Hochladen. Das es auf einmal komplett hing war aber ohne, dass ich direkt davor neu geflasht hätte.

Das mit den OTA-Updates muss ich mir wohl endlich mal genauer ansehen...


Den Widerstand werde ich auch noch auf die RST-Leitung legen. Aber ich finde viele Infos zu "Zombie-Modus" bei einigen ESP8266 die zu dem fehlerbild passen - leider ohne eine immer passende Lösung...

Es tritt auch auf egal ob mit USB-Powerbank als STromquelle oder am Windows PC.

Jendaw

Zitat von: m.zielinski am 21 Juli 2021, 09:45:01
Ich flashe mit Arduino 1.8.15. So eine Option habe ich bisher aber nicht gesehen. Ich gehe immer auf SKetch/Hochladen und lasse in compilieren Hochladen.

Hängt vllt. auch vom verwendeten Board ab, ich nutze die selbe ArduinoIDE-Version. Ich hab mal ein Bild angehangen, von dem, was ich meine.
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

m.zielinski

OK Die Option war etwas versteckt :-)

Ich habe jetzt mal temporär ein 5V USB-Netzteil angeschlossen. Immernoch läuft die Firmware aber nach unregelmäßiger Zeit gibt es keine Aktualisierungen mehr und das Konfigurations-Wlan ist wieder da- scheint, als ob öfter mal die Wifi-Config verschwunden geht. EInmal hatte ich auch schon, dass aus die MQTT-Konfiguration komplett leer war.

In meiner angepassten Firmware hatte ich die WifiDaten im Quellcode hinterlegt, wodurch es nach einem Restart wieder ging.

Jendaw

Zitat von: m.zielinski am 26 Juli 2021, 18:05:44
Immernoch läuft die Firmware aber nach unregelmäßiger Zeit gibt es keine Aktualisierungen mehr und das Konfigurations-Wlan ist wieder da- scheint, als ob öfter mal die Wifi-Config verschwunden geht. EInmal hatte ich auch schon, dass aus die MQTT-Konfiguration komplett leer war.

In meiner angepassten Firmware hatte ich die WifiDaten im Quellcode hinterlegt, wodurch es nach einem Restart wieder ging.

Der AP wird aufgespannt, wenn er sich nicht mit dem WLAN verbinden konnte. Hat er immer ausreichend WLAN an dem Ort (Reduzierung der WLAN-Stärke und Nachtabschaltung beachten)?
Ich könnte folgende Dinge anbieten:
1. Das Timeout für den Verbindungsversuch erhöhen
2. Für Selberkompilierer den WiFi-Verbindungsmanager optional machen/kennzeichnen, wo der Aufruf erfolgt und die Parameter hinterlegt werden können.
3. Kein Reset der WiFi-Daten, wenn keine WLAN verfügbar ist
Dafür alternativ ein Reset über einen freien Eingang des ESP.

Schade, dass das bei dir nicht so klappt mit dem WiFi. Gibt aber auch viele Randbedingungen :(
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

m.zielinski

Nachtschaltung o.ä. habe ich nicht in meinem Wlan.

2 wäre vermutlich eine gute Idee

zu 3
wäre es möglich, dass er nach einem verlängerten Timeout den WifiManager anzeigt. Wenn der nach 5 Minuten aber immernoch nicht angesprichen wird, den ESP wieder in DeepSleep zu legen und erneut aufwachen zu lassen mit neuem Verbindungsversuch auf den hinterlegten Wifi-Daten ?

Damit würde er sich selbst berappeln und man könnte trotzdem an das Konfig-Wifi kommen ohne Löten/Taster.

Jendaw

Zitat von: m.zielinski am 27 Juli 2021, 08:47:58
wäre es möglich, dass er nach einem verlängerten Timeout den WifiManager anzeigt. Wenn der nach 5 Minuten aber immernoch nicht angesprichen wird, den ESP wieder in DeepSleep zu legen und erneut aufwachen zu lassen mit neuem Verbindungsversuch auf den hinterlegten Wifi-Daten ?

Sollte machbar sein. Ich hab die Konstante MAX_CONNECTION_FAILURES = 1 eingeführt, die dafür zuständig ist. Standard ist ein Neuversuch. Das Timeout für den AP habe ich auf 6min gesetzt: wifiManager.setConfigPortalTimeout(360);
Ich bin jedoch noch nicht dazu gekommen, das zu testen, hat also Bananenstatus :)
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

m.zielinski

Der Code reift...
Habe die Änderungen installiert und den timeout auf 10 gesetzt.
vorhin war einmal der AP auf aber wie erwartet hat er nach ner Weile rebooted und lief ohne Eingriff meinerseits.

Ich beobachte weiter. sieht erstmal gut aus.


Jendaw

Ich hab deine Antwort mal "entführt" :)

Zitat von: Borkk am 22 August 2021, 00:11:46
- Die Software von Yattien konnte ich genau einmal konfigurieren. Egal was ich zwischendurch auf den ESP spiele sobald ich die Yattien Software drauf spiele, zieht er sich von irgendwoher die Daten für das WLAN und den MQTT Server den die ich mal zum testen eingegeben habe. Somit komme ich nicht dazu den Workaround über MQTT aufzubauen. Auch mit /reset komme bekomme ich das Teil nicht zurückgesetzt.

Dein Setup sollte mit der Waveshare-Software laufen - die Yattien-Firmware erweitert diese nur.
Wenn du bereits einmal die MQTT-Daten konfiguriert hast, wird der Webserver gar nicht erst gestartet, um die Daten reseten zu können (hier muss ich mir noch was geschicktes einfallen lassen, damit das dennoch geht, ggf. über die Konsole). Die Daten sind jedoch in einer Datei gespeichert, die du "nur" löschen musst. Die WLAN-Daten sind davon noch mal separat gespeichert.
Was du tun könntest ist:
- dem ESP den WLAN-Zugang zu verweigern, damit wird der Konfigurations-AP erneut gestartet - oder
- die Yattien-Firmware neu zu flashen, dabei als Flash-Option "Erase Flash: 'All Flash Contents'" angeben (der Screenshot dafür ist ein paar Beiträge weiter oben in diesem Thread)

HTH
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)