# Project State Last Updated: June 2026 ## Project Name Overland Controller ## Current Status Phase 1 is functional. The ESP32 controller can: - Host a local WiFi access point - Serve a web interface - Expose an HTTP API - Read JBD/Xiaoxiang BLE BMS data - Persist configuration - Factory reset configuration - Control relay outputs - Report relay status - Report BMS status - Report temperature sensor status - Communicate over UART - Support BLE setup mode for BMS discovery The Pico dashboard hardware has not yet been brought online. --- ## Hardware Owned ### ESP32 Controller Owned and operational. Current hardware: - ESP32 relay board - 2 relay outputs ### Dashboard Owned but not yet integrated. Current hardware: - Raspberry Pi Pico 2 W Potential display: - 3.5" touchscreen expansion board ### Vehicle Current target vehicle: - Nissan Xterra The firmware itself should remain vehicle-agnostic. --- ## BMS Status Working. Current battery: - JBD / Xiaoxiang BLE BMS Current telemetry: - SOC - Voltage - Current - Remaining Ah - Capacity - Temperature - Cycle count - Cell voltages - Cell delta Configuration is stored in persistent settings. --- ## Relay Status Working. Current relay outputs: relay_1 relay_2 Current installation-specific names: Starlink Fridge These names are configuration only. No relay names are intended to be hardcoded. --- ## Temperature Sensor Status Partially complete. Framework exists. Current status: - Configuration exists - Status reporting exists - Naming exists Not yet completed: - Physical DS18B20 integration - Sensor discovery workflow - Sensor assignment workflow Planned support: Up to 8 DS18B20 sensors. --- ## Configuration Status Persistent configuration works. Stored settings include: - Device name - Relay names - Relay enabled state - Temperature sensor names - Temperature sensor enabled state - BMS name - BMS address - BMS address type Factory reset is functional. --- ## HTTP API Status Working. Implemented: - Status endpoint - Config endpoint - Relay control - Configuration updates - Save configuration - Factory reset Documentation: See: docs/api.md --- ## UART Status Partially complete. Current UART capabilities: - Status requests - Dashboard communications - Basic command support Missing goal: UART should eventually expose every operation available through HTTP and serial. Target: UART becomes the primary dashboard integration interface. --- ## Simulator Status Working. Simulator provides: - Fake ESP32 controller - Fake Pico dashboard - Test data generation - Protocol validation Useful for development before hardware is connected. --- ## Documentation Status Primary documents: README.md HARDWARE.md docs/project-state.md docs/architecture.md docs/api.md docs/protocol.md docs/roadmap.md docs/decisions.md docs/SERIAL_COMMANDS.md Older planning/design documents may be archived later. --- ## Highest Priority Next Tasks ### Priority 1 UART parity. Goal: Anything possible through serial or HTTP should also be possible through UART. Required additions: - config_request - config_device - config_relay - config_temp - config_bms - save_config - factory_reset - enter_bms_setup - scan_ble - select_bms - exit_bms_setup ### Priority 2 DS18B20 support. Needed: - Scan sensors - Assign sensors - Save assignments ### Priority 3 Pico hardware bring-up. Needed: - UART communication - Display status screen - Relay control screen --- ## Long-Term Vision A vehicle-agnostic overland monitoring and control platform. Core principles: - Local-first - No cloud required - Generic hardware model - Generic API model - Generic UART model - Dashboard optional - Vehicle independent Target use cases: - Overland vehicles - Campers - Trailers - RV electrical systems - Mobile command systems - Off-grid battery monitoring