Skip to content

Releases: botts7/esp32-wallbox

v3.2.1

Choose a tag to compare

@botts7 botts7 released this 23 Jul 11:14
5f848cc

Stability release on top of v3.2.0.

Fixed

  • MQTT-related crash/reboot (the dominant cause of intermittent reboots) — fixed two faults: the BLE task was driving MQTT concurrently with the main loop (non-thread-safe → lwip corruption), and MQTT reconnect could deref a NULL socket after a WiFi blip. Reconnect now waits for WiFi + forces a fresh socket, and the cross-task MQTT access is removed.
  • /logs Download hang — Download now builds the file client-side, no server round-trip.

Added

  • firmware.elf attached to releases (for coredump symbolisation).
  • BLE op timings (ble_write_max_ms / ble_rt_max_ms) on /api/diag/runtime + crash-breadcrumb phase.

Known issues

  • A rare interrupt-watchdog reboot (~once every few days) remains under investigation; it leaves no coredump. The frequent MQTT crashes fixed here were the dominant cause of reboots.

Update

  • Existing gateways: OTA as usual, or via the HA integration's Update entity.
  • firmware.bin + SHA256SUMS.txt (+ firmware.elf for debugging) attached below once the build completes.

v3.2.0

Choose a tag to compare

@botts7 botts7 released this 18 Jul 08:39
e21c1d7

Stable release — promotes 3.2.0-rc.4 and adds the post-rc.4 diagnostics and robustness fixes below. Soaked clean on two gateways (241h + 20h+), rc.4 confirmed OTA'ing cleanly.

What's new since 3.1

The full 3.2 line: firmware charge-interval capture (real charge windows), control-owner arbitration, per-model charger quirk handling, Copper/marginal-link hardening, HA Add-on parity, and the diagnostics below. See CHANGELOG.md for the complete history.

Highlights this release

  • Crash diagnostics (coredump). A dedicated coredump partition captures a full ELF core on any panic / watchdog reset. /api/coredump/summary shows the crashing task + backtrace over HTTP — no cable, no ELF. ⚠️ Adds a partition, so it only activates after a one-time USB re-flash; OTA installs are unaffected and keep working normally.
  • Invalid-JSON gateway payload fix — device strings JSON-escaped, chip_temp emits null on NaN (#172).
  • OTA history now shows the version you upgraded to (beta.14 → rc.4), and a silent NVS write-freeze that had stopped history recording on some boxes is fixed (#13).
  • Watchdog restore fix — the WDT could be left unable to reboot after an OTA.

Reports closed

  • #26 Pulsar Plus charging stops — reporter's HA automation, not firmware.
  • #13 OTA history / releases-link follow-ups.

Install / update

  • Existing gateways: OTA as usual (Firmware → Upload). To also enable crash-dump capture, do a one-time USB re-flash (bootloader + partitions + firmware) — settings and charge log are preserved.
  • New installs: USB-flash bootloader + partitions + firmware, then configure via the AP portal.

firmware.bin + SHA256SUMS.txt are attached below once the build completes.

v3.2.0-rc.4

v3.2.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@botts7 botts7 released this 13 Jul 08:41

Release candidate 4 for v3.2.0 — a stability + correctness hardening pass.

Fixed

  • Charge-log / costs: recorded nothing since late June on Eco-Smart solar (cp ≈ 0) and silently failed to persist on a near-full NVS partition — both fixed. Solar (green) energy is now attributed from the authoritative r_lse. Costs populate again.
  • MQTT publish ring filled and dropped forever (then panicked) when MQTT was disabled / no broker#25 (thanks @geertvanvaerenbergh).
  • BLE response cross-core race that could panic on marginal links.
  • MQTT resume_schedule could fault a paused charger (error 114); den V2H energy scale 10× fix; removed the bogus MQTT green_energy sensor (was the override flag); Zentri/original-Pulsar status-enum + keepalive fixes; /api/command?action=current clamped 6–32 A.
  • New authoritative schedule_paused flag in /api/status (fixes the false "paused" banner during solar).
  • Gateway Temperature emits null / unavailable on hardware without a real internal sensor (classic ESP32/WROOM).

Full detail in CHANGELOG.md. New charger-model reference: docs/CHARGER_QUIRKS.md.

OTA asset: wallbox-gateway-v3.2.0-rc.4-esp32s3.bin (attached by CI shortly after this release is created).

v3.2.0-rc.3 — code-review fixes

Pre-release

Choose a tag to compare

@botts7 botts7 released this 10 Jul 10:34

Third RC for 3.2.0 — pre-stable code-review fixes over rc.2:

  • Gateway Temperature MQTT sensor was stuck at 0 — chip_temp is now published in the MQTT gateway payload (not just /api/status).
  • OTA: a rejected/duplicate upload could un-pause BLE mid-flash of the real one — the un-pause is now gated on this upload having actually paused.
  • Charge-log recovery is idempotent — a crash between the two NVS writes on burst close can no longer double-append an interval.

Also now attaches the board-named wallbox-gateway-<tag>-esp32s3.bin asset automatically (the OTA-asset workflow fix). Install via the HA Update entity (pre-releases) or USB.

v3.2.0-rc.2 — charge-log persistence + diagnostics

Choose a tag to compare

@botts7 botts7 released this 10 Jul 07:29

Second release candidate for 3.2.0 — rc.1 plus three additions. If this soaks clean it promotes to 3.2.0 stable.

Fixed

  • Charge-log no longer loses a charge interrupted mid-burst. The in-progress burst lived only in RAM, so a reboot / OTA mid-charge — or an r_dat feed stall that never delivered the "cp dropped" close-sample — silently dropped the whole charge (intervals are only written on close). The open burst is now persisted to NVS periodically and recovered on the next boot, and a stalled open burst is auto-closed on a timeout. (Root-caused from a gateway whose log went silent across a reboot-heavy OTA window.)

Added

  • Gateway die temperature (chip_temp) in /api/status + an MQTT diagnostic sensor ("Gateway Temperature"), so thermal issues are visible instead of guessed.

Changed

  • BLE error logs decode the NimBLE code — e.g. err 0x07 ENOTCONN (link dropped mid-op) instead of bare hex — on the secureConnection / encryption / disconnect paths, so pasted logs are self-diagnosing.

Everything from rc.1 (EM340 per-phase sensors, OTA self-correct/diagnose) carries forward. Install via the HA Update entity (enable pre-releases) or USB-flash the attached binaries.

v3.2.0-rc.1 — 3.2.0 release candidate

Pre-release

Choose a tag to compare

@botts7 botts7 released this 10 Jul 03:43

Release candidate for 3.2.0. Rolls up the entire 3.2.0-beta line — if this soaks clean on real gateways, it promotes to the 3.2.0 stable release.

New since beta.14

  • Per-phase EM340 / Power-Boost meter diagnostics — new MQTT sensors for per-phase mains voltage (Mains Voltage L2/L3) and house current (House Current L2/L3), alongside the existing per-phase Grid Power L1/L2/L3. A 3-phase meter now exposes full per-phase voltage, current and power. Diagnostic-category, auto-hidden when no meter is fitted; L2/L3 read 0 on single-phase. (Community contribution — thanks @hannesjanno, #22.)
  • OTA failures are now self-correcting + diagnosable — a failed flash no longer leaves BLE paused (it un-pauses immediately so a retry works), and the error now carries the real flash-layer reason (flash begin failed, flash write failed, bad magic byte, or truncated) instead of a generic "Upload failed".

How to install

  • From Home Assistant: the Wallbox Gateway integration's Update entity will offer 3.2.0-rc.1 (it's marked pre-release — enable pre-releases if you want it before stable).
  • Fresh flash: use the ESP Web Tools one-click installer on the repo, or USB-flash the attached firmware.bin / bootloader.bin / partitions.bin.

This is a pre-release for soak-testing. Please report anything odd against the tracker; if it's stable, 3.2.0 stable follows.

Full notes: see CHANGELOG.md.

v3.2.0-beta.14 — OTA fix + idempotent Start/Stop

Choose a tag to compare

@botts7 botts7 released this 07 Jul 10:35

Fixed

  • OTA no longer false-rejects a valid upload as "truncated" (forcing USB re-flashes). The size check compared firmware bytes written against the request Content-Length — which for a multipart upload (HA integration + OTA page) includes the boundary + headers (a few hundred bytes not written to flash). On longer boundaries this tripped the tolerance and aborted a complete image. Fixed in both OTA handlers; Update.end()'s image checksum remains the real integrity guard. Verified on hardware: an upload the old check rejected now flashes cleanly. (gambys, ManuMaxGit)
  • Start / Stop are now idempotent (#23). A "start" while already charging, or a "stop" while already stopped, is now skipped instead of re-sent. Some chargers (e.g. Pulsar Plus USA firmware) treat w_cha as a toggle, so a redundant write flipped the state the wrong way (switch on-while-on → off). Now correct on every surface (HA, HomeKit, dashboard, MQTT). (quintani)
  • "Last Charge Burst" MQTT sensor no longer spams the HA log (invalid state_class: measurement on an energy sensor → now none).
  • Release binaries no longer report -dirty — the version script ignores the regenerated web-page headers. (peter-mcc, #13)

Changed

  • r_lse read heap hardening (#13) — frees its raw response right after parsing (peaks at two payload copies, not three), easing heap-fragmentation pressure at long uptime.

⚠️ If you're on an older beta and OTA fails as "truncated," flash this one via USB once — after that, OTA works normally again (this release contains the fix).

v3.2.0-beta.13 — Copper SB network status rendering (#20)

Choose a tag to compare

@botts7 botts7 released this 04 Jul 13:44

Fixed (Info → Tools network reads, Ethernet-capable chargers e.g. Copper SB)

  • WiFi Status showed [object Object] when the charger returns gwsta as an object (Copper Business firmware) — now renders the fields.
  • Network Status (gnsta) only showed the first interface, dropping Ethernet on chargers reporting both Wi-Fi and Ethernet — now lists every interface (headed by its type).

Pulsar chargers (numeric gwsta, single interface) render exactly as before. Thanks @ManuMaxGit (#20).

Includes everything from beta.12. OTA the attached bin or install from HA (integration v0.20.0+).

v3.2.0-beta.12 — status.board for HA firmware Update entity

Choose a tag to compare

@botts7 botts7 released this 04 Jul 07:45

Added

  • Build target exposed as /api/status.board (e.g. esp32s3). The HA integration's firmware Update entity (integration v0.20.0+) reads this to fetch the release binary matching the gateway's board, so one-click OTA-from-HA always installs the right image. Falls back to esp32s3 on older firmware.

Everything from v3.2.0-beta.11 is included. OTA the attached …-esp32s3.bin or install it straight from Home Assistant (Settings → Updates) with integration v0.20.0.

v3.2.0-beta.9 — multi-gateway + HA compatibility

Choose a tag to compare

@botts7 botts7 released this 03 Jul 10:58

Gateway firmware — pairs with Add-on ≥ 0.41.0 and Integration ≥ 0.18.1.

Fixed / added since beta.7

  • Multiple gateways no longer collide in Home Assistant — MQTT topics are namespaced per gateway (wallbox/<ha_device_id>/…), so two chargers stop cycling values into each other's entities.
  • MAC-unique default HA Device ID — two out-of-box gateways get distinct entity IDs (existing installs keep their saved ID).
  • gw_fw in /api/status — lets the Add-on/Integration warn on firmware that's too old for the fields they read.
  • Status/realtime poll retries once on a marginal BLE link — helps weak-antenna setups where the cached status could stay empty.
  • Baltic/EET timezones (Europe/Tallinn, Riga, Vilnius, Helsinki, Athens, Bucharest, Sofia).
  • POST /api/reboot_gateway — auth-only reboot for the integration/Add-on.

Update

OTA the attached .bin via the gateway's OTA tab (or the Add-on's OTA page). Fresh installs use the 3-file USB flash — see the README.