WebUI ohne Internet

@trainbird @tueddy Wir hatten ja schon mal darüber gesprochen bezüglich Nutzung des Webinterfaces ohne Internet.

Damit ich das besser eingrenzen kann: Ist das ein Wunsch, der schon vorher kam?
Lohnt es sich, dafür Zeit zu investieren?

Ich habe es gestern hingebracht, dass zuerst die Dateien vom Gerät verwendet werden 8sofern vorhanden), und nur, wenn diese fehlen, die Datei aus dem Internet geholt wird. Also den gleichen Ansatz, welcher schon für das Favicon/Logo verwendet wird. Das funktioniert, ist aber viel langsamer. *1)

Also denke ich, der andere Ansatz ist besser: Zuerst aus dem Internet laden und erst bei einem Timeout/404 auf die Datei auf dem Gerät zugreifen. Die meisten Anwender haben ja Internet und haben es gerne schnell. und der Fallback ohne Internet wäre dann einfach etwas langsamer. *2)

Nun die Frage, die ich schon mal gestellt hatte, aber noch keine Antwort gekriegt habe:
Wie sieht es mit der Flash-Belegung aus? Mein Board sagt, dass das Flash 6 MB hat. Wieviel hat das kleinste unterstützte Board?
Alle benötigten externen Dateien belegen 1.6 MB:
image

Gemäss *2) könnte man die ttf-Datei sogar weglassen → 1.2 MB.

Das würde ja eigentlich gut ins interne Flash passen, und dann hätten wir nicht die Herausforderung, die Daten auf der SD-Karte vorhalten zu müssen (und sicherzustellen, dass sie aktuell sind).
Ich könnte mir auch vorstellen, dass wir das als Compile-flags konfigurierbar machen könnten:

  • WebUI ohne Internet möglich: Ja/Nein
  • Priorität: Internet/Gerät

*1) Das kann man verbessern, indem man dem Webbrowser sagt, er solle die Dateien cachen. Aber beim ersten mal ist es trotzdem noch langsam.

*2) Einen grösseren Anteil hat die ttf-Datei, die eigentlich redundant zur woff2-Datei ist. Gemäss WOFF, TT oder OT – wir behalten bei Webfonts den Durchblick ist woff ein Container, der ttf komprimiert enthalten kann. Und gemäss Web Open Font Format – Wikipedia sollten das mittlerweile alle Webbrowser unterstützen.

*3) Des Szenario, dass das CDN nicht erreichbar ist, hatten wir ja letzthin, ist meiner Meinung nach aber ein Ausnahmezustand. Wenn das passiert, haben ganz viele andere Webseiten auch ein Problem.

Dein Board hat 16 MB Flash.
Wir haben bei den ESP32-Modulen drei unterschiedliche Speicherbestückungen: 4, 8 und 16 MB.

4: Ist bei (fast?) allen ESP32-WROOM (kein PSRAM) Standard. Es gibt allerdings vereinzelt auch Develboards, die WROVER mit 4 MB einsetzen (von TTGO zB). Das Problem mit 4 MB ist, dass die ESPuino-Firmware bisschen über 2 MB groß ist und da nicht doppelt reinpasst. Daher geht kein OTA.

8: Scheint es relativ selten zu geben. Reichen würde es uns für alles, aber 8 MB scheinen ein Stück weit exotisch zu sein.

16: Die meisten WROVER-Module und generell ALLE Develboards, die ich entwickelt habe, haben 16 MB Flash. Letztlich sind die Aufpreise gering, also setze ich einfach durchgehend 16 MB ein.

Ich rede an dieser Stelle nicht vom ESP32-S3, sondern nur vom klassischen ESP32.

Das würde bedeuten, dass man das Embedden direkt in die Firmware als Option anbieten könnte, oder?
Wer nur 4MB hat, muss halt ohne auskommen oder die HW upgraden. Sowieso wird diese Option nur für einen kleinen Teil der Anwender ein Muss sein.