Robomates HQ

Web-based control center for managing and playing games with Robomates robots. Runs in any Chromium browser — no apps to install, no drivers.

View on GitHub →

How It Works

HQ Main Page

HQ uses the Web Bluetooth API to connect directly from your browser to a repeater or robot.

📶

Connect via Bluetooth

Click Connect — the browser scans for nearby RBM_ devices. Up to 6 simultaneous connections.

📻

Repeater Bridge

The repeater receives BLE commands and broadcasts them to all robots over 869 MHz RF — ~50 m range.

📊

Live Telemetry

Robots send battery, temperature, position, and fall status every 750 ms via PING messages.

🔗

Direct Connection

Any robot can connect directly to HQ via BLE — no repeater needed for small setups.

Games

⚔️ Push Wars
Push Wars

Last robot standing wins. Robots physically push each other off an arena surface.

Players2–16
EliminationAutomatic fall detection
RatingElo, K=32, start 1500
FeaturesLeaderboard, match history, presentation mode
🧟 Zombie Tag
Zombie Tag

Zombies spread infection through proximity. Survivors must evade until the timer runs out.

Players2–16, 1–8 starting zombies
InfectionRSSI-based proximity (CC1101)
Duration10–300 seconds
Win conditionAll infected / timer expires
🎨 Sandbox
Sandbox

Free play mode for manual control, testing, and demos.

LEDsPer-LED color pickers (12 LEDs)
ControlsSpeed + torque sliders (16 levels)
TargetingBroadcast or single-robot
Smart sendSkips if state matches

Developer Tools

BLE Dev

BLE Dev

Advanced multi-tab developer interface:

TabPurpose
SubprogramsVisual block editor for autonomous robot behaviors, bytecode upload
ControllerVirtual gamepad with joystick and keyboard mapping
MelodyBuzzer melody composer with piano keyboard and presets
MappingPer-controller button/axis mapping, robot calibration
CryptoECDSA P-256 key retrieval, signing, and verification

Serial Dev

USB serial interface for robot configuration:

  • Read firmware version and robot name
  • Change robot name (3–10 alphanumeric characters)
  • Flash firmware updates directly from the browser via esptool-js

Admin

Database management (protected by a separate admin password):

  • Register and manage robot public keys (ECDSA P-256)
  • View and edit robot names and Elo ratings
  • Monitor database connection status

Smart State Reconciliation

HQ minimizes RF bandwidth with an implicit ACK system:

1Every robot PING contains its current LED and coefficient state
2Before sending UPDATE_STATUS, HQ compares desired vs. reported state
3If they match, the send is skipped — saving RF bandwidth
4Periodic full refresh every 5 s ensures eventual convergence
5After applying a command, robots fire an extra PING within 100 ms

Tech Stack

BackendFlask 3.0 (Python)
ServerGunicorn
DatabasePostgreSQL
FrontendVanilla JS (no frameworks)
BLEWeb Bluetooth API
DeploymentDocker + Docker Compose

Self-Hosting

git clone https://github.com/user/robomates-web-hq.git cd robomates-web-hq export SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))") export ADMIN_PASSWORD="your-admin-password" export POSTGRES_URL="postgresql://user:pass@host:port/db" docker compose up -d

HQ will be available at http://localhost:6301