feat: add v3 hardware case and update hub network
CI/CD / lint-and-typecheck (pull_request) Failing after 14m12s
CI/CD / test (pull_request) Has been cancelled
CI/CD / build (pull_request) Has been cancelled
CI/CD / deploy (pull_request) Has been cancelled

This commit is contained in:
2026-05-22 16:58:11 -04:00
parent f4bf37d6a3
commit c5cbeabd92
17 changed files with 314 additions and 36 deletions
+8 -8
View File
@@ -7,7 +7,7 @@
```
┌──────────────────────────────────┐
│ Travel Router (192.168.4.1) │
│ Travel Router (10.60.1.1) │
│ DHCP: .100-.200 │
└──────┬──────────┬──────────┬──────┘
│ │ │
@@ -15,7 +15,7 @@
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ ESP32 #1 │ │ ESP32 #2 │ │ Pi Zero 2 W │
│ 192.168.4.101│ │ 192.168.4.102│ │ 192.168.4.10
│ 10.60.1.101│ │ 10.60.1.102│ │ 10.60.1.56
│ │ │ │ │ │
│ STA→GoPro AP │ │ STA→GoPro AP │ │ Mosquitto │
│ STA→Router │ │ STA→Router │ │ Go backend │
@@ -28,14 +28,14 @@
└──────────────┘ └──────────────┘
```
- **Travel router:** Self-contained, no internet. DHCP pool: `192.168.4.100-200`
- **Pi Zero 2 W:** Static IP `192.168.4.10`. Runs Mosquitto (port 1883), Go backend (port 8080), serves React UI
- **Travel router:** Self-contained, no internet. Gateway `10.60.1.1`. DHCP pool: `10.60.1.100-200`
- **Pi Zero 2 W:** Static IP `10.60.1.56`. Runs Mosquitto (port 1883), Go backend (port 8080), serves React UI
- **ESP32s:** DHCP from router. Each has dual STA: one to GoPro AP, one to router
- **User device:** Connects to router, opens `http://192.168.4.10:8080` for dashboard
- **User device:** Connects to router, opens `http://10.60.1.56:8080` for dashboard
## MQTT Broker
- **Host:** `192.168.4.10` (Pi Zero 2 W)
- **Host:** `10.60.1.56` (Pi Zero 2 W)
- **Port:** `1883` (default MQTT, no TLS — closed network)
- **Auth:** None (closed network, no external access)
- **Client ID format:** `remoterig-<esp32_mac_last6>` (e.g., `remoterig-a1b2c3`)
@@ -217,7 +217,7 @@ Hub health status broadcast.
ESP32 boots
├── Connects to travel router Wi-Fi
├── Connects to MQTT broker (192.168.4.10:1883)
├── Connects to MQTT broker (10.60.1.56:1883)
├── Publishes announce (retained) on cameras/<id>/announce
@@ -268,6 +268,6 @@ When ESP32 loses connection to travel router:
## Open Questions
1. **NTP/time sync:** How do ESP32s get accurate time without internet? Options: (a) Pi runs NTP server, (b) ESP32 queries Pi's HTTP /api/v1/time endpoint, (c) GPS module. **Recommendation:** Pi runs NTPd, ESP32s use SNTP from `192.168.4.10`.
1. **NTP/time sync:** How do ESP32s get accurate time without internet? Options: (a) Pi runs NTP server, (b) ESP32 queries Pi's HTTP /api/v1/time endpoint, (c) GPS module. **Recommendation:** Pi runs NTPd, ESP32s use SNTP from `10.60.1.56`.
2. **Camera naming:** Should `friendly_name` be configurable from dashboard after auto-registration? **Recommendation:** Yes — allow rename via UI, stored in cameras table.
3. **Firmware OTA:** Should ESP32 firmware updates be possible over this network? **Recommendation:** Yes but out of scope for MVP.