Align docs with ESP32-S3 dashboard architecture

This commit is contained in:
2026-06-07 09:48:13 -06:00
parent fdf3d657b6
commit dc8340a1ec
22 changed files with 211 additions and 638 deletions
+18 -15
View File
@@ -1,6 +1,6 @@
# Project State
Last updated: 2026-06-04
Last updated: 2026-06-07
## Version
@@ -18,11 +18,11 @@ Core controller:
Current dashboard plan:
Raspberry Pi Pico 2 W physical dashboard over UART
Waveshare ESP32-S3-Touch-LCD-5 over WiFi/HTTP
Optional future expansion:
Pi Zero 2 W for advanced logging, charts, and integrations
Pi Zero for long-term logging, charts, and local integrations
## ESP32 Responsibilities
@@ -36,7 +36,7 @@ The ESP32 is the source of truth for:
- Embedded WebUI
- WiFi AP recovery network
- WiFi STA client mode
- UART protocol for future Pico dashboard
- Optional UART JSON protocol for diagnostics or alternate clients
## Current Working Features
@@ -117,15 +117,11 @@ Current rear enclosure target:
Relay strategy:
Battery positive -> fuse -> relay COM -> relay NO -> load positive
Load negative -> ground bus
ESP32 relay board output
-> external fused automotive relay or contactor trigger
-> fused load circuit
The built-in relays are currently planned for:
- Starlink Mini
- 12V fridge
External automotive relays remain a future option for higher-current loads.
The ESP32 relay board outputs are control/trigger outputs only. Fridge, Starlink, inverter, and other major loads must use properly fused automotive relay or contactor circuits.
## Temperature Sensor Direction
@@ -159,11 +155,16 @@ Examples:
1. Verify WebUI setup workflow after fresh flash.
2. Clean up DS18B20 physical distribution hardware.
3. Test 2-4 temperature probes after distribution board is installed.
4. Start Pico dashboard MVP over UART.
4. Start Waveshare ESP32-S3 dashboard MVP over WiFi/HTTP.
5. Add config backup/restore.
6. Improve BMS out-of-range behavior without changing NimBLE connect timeout.
7. Define future Pi Zero logging/integration role without moving control authority off the Cargo ESP32.
- Fixed WebUI temperature probe scan by registering `/temps/scan`, `/temps/assign`, and `/temps/clear` firmware routes.\n\n- Added per-temperature-sensor `weather` flag and WebUI outside temperature badge with emoji thresholds: below 50°F ice, 50-74°F happy, 75-84°F sun, and 85°F+ fire.\n\n- Improved WebUI temperature sensor config checkbox layout with compact On/Weather controls.\n\n- Temperature probe assignment now enforces one logical slot per physical DS18B20 address; assigning a probe to a new slot clears the old slot mapping.\n\n- Added per-slot WebUI Clear buttons for temperature probe assignments using the existing `/temps/clear` API.\n\n- Fixed weather temp checkbox persistence by saving the `weather` flag from WebUI temp config and auto-saving checkbox changes.\n\n- Fixed temperature assignment clearing so Clear removes the stored DS18B20 address, disables the slot, clears weather flag, and resets cached temp state.\n\n- Hardened `/temps/clear` so clearing a temp slot removes the persisted DS18B20 address, disables the slot, clears weather flag, resets cached temp state, and supports clearing all slots with an empty POST body.\n\n- Removed legacy physical-scan-order fallback for unassigned DS18B20 slots; enabled slots now require an explicit assigned address before reporting a value.\n\n- Filtered DS18B20 scan results so already-assigned probe addresses are hidden until cleared from their configured temp slot.\n\n- Moved WebUI Temperature Assignment card directly above Temperature Sensor Config for better setup flow.\n\n- Added read-only assigned DS18B20 address display under each WebUI temperature config slot.\n\n- Fixed DS18B20 scan filtering so assigned probes are hidden from assignment results without removing them from runtime polling.\n\n- Dashboard temperature list now hides disabled, unassigned, offline, or invalid temp slots while keeping all slots visible in Config.\n\n- Fixed dashboard temp filtering to avoid requiring address in runtime temp payload.\n\n- Fixed WebUI temp config so the On checkbox fully controls whether each temp slot is enabled.\n\n- Restored Overview relay control rendering after dashboard temp layout changes.\n\n- Fixed Overview relay buttons to call the existing `relay()` WebUI handler instead of missing `setRelay()`.\n\n- Restored Overview relay controls to separate ON and OFF buttons per relay.\n
Recent notes:
- WebUI temperature scan, assign, clear, and weather/outside-air selection are implemented.
- DS18B20 slots now require explicit assigned addresses before reporting values.
- Relay controls and temperature configuration remain driven by generic IDs plus saved configuration names.
## Dashboard Architecture Update
@@ -181,4 +182,6 @@ Dashboard Client:
→ Consumes existing HTTP API
→ Planned LVGL-based dashboard UI
The Raspberry Pi Pico 2 W dashboard path is no longer the primary implementation target. UART JSON remains supported as an optional interface for future expansion, debugging, or alternate dashboard hardware.\n\n- Added dedicated ESP32-S3 dashboard planning document covering architecture, API use, LVGL screens, connection flow, and deferred Pico path.\n
There is no planned Pico dashboard path. Existing Pico/UART files are legacy artifacts unless explicitly revived later.
UART JSON remains optional for diagnostics or alternate clients. New dashboard work should target the Waveshare ESP32-S3 display and the HTTP API.