docs: define cargo esp api contract
This commit is contained in:
@@ -263,3 +263,17 @@ Current responsibility split:
|
|||||||
- Dashboard ESP32-S3 should not wire directly to cargo-area DS18B20 sensors for v1.
|
- Dashboard ESP32-S3 should not wire directly to cargo-area DS18B20 sensors for v1.
|
||||||
|
|
||||||
This means future dashboard work should display existing Cargo ESP temperature telemetry rather than reimplementing temperature sensing on the dashboard.
|
This means future dashboard work should display existing Cargo ESP temperature telemetry rather than reimplementing temperature sensing on the dashboard.
|
||||||
|
|
||||||
|
## Cargo ESP API Contract
|
||||||
|
|
||||||
|
The Cargo ESP API contract is documented in `docs/cargo-api-contract.md`.
|
||||||
|
|
||||||
|
The Cargo ESP32 is the source of truth for:
|
||||||
|
|
||||||
|
- Relay/output state
|
||||||
|
- DS18B20 temperature readings
|
||||||
|
- BMS telemetry
|
||||||
|
- Alarm/fault state
|
||||||
|
- Local configuration
|
||||||
|
|
||||||
|
The ESP32-S3 dashboard should consume Cargo ESP API data over WiFi/HTTP REST instead of directly owning cargo sensors or relay state.
|
||||||
|
|||||||
@@ -173,3 +173,9 @@ Default validation should use the repo-local virtual environment:
|
|||||||
DS18B20 temperature support is already implemented in the Cargo ESP/WebUI/API path.
|
DS18B20 temperature support is already implemented in the Cargo ESP/WebUI/API path.
|
||||||
|
|
||||||
Do not suggest adding DS18B20 support as if it is missing. Future work should preserve existing Cargo ESP temperature ownership and expose/display that telemetry through the API and ESP32-S3 dashboard.
|
Do not suggest adding DS18B20 support as if it is missing. Future work should preserve existing Cargo ESP temperature ownership and expose/display that telemetry through the API and ESP32-S3 dashboard.
|
||||||
|
|
||||||
|
## Cargo API Contract Guardrail
|
||||||
|
|
||||||
|
The Cargo ESP API contract is documented in `docs/cargo-api-contract.md`.
|
||||||
|
|
||||||
|
Before making dashboard firmware changes, inspect the current API tests and this contract. Do not move relay, BMS, DS18B20, alarm, or configuration ownership from the Cargo ESP to the dashboard.
|
||||||
|
|||||||
@@ -41,3 +41,5 @@ Archived documents are kept for history, but the primary documents above should
|
|||||||
|
|
||||||
- `repo-cleanup-audit.md` - Active repo audit for stale Pico/UART dashboard references and DS18B20 documentation status.
|
- `repo-cleanup-audit.md` - Active repo audit for stale Pico/UART dashboard references and DS18B20 documentation status.
|
||||||
- `API.md` - High-level API notes and telemetry ownership.
|
- `API.md` - High-level API notes and telemetry ownership.
|
||||||
|
|
||||||
|
- `cargo-api-contract.md` - Cargo ESP API ownership and expected API areas for WebUI/dashboard clients.
|
||||||
|
|||||||
@@ -0,0 +1,124 @@
|
|||||||
|
# Cargo ESP API Contract
|
||||||
|
|
||||||
|
The Cargo ESP32 is the source of truth for power-system state.
|
||||||
|
|
||||||
|
The WebUI, ESP32-S3 dashboard, and future clients should consume this API rather than reading sensors or relay state directly.
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
Cargo ESP32 owns:
|
||||||
|
|
||||||
|
- Relay/output state
|
||||||
|
- DS18B20 temperature readings
|
||||||
|
- BMS telemetry
|
||||||
|
- Alarm/fault state
|
||||||
|
- Local configuration
|
||||||
|
- WebUI/API service
|
||||||
|
|
||||||
|
Dashboard ESP32-S3 consumes:
|
||||||
|
|
||||||
|
- Status
|
||||||
|
- Battery/BMS telemetry
|
||||||
|
- Temperature telemetry
|
||||||
|
- Relay/output state
|
||||||
|
- Alarm/fault state
|
||||||
|
|
||||||
|
The dashboard may request relay changes through the API, but the Cargo ESP remains authoritative.
|
||||||
|
|
||||||
|
## Expected API Areas
|
||||||
|
|
||||||
|
### System Status
|
||||||
|
|
||||||
|
Used by clients to determine whether the Cargo ESP is online and healthy.
|
||||||
|
|
||||||
|
Expected data:
|
||||||
|
|
||||||
|
- Device name
|
||||||
|
- Firmware version
|
||||||
|
- Uptime
|
||||||
|
- WiFi/AP status
|
||||||
|
- API version
|
||||||
|
- Alarm/fault summary
|
||||||
|
|
||||||
|
### Battery / BMS
|
||||||
|
|
||||||
|
Used for house battery display.
|
||||||
|
|
||||||
|
Expected data:
|
||||||
|
|
||||||
|
- Voltage
|
||||||
|
- Current
|
||||||
|
- State of charge
|
||||||
|
- Charging/discharging state
|
||||||
|
- Cell data when available
|
||||||
|
- BMS online/offline status
|
||||||
|
- Protection/fault state
|
||||||
|
|
||||||
|
### Temperatures
|
||||||
|
|
||||||
|
DS18B20 support is already implemented in the Cargo ESP/WebUI/API path.
|
||||||
|
|
||||||
|
Expected data:
|
||||||
|
|
||||||
|
- Sensor ID
|
||||||
|
- Display name
|
||||||
|
- Enabled state
|
||||||
|
- Online/offline state
|
||||||
|
- Temperature value
|
||||||
|
- Temperature unit
|
||||||
|
- Role/location, such as fridge, cargo, ambient, or spare
|
||||||
|
|
||||||
|
The ESP32-S3 dashboard should display this data from the Cargo ESP API. It should not directly own cargo/fridge DS18B20 sensor wiring for v1.
|
||||||
|
|
||||||
|
### Relays / Outputs
|
||||||
|
|
||||||
|
Used for fridge, Starlink, lights, spare, and future switched outputs.
|
||||||
|
|
||||||
|
Expected data:
|
||||||
|
|
||||||
|
- Output ID
|
||||||
|
- Display name
|
||||||
|
- Enabled state
|
||||||
|
- Current state
|
||||||
|
- Requested state
|
||||||
|
- Fault/lockout state when available
|
||||||
|
- Optional output type or role
|
||||||
|
|
||||||
|
Relay/output writes should go through the Cargo ESP API.
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
Configuration should remain owned by the Cargo ESP.
|
||||||
|
|
||||||
|
Expected future areas:
|
||||||
|
|
||||||
|
- Output names
|
||||||
|
- Output enabled/disabled state
|
||||||
|
- Temperature sensor names
|
||||||
|
- Temperature sensor roles
|
||||||
|
- Alarm thresholds
|
||||||
|
- Network/AP settings
|
||||||
|
- OTA settings
|
||||||
|
|
||||||
|
## v1 Client Communication
|
||||||
|
|
||||||
|
Current v1 client path:
|
||||||
|
|
||||||
|
ESP32-S3 Dashboard
|
||||||
|
<-> WiFi / HTTP REST
|
||||||
|
Cargo ESP32 AP
|
||||||
|
|
||||||
|
Not v1 API transport:
|
||||||
|
|
||||||
|
- ESP-NOW
|
||||||
|
- MQTT
|
||||||
|
- UART dashboard link
|
||||||
|
- CAN between controllers
|
||||||
|
|
||||||
|
## Compatibility Rule
|
||||||
|
|
||||||
|
When possible, future changes should add fields rather than rename or remove existing fields.
|
||||||
|
|
||||||
|
Dashboard firmware should tolerate unknown fields.
|
||||||
|
|
||||||
|
Cargo ESP firmware should preserve stable field names once dashboard implementation begins.
|
||||||
@@ -189,3 +189,17 @@ It may display state and request changes through the Cargo ESP HTTP API, but the
|
|||||||
The ESP32-S3 dashboard should display temperature data from the Cargo ESP API.
|
The ESP32-S3 dashboard should display temperature data from the Cargo ESP API.
|
||||||
|
|
||||||
DS18B20 sensors are already implemented on the Cargo ESP/WebUI/API side. For v1, the dashboard should not directly own cargo/fridge DS18B20 wiring or sensor reads.
|
DS18B20 sensors are already implemented on the Cargo ESP/WebUI/API side. For v1, the dashboard should not directly own cargo/fridge DS18B20 wiring or sensor reads.
|
||||||
|
|
||||||
|
## API Dependency
|
||||||
|
|
||||||
|
The ESP32-S3 dashboard depends on the Cargo ESP API contract documented in `docs/cargo-api-contract.md`.
|
||||||
|
|
||||||
|
For v1, the dashboard should consume:
|
||||||
|
|
||||||
|
- System status
|
||||||
|
- Battery/BMS telemetry
|
||||||
|
- DS18B20 temperature telemetry
|
||||||
|
- Relay/output state
|
||||||
|
- Alarm/fault state
|
||||||
|
|
||||||
|
The dashboard may request output changes through the Cargo ESP API, but the Cargo ESP remains the source of truth.
|
||||||
|
|||||||
@@ -240,3 +240,9 @@ Future work should focus on:
|
|||||||
- Keeping the API contract accurate
|
- Keeping the API contract accurate
|
||||||
- Displaying existing temperature telemetry on the ESP32-S3 dashboard
|
- Displaying existing temperature telemetry on the ESP32-S3 dashboard
|
||||||
- Preserving Cargo ESP ownership of cargo/fridge temperature sensors
|
- Preserving Cargo ESP ownership of cargo/fridge temperature sensors
|
||||||
|
|
||||||
|
## Cargo API Contract
|
||||||
|
|
||||||
|
The current Cargo ESP API ownership and expected endpoint areas are documented in `docs/cargo-api-contract.md`.
|
||||||
|
|
||||||
|
This contract should guide future ESP32-S3 dashboard work so dashboard firmware targets stable Cargo ESP data instead of duplicating sensor or relay ownership.
|
||||||
|
|||||||
Reference in New Issue
Block a user