Add dynamic UART/BLE host connect for serve, dashboard, and WS.
Serve starts without a required port; REST/WS/UI can scan and switch transports, with BLE live ticks and UART-only OTA. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+32
-2
@@ -1,6 +1,6 @@
|
||||
# REST API
|
||||
|
||||
`go run . -port /dev/ttyUSB0 serve` starts two HTTP servers on the same UART link:
|
||||
`go run . serve` (optional `-port` / `-ble`) starts two HTTP servers on the same `managedHost` (UART or BLE):
|
||||
|
||||
| Base URL | Flag | Used by |
|
||||
|----------|------|---------|
|
||||
@@ -27,6 +27,9 @@ GET /api/v1/
|
||||
"name": "powerpod-external-api",
|
||||
"version": "1",
|
||||
"serial_port": "/dev/ttyUSB0",
|
||||
"transport": "uart",
|
||||
"endpoint": "/dev/ttyUSB0",
|
||||
"connected": true,
|
||||
"websocket": "/ws",
|
||||
"default_interval_ms": 16,
|
||||
"min_interval_ms": 1,
|
||||
@@ -110,7 +113,34 @@ WebSocket: `set_led_ring` with the same fields plus `"type":"set_led_ring"` →
|
||||
|
||||
Used by the web UI; safe for scripts that drive the same features.
|
||||
|
||||
### Live stream (host `CACHE_STATUS` poll ~16 ms)
|
||||
### Host link (UART / BLE)
|
||||
|
||||
```http
|
||||
GET /api/host
|
||||
→ {"transport":"none|uart|ble","endpoint":"…","connected":false,"ble_name":""}
|
||||
|
||||
GET /api/serial/ports
|
||||
→ {"ports":["/dev/ttyUSB0",…]}
|
||||
|
||||
POST /api/host/connect
|
||||
Content-Type: application/json
|
||||
{"transport":"uart","port":"/dev/ttyUSB0"}
|
||||
{"transport":"ble","address":"AA:BB:…","name":"Powerpod"}
|
||||
|
||||
POST /api/host/disconnect
|
||||
|
||||
POST /api/ble/scan
|
||||
{"timeout_s":5,"name_filter":"Powerpod"}
|
||||
→ {"devices":[{"address":"…","name":"Powerpod","rssi":-55}]}
|
||||
```
|
||||
|
||||
`name_filter` is optional substring match (case-insensitive); omit to list all LE advertisements. Active BLE is disconnected before scan (BlueZ adapter).
|
||||
|
||||
Dashboard WebSocket state includes `host_connected`, `host_transport`, `host_endpoint` (aliases `uart_connected` / `serial_port` kept).
|
||||
|
||||
**OTA** (`POST /api/ota`) returns **400** unless `transport==uart` and connected.
|
||||
|
||||
### Live stream (host `CACHE_STATUS` poll ~16 ms; BLE uses `BLE_STREAM_TICK`)
|
||||
|
||||
```http
|
||||
GET /api/live-stream
|
||||
|
||||
Reference in New Issue
Block a user