generated from CubeCraft-Creations/Tracehound
b3d4226b1ca1e7d565ff58dce22616f6e7796e9a
Complete rewrite of firmware into two dedicated boards per camera node: ESP8266 (Camera Bridge): - Connects ONLY to GoPro AP — polls status, sends over UART - Zero network switching, zero MQTT - HTTP GET /bacpac/SH for status, start/stop - JSON-per-line UART protocol to ESP32 ESP32 (MQTT Bridge): - Connects ONLY to travel router — MQTT to Pi hub - Reads status from ESP8266 over UART2 (RX16/TX17) - Auto-registration, heartbeat, command forwarding - Zero camera communication UART Protocol: JSON-per-line at 115200 8N1 ESP8266→ESP32: status/ack/pong/error ESP32→ESP8266: cmd (start_recording/stop_recording/ping) Hardware updates: - BOM now includes both boards (~4/node) - 3D case has stacked dual-board compartment - UART wire channel between board recesses - Shared 3.3V power rail for both boards
RemoteRig Central Hub
A central hub for managing remote camera rigs, designed for Raspberry Pi Zero 2 W.
Overview
RemoteRig Central Hub is the control plane for remote camera setups. It connects to camera rigs over MQTT, stores configuration and state in SQLite, and exposes a management API — all from a lightweight Go binary optimized for resource-constrained devices like the Raspberry Pi Zero 2 W.
Tech Stack
| Component | Technology |
|---|---|
| Language | Go 1.24+ |
| Database | SQLite |
| Messaging | MQTT |
| Configuration | YAML (gopkg.in/yaml.v3) |
| Target Platform | Raspberry Pi Zero 2 W (ARMv6) |
Project Structure
remote-rig/
├── cmd/
│ └── server/
│ └── main.go # Application entry point
├── internal/
│ └── db/
│ └── db.go # SQLite database initialization and schema
├── config.yaml # Application configuration
├── go.mod # Go module definition
├── go.sum # Dependency checksums
└── README.md
Prerequisites
- Go 1.24+ — Download and install
- MQTT Broker — e.g., Mosquitto (default:
localhost:1883) - Raspberry Pi Zero 2 W (or any Linux system — macOS and Windows also work for development)
- Git — for cloning the repository
Setup
1. Clone the Repository
git clone https://code.cubecraftcreations.com/CubeCraft-Creations/remote-rig.git
cd remote-rig
2. Install Go Dependencies
go mod download
3. Configure
Edit config.yaml to match your environment:
# Database file path (SQLite)
db_path: "remoterig.db"
# API key for endpoint authentication — CHANGE THIS
api_key: "your-secure-api-key-here"
# HTTP server settings
port: 8080
read_timeout: 5s
write_timeout: 10s
idle_timeout: 120s
# MQTT broker connection
mqtt:
broker: "localhost:1883"
client_id: "remoterig-hub"
# Target platform
platform:
type: "pi-zero-2w"
max_cameras: 16
Key settings to review:
| Setting | Description | Default |
|---|---|---|
api_key |
API key for authenticating requests | changeme (must change) |
port |
HTTP server listen port | 8080 |
mqtt.broker |
MQTT broker address | localhost:1883 |
mqtt.client_id |
MQTT client identifier | remoterig-hub |
platform.type |
Target platform identifier | pi-zero-2w |
platform.max_cameras |
Maximum number of camera rigs | 16 |
db_path |
SQLite database file path | remoterig.db |
read_timeout |
HTTP read timeout | 5s |
write_timeout |
HTTP write timeout | 10s |
idle_timeout |
HTTP idle connection timeout | 120s |
Running Locally
Start the hub with:
go run ./cmd/server/
You should see output similar to:
RemoteRig hub starting...
Database: remoterig.db
API key set: true
Server port: 8080
MQTT broker: localhost:1883
Platform: pi-zero-2w (max 16 cameras)
RemoteRig hub ready
Building for Raspberry Pi Zero 2 W
Cross-compile from your development machine:
GOOS=linux GOARCH=arm GOARM=6 go build -o remoterig-hub ./cmd/server/
Copy the binary and config.yaml to your Pi:
scp remoterig-hub config.yaml pi@raspberrypi:/home/pi/remoterig/
Then run on the Pi:
./remoterig-hub
Build Matrix
| Target | Command |
|---|---|
| Raspberry Pi Zero 2 W | GOOS=linux GOARCH=arm GOARM=6 go build -o remoterig-hub ./cmd/server/ |
| Local (same arch) | go build -o remoterig-hub ./cmd/server/ |
| Linux amd64 | GOOS=linux GOARCH=amd64 go build -o remoterig-hub ./cmd/server/ |
Running Tests
go test ./...
License
Proprietary — CubeCraft Creations.
Description
Languages
Go
35.3%
TypeScript
24.9%
C++
15.9%
Shell
14.4%
OpenSCAD
7%
Other
2.5%