3.9 KiB
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