Files
overland-controller/docs/project-state.md
T

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