261 lines
4.2 KiB
Markdown
261 lines
4.2 KiB
Markdown
Overland Controller
|
|
|
|
A modular ESP32 and Raspberry Pi Pico based monitoring and control system for overland vehicles, campers, trailers, van builds, and mobile power systems.
|
|
|
|
The project uses a distributed architecture consisting of:
|
|
|
|
* An ESP32 controller mounted near the battery and electrical system
|
|
* A Raspberry Pi Pico 2 W dashboard mounted in the vehicle cabin
|
|
* Local WiFi communication
|
|
* Offline-first operation
|
|
* Expandable sensor and relay support
|
|
* Open JSON APIs for future integrations
|
|
|
|
⸻
|
|
|
|
Project Goals
|
|
|
|
The goal of Overland Controller is to provide a self-hosted alternative to commercial vehicle monitoring systems.
|
|
|
|
The platform is designed to monitor and control:
|
|
|
|
* House battery systems
|
|
* Temperature sensors
|
|
* Auxiliary relays
|
|
* Vehicle telemetry
|
|
* Overland accessories
|
|
* Future automation systems
|
|
|
|
The system should be:
|
|
|
|
* Local-first
|
|
* Cloud independent
|
|
* Vehicle independent
|
|
* Easy to troubleshoot
|
|
* Easy to expand
|
|
|
|
⸻
|
|
|
|
Current Architecture
|
|
|
|
ESP32 Controller
|
|
|
|
The ESP32 acts as the primary control and monitoring node.
|
|
|
|
Current responsibilities:
|
|
|
|
* JBD/Xiaoxiang BMS monitoring
|
|
* DS18B20 temperature monitoring
|
|
* Relay control
|
|
* Configuration management
|
|
* Local web API
|
|
* WiFi Access Point
|
|
* Dashboard communications
|
|
* System status reporting
|
|
|
|
⸻
|
|
|
|
Raspberry Pi Pico Dashboard
|
|
|
|
The Pico dashboard acts as the user interface.
|
|
|
|
Planned responsibilities:
|
|
|
|
* Touchscreen dashboard
|
|
* Relay control
|
|
* Battery monitoring display
|
|
* Temperature monitoring display
|
|
* Vehicle status display
|
|
* Configuration interface
|
|
* Alarm notifications
|
|
|
|
⸻
|
|
|
|
Current Features
|
|
|
|
Battery Monitoring
|
|
|
|
Supported:
|
|
|
|
* JBD / Xiaoxiang Bluetooth BMS
|
|
|
|
Available telemetry:
|
|
|
|
* State of charge
|
|
* Voltage
|
|
* Current
|
|
* Remaining capacity
|
|
* Total capacity
|
|
* Runtime estimates
|
|
* Temperature
|
|
* Cycle count
|
|
* Cell voltages
|
|
* Cell imbalance
|
|
* Cell count
|
|
|
|
⸻
|
|
|
|
Temperature Monitoring
|
|
|
|
Supported:
|
|
|
|
* DS18B20 OneWire temperature sensors
|
|
|
|
Features:
|
|
|
|
* Up to 8 sensors
|
|
* User-configurable names
|
|
* Online/offline detection
|
|
* Sensor health reporting
|
|
* JSON API reporting
|
|
|
|
⸻
|
|
|
|
Relay Control
|
|
|
|
Features:
|
|
|
|
* Multiple relay outputs
|
|
* User-configurable names
|
|
* API control
|
|
* Serial console control
|
|
* Dashboard control (planned)
|
|
|
|
Recommended usage:
|
|
|
|
* Fridge power relays
|
|
* Starlink power relays
|
|
* Lighting relays
|
|
* Inverter enable relays
|
|
* Accessory relays
|
|
|
|
The ESP32 relay outputs are intended to drive automotive relays rather than directly power large loads.
|
|
|
|
⸻
|
|
|
|
Configuration System
|
|
|
|
Configuration is stored locally and survives reboot.
|
|
|
|
Configurable items include:
|
|
|
|
Device
|
|
|
|
* Device name
|
|
|
|
Relays
|
|
|
|
* Relay name
|
|
* GPIO assignment
|
|
* Enabled state
|
|
|
|
Temperature Sensors
|
|
|
|
* Sensor name
|
|
* Sensor address
|
|
* Enabled state
|
|
|
|
BMS
|
|
|
|
* BMS name
|
|
* Bluetooth address
|
|
* Address type
|
|
|
|
⸻
|
|
|
|
Communication Interfaces
|
|
|
|
Serial Console
|
|
|
|
Used for:
|
|
|
|
* Initial setup
|
|
* Troubleshooting
|
|
* Configuration changes
|
|
* BLE discovery
|
|
* Diagnostic logging
|
|
|
|
See SERIAL_COMMANDS.md for details.
|
|
|
|
⸻
|
|
|
|
HTTP API
|
|
|
|
Provides:
|
|
|
|
* Status reporting
|
|
* Configuration management
|
|
* Relay control
|
|
* Dashboard integration
|
|
|
|
See API.md for details.
|
|
|
|
⸻
|
|
|
|
Current Development Status
|
|
|
|
Completed
|
|
|
|
* Configuration storage
|
|
* Relay control
|
|
* JSON status API
|
|
* BLE BMS integration
|
|
* BMS setup workflow
|
|
* DS18B20 framework
|
|
* Access Point mode
|
|
* Web server
|
|
* Dashboard communications framework
|
|
* Generic naming architecture
|
|
|
|
In Progress
|
|
|
|
* Dashboard software
|
|
* Temperature sensor assignment workflow
|
|
* Expanded configuration API
|
|
* Documentation cleanup
|
|
|
|
Planned
|
|
|
|
* Pico touchscreen dashboard
|
|
* OBD-II integration
|
|
* GPS integration
|
|
* MQTT support
|
|
* Home Assistant integration
|
|
* Historical data logging
|
|
* Graphing
|
|
* Alerting system
|
|
* OTA updates
|
|
* Multi-controller support
|
|
|
|
⸻
|
|
|
|
Design Philosophy
|
|
|
|
The project follows several core principles:
|
|
|
|
1. Local-first operation
|
|
2. No cloud dependency
|
|
3. Generic hardware naming
|
|
4. Open interfaces
|
|
5. Modular architecture
|
|
6. Expandable hardware support
|
|
7. Easy field troubleshooting
|
|
8. Vehicle-independent deployment
|
|
|
|
⸻
|
|
|
|
Documentation
|
|
|
|
* README.md — Project overview
|
|
* API.md — HTTP API documentation
|
|
* SERIAL_COMMANDS.md — Serial console commands
|
|
* HARDWARE.md — Hardware overview
|
|
* ARCHITECTURE.md — System architecture
|
|
* CHANGELOG.md — Project history
|
|
|
|
⸻
|
|
|
|
License
|
|
|
|
Private project currently under active development.
|