Install
openclaw skills install ratgdo32-discoClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
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).
openclaw skills install ratgdo32-discoControl a ratgdo32 disco (HomeKit firmware) garage door opener via its local REST API.
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.).
Set the RATGDO_HOST environment variable to your device's IP or mDNS hostname:
export RATGDO_HOST="192.168.1.XXX" # or your-device.local
If 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 devices
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>/ |
| 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 |
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
}
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 |
garageObstructed is true. Report the obstruction and stop.garageLockState=0.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-remotes
The helper script includes safety checks: it verifies obstruction status before closing and confirms current state before toggling.
Garage-Door-XXXXXX.local where XXXXXX is derived from the MAC address.