Backlog

Ideas not implemented yet, roughly by priority.

Open checks (as of 2026-09-26)

  • Partial refresh of the data: not yet looked at on the display. Trigger it through the web interface (“Speichern” without a change); expected: no black-and-white flashing, no ghosting. A full refresh comes hourly and after every restart.

  • Offline behaviour: “offline seit HH:MM” and cached warnings are covered by tests only; reproduce once with Home Assistant unreachable.

  • Runtime measurement without the minute clock since 2026-09-27T22:51 (new version from the wake at 22:51). For comparison: with the minute clock, 11:10–20:08 drained −0.48 %/h (~10 mA), of which the awake phases explained only ~4 mA (awake share 6.3 %, 60 wakes/h at ~2.5 s each). If the rate drops clearly now, the wakes were the cause, otherwise the sleep current (then measure with a multimeter and a JST-PH adapter). Evaluate with uv run tools/battery_forecast.py --since 2026-09-27T22:51.

  • Sleep current measurement (planned 2026-09-28): power the board through BAT/GND from a bench supply (3.7–4.0 V) with a multimeter in the positive lead; read the deep-sleep current between two data updates. Measure once with DISPLAY_OFF_IN_SLEEP = False and once with True (switch with make deploy-wlan). Optionally read the awake current with WLAN in maintenance mode.

Four buttons as input for Home Assistant

Instead of a single wake button, four buttons whose presses arrive in Home Assistant as events (MQTT, as event entities of the “ePaper” device for instance) and trigger automations there.

  • Pins: A0–A3 (GPIO 18, 17, 16, 15), all RTC capable; A4, D12, MI, RX and TX would still be free afterwards.

  • Wake from deep sleep via ext1 (several pins at once); read which button it was from the pin levels right after waking. Choose the wiring (to GND with pull-up, or to 3.3 V with pull-down) to suit the ESP32-S3’s ext1 options.

  • Latency: 3–5 s from deep sleep (WLAN connection), immediate in awake mode.

  • Display: a footer (~22 px) with the four button labels, configurable in the web interface; the tile rows become about 7 px lower for it.

  • Debounce, and do not redraw on every press when several come in a row in awake mode.

Battery

  • Remaining runtime in Home Assistant: the board records the charge level hourly (24 values in RTC memory), computes the discharge rate of the last 24 h from it and reports a “Restlaufzeit” (days) sensor via MQTT. Evaluate the measurement first.

Boat

  • SignalK as data source (besides Home Assistant), with a catalog for the web interface.

  • Data source per WLAN: Home Assistant at home, SignalK on board.

Other

  • Display language (i18n): the texts on the display and in the web interface are German; make the language configurable (English first), with the texts in one place per language.

  • Runtime measurement: after a few days on battery, extrapolate the real runtime from the history of sensor.epaper_akku and compare it with the estimate.