From 861aedd6d82a168bb1bd2cd05f9d8b6e6bfb6e76 Mon Sep 17 00:00:00 2001 From: Joshua Date: Thu, 21 May 2026 17:47:29 +0000 Subject: [PATCH] CUB-208: Add README with project overview and setup instructions --- README.md | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/README.md b/README.md index e69de29..93d849b 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,156 @@ +# 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](https://go.dev/dl/) +- **MQTT Broker** — e.g., [Mosquitto](https://mosquitto.org/) (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 + +```bash +git clone https://code.cubecraftcreations.com/CubeCraft-Creations/remote-rig.git +cd remote-rig +``` + +### 2. Install Go Dependencies + +```bash +go mod download +``` + +### 3. Configure + +Edit `config.yaml` to match your environment: + +```yaml +# 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: + +```bash +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: + +```bash +GOOS=linux GOARCH=arm GOARM=6 go build -o remoterig-hub ./cmd/server/ +``` + +Copy the binary and `config.yaml` to your Pi: + +```bash +scp remoterig-hub config.yaml pi@raspberrypi:/home/pi/remoterig/ +``` + +Then run on the Pi: + +```bash +./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 + +```bash +go test ./... +``` + +## License + +Proprietary — CubeCraft Creations.