ratgdo32 disco — Garage Door Controller
name: ratgdo32-disco
by bolander72 · published 2026-03-22
$ claw add gh:bolander72/bolander72-ratgdo32-disco---
name: ratgdo32-disco
description: Control a ratgdo32 disco garage door opener via its local web API. Use when the user asks to open/close the garage, check garage status, toggle the garage light, check if a car is parked, enable/disable remotes, or anything involving the garage door. Supports door control, light, obstruction detection, vehicle presence (laser sensor), parking assist, motion, and remote lockout. Uses local network trust model (LAN-only, no internet exposure).
---
# ratgdo32 disco — Garage Door Controller
Control a ratgdo32 disco (HomeKit firmware) garage door opener via its local REST API.
Security Model
The ratgdo32 disco uses a **local network trust model**. The device's web API is only accessible from your LAN — it does not expose any ports to the internet and has no cloud dependency.
**Your responsibilities:**
This is the same trust model used by most local smart home devices (Hue bridges, Shelly relays, ESPHome, etc.).
Setup
Set the `RATGDO_HOST` environment variable to your device's IP or mDNS hostname:
export RATGDO_HOST="192.168.1.XXX" # or your-device.localIf unset, the helper script defaults to `192.168.1.XXX` — you must update it.
Find your device IP via your router's DHCP table, or use mDNS:
dns-sd -B _hap._tcp # Browse HomeKit devicesDevice Info
Configure these for your setup:
| Field | How to Find |
|-------|-------------|
| **IP** | Router DHCP table or mDNS browse |
| **mDNS** | Usually `Garage-Door-XXXXXX.local` (based on MAC) |
| **MAC** | Printed on the ratgdo32 board or in your router's client list |
| **Protocol** | Check your garage opener's learn button color (yellow = Security+ 2.0, purple = Security+ 1.0) |
| **Web UI** | `http://<your-ip>/` |
Quick Reference
| Action | Command |
|--------|---------|
| Get full status | `curl -s http://$RATGDO_HOST/status.json` |
| Open door | `curl -s -X POST -F "garageDoorState=1" http://$RATGDO_HOST/setgdo` |
| Close door | `curl -s -X POST -F "garageDoorState=0" http://$RATGDO_HOST/setgdo` |
| Light on | `curl -s -X POST -F "garageLightOn=1" http://$RATGDO_HOST/setgdo` |
| Light off | `curl -s -X POST -F "garageLightOn=0" http://$RATGDO_HOST/setgdo` |
| Disable remotes | `curl -s -X POST -F "garageLockState=1" http://$RATGDO_HOST/setgdo` |
| Enable remotes | `curl -s -X POST -F "garageLockState=0" http://$RATGDO_HOST/setgdo` |
Status API
`GET http://<host>/status.json` returns JSON:
{
"garageDoorState": "open|closed|opening|closing|stopped",
"garageLightOn": true|false,
"garageObstructed": true|false,
"garageLockState": "locked|unlocked",
"vehicleState": "present|absent|arriving|departing",
"vehicleDistance": 42,
"motionDetected": true|false
}Key fields
Control API
`POST http://<host>/setgdo` with form data:
| Field | Values | Effect |
|-------|--------|--------|
| `garageDoorState` | `1` = open, `0` = close | Opens or closes the door |
| `garageLightOn` | `1` = on, `0` = off | Toggles ceiling light |
| `garageLockState` | `1` = lock, `0` = unlock | Disables/enables physical remotes |
Safety Rules
1. **Never close the door if `garageObstructed` is true.** Report the obstruction and stop.
2. **Always check status before opening/closing** to confirm current state and avoid unnecessary operations.
3. **Confirm with the user before disabling remotes** — this temporarily locks out all physical remotes (wall button, car remotes). Re-enable with `garageLockState=0`.
Helper Script
Use `scripts/garage.sh` for common operations:
# Status (human-readable)
bash scripts/garage.sh status
# Control
bash scripts/garage.sh open
bash scripts/garage.sh close
bash scripts/garage.sh light-on
bash scripts/garage.sh light-off
bash scripts/garage.sh lock-remotes
bash scripts/garage.sh unlock-remotesThe helper script includes safety checks: it verifies obstruction status before closing and confirms current state before toggling.
Compatibility
Notes
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...