From f5e2c5fd240484b2578a2a109d87a9735b2fb70e Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 9 Jun 2026 00:52:00 -0600 Subject: [PATCH] repo: archive legacy pico dashboard --- archive/legacy-pico-dashboard/README.md | 38 +++++++++++++++ .../legacy-pico-dashboard}/alarms/__init__.py | 0 .../alarms/alarm_definitions.py | 0 .../alarms/alarm_manager.py | 0 .../legacy-pico-dashboard}/app.py | 0 .../legacy-pico-dashboard}/comms/__init__.py | 0 .../comms/communication_service.py | 0 .../comms/http_client.py | 0 .../legacy-pico-dashboard}/comms/protocol.py | 0 .../comms/uart_client.py | 0 .../legacy-pico-dashboard}/config.py | 0 .../hardware/__init__.py | 0 .../legacy-pico-dashboard}/hardware/buzzer.py | 0 .../hardware/display.py | 0 .../legacy-pico-dashboard}/hardware/touch.py | 0 .../legacy-pico-dashboard}/main.py | 0 .../legacy-pico-dashboard}/state/__init__.py | 0 .../legacy-pico-dashboard}/state/app_state.py | 0 .../tests}/test_pico_core.py | 0 .../legacy-pico-dashboard}/ui/__init__.py | 0 .../ui/alarm_overlay.py | 0 .../ui/alarm_view_model.py | 0 .../ui/battery_screen.py | 0 .../ui/dashboard_screen.py | 0 .../ui/dashboard_view_model.py | 0 .../ui/detail_view_models.py | 0 .../legacy-pico-dashboard}/ui/power_screen.py | 0 .../legacy-pico-dashboard}/ui/renderers.py | 0 .../ui/screen_manager.py | 0 .../ui/system_screen.py | 0 .../legacy-pico-dashboard}/ui/temps_screen.py | 0 .../legacy-pico-dashboard}/ui/touch_router.py | 0 docs/CHATGPT_HANDOFF.md | 11 +++++ docs/README.md | 3 ++ docs/project-state.md | 8 ++++ firmware/esp32-s3-dashboard/README.md | 47 +++++++++++++++++++ pico-dashboard/README.md | 0 run_tests.py | 20 -------- 38 files changed, 107 insertions(+), 20 deletions(-) create mode 100644 archive/legacy-pico-dashboard/README.md rename {pico-dashboard => archive/legacy-pico-dashboard}/alarms/__init__.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/alarms/alarm_definitions.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/alarms/alarm_manager.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/app.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/comms/__init__.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/comms/communication_service.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/comms/http_client.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/comms/protocol.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/comms/uart_client.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/config.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/hardware/__init__.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/hardware/buzzer.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/hardware/display.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/hardware/touch.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/main.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/state/__init__.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/state/app_state.py (100%) rename {tests => archive/legacy-pico-dashboard/tests}/test_pico_core.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/__init__.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/alarm_overlay.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/alarm_view_model.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/battery_screen.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/dashboard_screen.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/dashboard_view_model.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/detail_view_models.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/power_screen.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/renderers.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/screen_manager.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/system_screen.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/temps_screen.py (100%) rename {pico-dashboard => archive/legacy-pico-dashboard}/ui/touch_router.py (100%) create mode 100644 firmware/esp32-s3-dashboard/README.md delete mode 100644 pico-dashboard/README.md diff --git a/archive/legacy-pico-dashboard/README.md b/archive/legacy-pico-dashboard/README.md new file mode 100644 index 0000000..6a0e40b --- /dev/null +++ b/archive/legacy-pico-dashboard/README.md @@ -0,0 +1,38 @@ +# Legacy Pico Dashboard + +This directory contains the archived Raspberry Pi Pico dashboard implementation. + +It is no longer active project firmware. + +## Why this was archived + +The current dashboard direction is the Waveshare ESP32-S3 touchscreen dashboard communicating with the Cargo ESP32 over WiFi/HTTP REST. + +The Pico dashboard path was based around: + +- Raspberry Pi Pico / Pico 2 W +- UART communication +- Pico-specific display/touch/buzzer hardware +- Python/MicroPython-style dashboard structure + +That architecture is no longer the current plan. + +## What may still be useful + +Some concepts may still be useful as reference material when building the ESP32-S3 dashboard: + +- HTTP client flow +- State model ideas +- Alarm logic concepts +- Screen/view-model structure +- API payload expectations + +Treat this as reference only. Do not add new active dashboard code here. + +## Current dashboard target + +Active dashboard work should go under: + + firmware/esp32-s3-dashboard/ + +or another explicitly approved ESP32-S3 dashboard firmware location. diff --git a/pico-dashboard/alarms/__init__.py b/archive/legacy-pico-dashboard/alarms/__init__.py similarity index 100% rename from pico-dashboard/alarms/__init__.py rename to archive/legacy-pico-dashboard/alarms/__init__.py diff --git a/pico-dashboard/alarms/alarm_definitions.py b/archive/legacy-pico-dashboard/alarms/alarm_definitions.py similarity index 100% rename from pico-dashboard/alarms/alarm_definitions.py rename to archive/legacy-pico-dashboard/alarms/alarm_definitions.py diff --git a/pico-dashboard/alarms/alarm_manager.py b/archive/legacy-pico-dashboard/alarms/alarm_manager.py similarity index 100% rename from pico-dashboard/alarms/alarm_manager.py rename to archive/legacy-pico-dashboard/alarms/alarm_manager.py diff --git a/pico-dashboard/app.py b/archive/legacy-pico-dashboard/app.py similarity index 100% rename from pico-dashboard/app.py rename to archive/legacy-pico-dashboard/app.py diff --git a/pico-dashboard/comms/__init__.py b/archive/legacy-pico-dashboard/comms/__init__.py similarity index 100% rename from pico-dashboard/comms/__init__.py rename to archive/legacy-pico-dashboard/comms/__init__.py diff --git a/pico-dashboard/comms/communication_service.py b/archive/legacy-pico-dashboard/comms/communication_service.py similarity index 100% rename from pico-dashboard/comms/communication_service.py rename to archive/legacy-pico-dashboard/comms/communication_service.py diff --git a/pico-dashboard/comms/http_client.py b/archive/legacy-pico-dashboard/comms/http_client.py similarity index 100% rename from pico-dashboard/comms/http_client.py rename to archive/legacy-pico-dashboard/comms/http_client.py diff --git a/pico-dashboard/comms/protocol.py b/archive/legacy-pico-dashboard/comms/protocol.py similarity index 100% rename from pico-dashboard/comms/protocol.py rename to archive/legacy-pico-dashboard/comms/protocol.py diff --git a/pico-dashboard/comms/uart_client.py b/archive/legacy-pico-dashboard/comms/uart_client.py similarity index 100% rename from pico-dashboard/comms/uart_client.py rename to archive/legacy-pico-dashboard/comms/uart_client.py diff --git a/pico-dashboard/config.py b/archive/legacy-pico-dashboard/config.py similarity index 100% rename from pico-dashboard/config.py rename to archive/legacy-pico-dashboard/config.py diff --git a/pico-dashboard/hardware/__init__.py b/archive/legacy-pico-dashboard/hardware/__init__.py similarity index 100% rename from pico-dashboard/hardware/__init__.py rename to archive/legacy-pico-dashboard/hardware/__init__.py diff --git a/pico-dashboard/hardware/buzzer.py b/archive/legacy-pico-dashboard/hardware/buzzer.py similarity index 100% rename from pico-dashboard/hardware/buzzer.py rename to archive/legacy-pico-dashboard/hardware/buzzer.py diff --git a/pico-dashboard/hardware/display.py b/archive/legacy-pico-dashboard/hardware/display.py similarity index 100% rename from pico-dashboard/hardware/display.py rename to archive/legacy-pico-dashboard/hardware/display.py diff --git a/pico-dashboard/hardware/touch.py b/archive/legacy-pico-dashboard/hardware/touch.py similarity index 100% rename from pico-dashboard/hardware/touch.py rename to archive/legacy-pico-dashboard/hardware/touch.py diff --git a/pico-dashboard/main.py b/archive/legacy-pico-dashboard/main.py similarity index 100% rename from pico-dashboard/main.py rename to archive/legacy-pico-dashboard/main.py diff --git a/pico-dashboard/state/__init__.py b/archive/legacy-pico-dashboard/state/__init__.py similarity index 100% rename from pico-dashboard/state/__init__.py rename to archive/legacy-pico-dashboard/state/__init__.py diff --git a/pico-dashboard/state/app_state.py b/archive/legacy-pico-dashboard/state/app_state.py similarity index 100% rename from pico-dashboard/state/app_state.py rename to archive/legacy-pico-dashboard/state/app_state.py diff --git a/tests/test_pico_core.py b/archive/legacy-pico-dashboard/tests/test_pico_core.py similarity index 100% rename from tests/test_pico_core.py rename to archive/legacy-pico-dashboard/tests/test_pico_core.py diff --git a/pico-dashboard/ui/__init__.py b/archive/legacy-pico-dashboard/ui/__init__.py similarity index 100% rename from pico-dashboard/ui/__init__.py rename to archive/legacy-pico-dashboard/ui/__init__.py diff --git a/pico-dashboard/ui/alarm_overlay.py b/archive/legacy-pico-dashboard/ui/alarm_overlay.py similarity index 100% rename from pico-dashboard/ui/alarm_overlay.py rename to archive/legacy-pico-dashboard/ui/alarm_overlay.py diff --git a/pico-dashboard/ui/alarm_view_model.py b/archive/legacy-pico-dashboard/ui/alarm_view_model.py similarity index 100% rename from pico-dashboard/ui/alarm_view_model.py rename to archive/legacy-pico-dashboard/ui/alarm_view_model.py diff --git a/pico-dashboard/ui/battery_screen.py b/archive/legacy-pico-dashboard/ui/battery_screen.py similarity index 100% rename from pico-dashboard/ui/battery_screen.py rename to archive/legacy-pico-dashboard/ui/battery_screen.py diff --git a/pico-dashboard/ui/dashboard_screen.py b/archive/legacy-pico-dashboard/ui/dashboard_screen.py similarity index 100% rename from pico-dashboard/ui/dashboard_screen.py rename to archive/legacy-pico-dashboard/ui/dashboard_screen.py diff --git a/pico-dashboard/ui/dashboard_view_model.py b/archive/legacy-pico-dashboard/ui/dashboard_view_model.py similarity index 100% rename from pico-dashboard/ui/dashboard_view_model.py rename to archive/legacy-pico-dashboard/ui/dashboard_view_model.py diff --git a/pico-dashboard/ui/detail_view_models.py b/archive/legacy-pico-dashboard/ui/detail_view_models.py similarity index 100% rename from pico-dashboard/ui/detail_view_models.py rename to archive/legacy-pico-dashboard/ui/detail_view_models.py diff --git a/pico-dashboard/ui/power_screen.py b/archive/legacy-pico-dashboard/ui/power_screen.py similarity index 100% rename from pico-dashboard/ui/power_screen.py rename to archive/legacy-pico-dashboard/ui/power_screen.py diff --git a/pico-dashboard/ui/renderers.py b/archive/legacy-pico-dashboard/ui/renderers.py similarity index 100% rename from pico-dashboard/ui/renderers.py rename to archive/legacy-pico-dashboard/ui/renderers.py diff --git a/pico-dashboard/ui/screen_manager.py b/archive/legacy-pico-dashboard/ui/screen_manager.py similarity index 100% rename from pico-dashboard/ui/screen_manager.py rename to archive/legacy-pico-dashboard/ui/screen_manager.py diff --git a/pico-dashboard/ui/system_screen.py b/archive/legacy-pico-dashboard/ui/system_screen.py similarity index 100% rename from pico-dashboard/ui/system_screen.py rename to archive/legacy-pico-dashboard/ui/system_screen.py diff --git a/pico-dashboard/ui/temps_screen.py b/archive/legacy-pico-dashboard/ui/temps_screen.py similarity index 100% rename from pico-dashboard/ui/temps_screen.py rename to archive/legacy-pico-dashboard/ui/temps_screen.py diff --git a/pico-dashboard/ui/touch_router.py b/archive/legacy-pico-dashboard/ui/touch_router.py similarity index 100% rename from pico-dashboard/ui/touch_router.py rename to archive/legacy-pico-dashboard/ui/touch_router.py diff --git a/docs/CHATGPT_HANDOFF.md b/docs/CHATGPT_HANDOFF.md index ea88228..abcf806 100644 --- a/docs/CHATGPT_HANDOFF.md +++ b/docs/CHATGPT_HANDOFF.md @@ -156,3 +156,14 @@ Current Cargo ESP32 GPIO plan: - v1 dashboard communication is WiFi/HTTP REST only. - ESP-NOW, MQTT, UART dashboard link, and CAN-between-controllers are not v1 architecture. - Load-switching hardware is not finalized. Bosch relays, WUPP-style fused distribution, smart high-side switching, and custom PCB options remain implementation choices until explicitly selected. + +## Legacy Pico Dashboard Archive + +The old Pico dashboard implementation has been archived at `archive/legacy-pico-dashboard/`. + +Do not treat it as active firmware. It may be referenced for old HTTP/state/alarm/UI ideas, but new dashboard work should target the ESP32-S3 dashboard path. + +Default validation should use the repo-local virtual environment: + + source .venv/bin/activate + python run_tests.py diff --git a/docs/README.md b/docs/README.md index 61994aa..108089d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -35,3 +35,6 @@ Archived documents are kept for history, but the primary documents above should - `PARITY_MATRIX.md` - Command parity across USB serial, UART JSON, and HTTP API - `controller-roles.md` - Cargo ESP vs Dashboard ESP32-S3 responsibility boundaries + +- `../archive/legacy-pico-dashboard/` - Archived Pico dashboard implementation kept for reference only. +- `../firmware/esp32-s3-dashboard/` - Current ESP32-S3 dashboard firmware placeholder. diff --git a/docs/project-state.md b/docs/project-state.md index 373bbc0..b6179bd 100644 --- a/docs/project-state.md +++ b/docs/project-state.md @@ -214,3 +214,11 @@ Summary: - v1 communications: Dashboard connects to Cargo ESP AP over WiFi/HTTP REST. - Not v1 communications: ESP-NOW, MQTT, UART dashboard link, or CAN between controllers. - Load-switching hardware is still an implementation choice, not frozen architecture. + +## Pico Dashboard Archive Cleanup + +The old `pico-dashboard/` implementation has been moved to `archive/legacy-pico-dashboard/`. + +It is retained as reference material only. It is not active firmware and is no longer part of the default validation path. + +Current dashboard work should target the ESP32-S3 dashboard direction documented in `docs/dashboard-esp32s3.md` and the placeholder at `firmware/esp32-s3-dashboard/`. diff --git a/firmware/esp32-s3-dashboard/README.md b/firmware/esp32-s3-dashboard/README.md new file mode 100644 index 0000000..2f53d65 --- /dev/null +++ b/firmware/esp32-s3-dashboard/README.md @@ -0,0 +1,47 @@ +# ESP32-S3 Dashboard Firmware + +This is the placeholder for the current dashboard firmware direction. + +## Target hardware + +Current dashboard target: + +- Waveshare ESP32-S3 touchscreen display +- WiFi connection to the Cargo ESP32 access point +- HTTP/REST communication with the Cargo ESP32 API +- Future LVGL-based dashboard UI + +## Responsibilities + +The ESP32-S3 dashboard is responsible for: + +- Touchscreen UI +- Vehicle gauges +- Dashboard rendering +- Future CAN/OBD-II vehicle visualization +- Future tilt/roll/off-road screen visualization + +## Not responsible for + +The ESP32-S3 dashboard does not own: + +- Relay authority +- BMS authority +- Alarm authority +- Cargo ESP configuration storage +- Load-switching hardware control as the source of truth + +The Cargo ESP32 remains the power-system controller and source of truth. + +## v1 communication path + + Dashboard ESP32-S3 + <-> WiFi / HTTP REST + Cargo ESP32 AP + +Not v1 dashboard communication: + +- Pico UART +- ESP-NOW +- MQTT +- CAN between controllers diff --git a/pico-dashboard/README.md b/pico-dashboard/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/run_tests.py b/run_tests.py index 6d5e532..d221df2 100644 --- a/run_tests.py +++ b/run_tests.py @@ -3,26 +3,6 @@ import sys COMMANDS = [ - [sys.executable, "-m", "py_compile", - "pico-dashboard/main.py", - "pico-dashboard/app.py", - "pico-dashboard/comms/protocol.py", - "pico-dashboard/comms/uart_client.py", - "pico-dashboard/comms/http_client.py", - "pico-dashboard/comms/communication_service.py", - "pico-dashboard/state/app_state.py", - "pico-dashboard/alarms/alarm_definitions.py", - "pico-dashboard/alarms/alarm_manager.py", - "pico-dashboard/ui/screen_manager.py", - "pico-dashboard/ui/dashboard_view_model.py", - "pico-dashboard/ui/detail_view_models.py", - "pico-dashboard/ui/alarm_view_model.py", - "pico-dashboard/ui/touch_router.py", - "pico-dashboard/ui/renderers.py", - "pico-dashboard/hardware/display.py", - "pico-dashboard/hardware/touch.py", - "pico-dashboard/hardware/buzzer.py"], - [sys.executable, "-m", "pytest", "tests/test_pico_core.py"], [sys.executable, "-m", "pytest", "tests/test_http_api_contract.py"], ]