Skip to content

v2.7.0 — OTA web updater, versiecheck & firmware optimalisaties

Latest

Choose a tag to compare

@wpbezemer wpbezemer released this 17 May 09:56
· 1 commit to master since this release
9e5cc97

v2.7.0 — 2026-05-17

Nieuw

  • Web OTA updater — firmware updaten via de browser op GET /update:
    • Automatisch downloaden van de laatste release via GitHub
    • Uploaden van een lokaal .bin bestand
    • Auto-update toggle — installeert automatisch bij nieuwe versie
  • Versiecheck via GitHub — de ESP checkt periodiek version.json op GitHub
    en publiceert het resultaat naar MQTT
    • homeassistant/sensor/p1meter/update_available/statetrue / false
    • homeassistant/sensor/p1meter/latest_version/state → versienummer
  • Semantic versioning — versies worden correct vergeleken als major.minor.patch
  • GET /update/check — gecachede versiecheck opvragen als JSON
  • DEBUG flag — alle Serial output achter #define DEBUG 0, standaard uit in productie.
    Zet op 1 voor volledige Serial logging tijdens ontwikkeling
  • p1CycleComplete vlag — OTA versiecheck start alleen nadat een volledig
    P1 telegram verwerkt én verstuurd is. Webserver en MQTT worden nooit geblokkeerd

Bugfixes

  • WiFi credentials verdwenensetConfigPortalTimeout stond op 30 seconden.
    Bij een trage router of stroomstoring werden credentials gewist. Fix: portal timeout
    naar 300 seconden, connect timeout naar 60 seconden
  • API endpoints niet bereikbaar — versiecheck blokkeerde de loop direct na MQTT
    verbinding. Alle requests timede out tijdens de HTTP call. Fix: check verplaatst
    naar na eerste volledige P1 cyclus via p1CycleComplete
  • HTTPS heap crash — BearSSL versiecheck vereiste ~20KB heap maar slechts ~17KB
    beschikbaar. Fix: versiecheck via plain HTTP (rawcdn.githack.com), alleen firmware
    download gebruikt nog HTTPS
  • /update pagina crashte ESP — HTML als één grote String in heap gebouwd
    (~5KB aaneengesloten geheugen). Fix: AsyncResponseStream — HTML in kleine stukjes
    verstuurd zonder heap allocatie

Optimalisaties

  • send_metric() gebruikt nu snprintf naar char buffer op de stack in plaats van
    String concatenatie — minder heap fragmentatie bij elke MQTT publish
  • Alle delay(200) voor HA discovery verwijderd — niet nodig voor retained berichten
  • HTTP timeout versiecheck: 8 → 3 seconden

EEPROM adresmap

Adres Inhoud
0–63 MQTT hostname
64–69 MQTT poort
70–101 MQTT gebruikersnaam
102–133 MQTT wachtwoord
134–165 MQTT root topic
166 Instellingen vlag
167 HA Discovery aan/uit
168–171 Update interval (ms)
172 OTA check interval (uren)
173 Auto-update aan/uit