Joshua King cefb7ef52c
Build (Dev) / build (push) Failing after 10s
CI/CD / lint-and-typecheck (push) Successful in 8s
CI/CD / test (push) Successful in 8s
CI/CD / build (push) Failing after 9s
CI/CD / deploy (push) Has been skipped
firmware: battery calibration + full RGB STAT LED (C6)
Battery calibration:
- two-point linear cal (bat_raw_min->0%, bat_raw_max->100%) of the
  GoPro offset-57 raw byte, persisted in SPIFFS config
- publish battery_pct in MQTT status only when calibrated (omit
  otherwise, per MQTT_CONTRACT); OLED shows % when calibrated, raw
  until then
- set_battery_cal MQTT command: explicit {raw_min,raw_max} or
  capture-current {point:"full"|"empty"} for field calibration

RGB STAT LED:
- drive D0/D1/D2 (R/G/B) with health colors instead of the single
  green channel: red=offline, magenta=wifi-but-no-hub,
  yellow=hub-but-no-camera, green=healthy; blue during boot
- RGB_COMMON_ANODE polarity flag; this module is common-anode

Verified on hardware: boots, OLED ok, RGB shows correct colors
(blue->red on the bench).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 18:33:36 -04:00

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.

S
Description
No description provided
Readme 24 MiB
Languages
Go 35.3%
TypeScript 24.9%
C++ 15.9%
Shell 14.4%
OpenSCAD 7%
Other 2.5%