docs: align hardware and MQTT architecture notes
CI/CD / lint-and-typecheck (pull_request) Successful in 7s
CI/CD / test (pull_request) Successful in 10m3s
CI/CD / build (pull_request) Failing after 4m58s
CI/CD / deploy (pull_request) Has been skipped

This commit is contained in:
2026-05-22 17:08:11 -04:00
parent c5cbeabd92
commit 0e2e94a4cf
3 changed files with 58 additions and 50 deletions
+18 -18
View File
@@ -44,32 +44,32 @@ RemoteRig is a **multi-camera remote monitoring system**. It provides a camera g
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ ESP32 #1 │ │ ESP32 #N │ │ Pi Zero 2 W │
│ DHCP addr │ │ DHCP addr │ │ 10.60.1.56 │
│ │ │ │ (static IP) │
STA→GoPro AP │ │ STA→GoPro AP │ │
STA→Router │ │ STA→Router │ │ Mosquitto :1883
│ │ │ │ │ Go API :8080
│ MQTT→:1883 │ │ MQTT→:1883 │ │ React UI │
│ DHCP addr │ │ DHCP addr │ │ 10.60.1.56
STA→Router │ │ STA→Router │ │ (static IP) │
MQTT→:1883 │ │ MQTT→:1883 │ Mosquitto :1883
UART relay │ │ UART relay │ │ Go API :8080
│ │ │ │ │ React UI
└──────┬───────┘ └──────┬───────┘ │ SQLite DB │
└──────────────────┘
UARTUART └──────────────────┘
▼ ▼ │
┌──────────────┐ ┌──────────────┐ │
GoPro Hero 3 │ │ GoPro Hero 3 │ SSE /api/v1/events/stream
AP: 10.5.5.1 │ │ AP: 10.5.5.1 │ │
Wi-Fi only │ │ Wi-Fi only │ ▼
└─────────────┘ └─────────────┘ ┌──────────────────┐
│ User Device │
│ (laptop/kiosk) │
│ http://.4.10
└──────────────────┘
ESP8266 #1 │ │ ESP8266 #N │ SSE /api/v1/events/stream
STA→GoPro AP │ │ STA→GoPro AP │ │
HTTP→10.5.5.1│ │ HTTP→10.5.5.1│ ▼
└─────────────┘ └─────────────┘ ┌──────────────────┐
│ User Device │
┌──────────────┐ ┌──────────────┐ │ (laptop/kiosk) │
│ GoPro Hero 3 │ │ GoPro Hero 3 │ │ 10.60.1.56:8080
└──────────────┘ └──────────────┘ └──────────────────┘
```
**Network is fully self-contained — no internet dependency.** The travel router creates the LAN. All devices connect to it. The Pi runs all services (Mosquitto, Go API, React UI, SQLite). ESP32s bridge the GoPro's AP to the LAN via MQTT.
**Network is fully self-contained — no internet dependency.** The travel router creates the LAN. All devices connect to it. The Pi runs all services (Mosquitto, Go API, React UI, SQLite). ESP8266 boards talk to the GoPro AP over HTTP, then relay camera status/commands over UART to ESP32 boards. ESP32 boards stay on the travel-router LAN and bridge UART messages to MQTT.
### Key Architecture Decisions (revised)
- **Closed travel router network** — No venue Wi-Fi dependency. User brings their own router. All devices on `10.60.1.0/24`.
- **ESP32 dual-STA** — One STA to GoPro AP (10.5.5.1), one STA to travel router. No channel-hopping concerns on closed network.
- **ESP32 → GoPro over Wi-Fi** — Bacpac I²C route rejected (30-pin Herobus connector too complex). HTTP to GoPro AP is proven and reliable.
- **Two-board camera node** — ESP8266 handles GoPro AP/HTTP; ESP32 stays on the travel-router LAN for MQTT. This avoids ESP32 dual-STA/channel switching complexity.
- **ESP8266 → GoPro over Wi-Fi** — Bacpac I²C route rejected (30-pin Herobus connector too complex). HTTP to GoPro AP is proven and reliable.
- **UART bridge between boards** — ESP8266 reports GoPro status and receives commands over UART; ESP32 relays those messages to/from MQTT.
- **MQTT for ESP32 → Hub** — Lightweight, designed for IoT. Mosquitto on Pi. QoS 1 for status, QoS 2 for commands. Full contract: [docs/MQTT_CONTRACT.md](./docs/MQTT_CONTRACT.md)
- **SQLite over PostgreSQL** — Single-node Pi Zero 2 W deployment. WAL mode for concurrent read/write.
- **SSE over WebSocket** — Unidirectional hub → browser updates. Simpler, sufficient for status dashboard.