Install
openclaw skills install asus-routerMonitor and manage Asus routers running AsusWRT/AsusWRT-Merlin firmware. Supports status checks, client/top-talker lists, presence detection, AiMesh topology, WAN/port/VPN/firmware diagnostics, raw AsusData dumps, and safe reboots. Works with ZenWiFi, RT/GT/ExpertWiFi, Wi-Fi 6/6E/7, and other AsusWRT-based routers.
openclaw skills install asus-routerManage Asus routers via the asusrouter Python library. Works with any router running stock AsusWRT, AsusWRT-Merlin, or Merlin/GNUton firmware that exposes the local AsusWRT web API.
pip install asusrouter aiohttp
Copy config.example.yaml to config.yaml and fill in your router details:
cp skills/asus-router/config.example.yaml skills/asus-router/config.yaml
Edit config.yaml with your router's IP, username, and password.
python3 skills/asus-router/router.py status
Any Asus router with the AsusWRT web interface:
All commands use router.py. Activate your venv first if using one.
python3 router.py status # WAN, CPU, RAM, mesh nodes, client count
python3 router.py status --json # Machine-readable output
python3 router.py clients # All devices
python3 router.py clients --online # Online only
python3 router.py clients --filter "iphone" # Search by name/IP/MAC
python3 router.py clients --sort speed --limit 10 # Current top talkers
python3 router.py clients --sort signal # Weak/strong Wi-Fi clients
python3 router.py clients --json # JSON output
python3 router.py who
Checks for known devices defined in config.yaml to determine who's home.
python3 router.py wan # IP, gateway, DNS, lease, dual-WAN
python3 router.py wan --json
python3 router.py mesh # Which clients connect to which node
python3 router.py mesh --json
python3 router.py find "samsung"
python3 router.py find "192.168.1.100"
python3 router.py find "AA:BB:CC:DD:EE:FF"
python3 router.py ping
python3 router.py firmware # Firmware, system info, release-note data when exposed
python3 router.py ports # Ethernet port/link status
python3 router.py vpn # OpenVPN, WireGuard, VPN client status as JSON
python3 router.py health # Alert-friendly WAN/CPU/RAM/firmware/ports/VPN bundle
python3 router.py raw firmware # Dump any AsusData dataset by name
raw is intentionally included so the skill keeps working as AsusWRT 5 / ExpertWiFi / Guest Network Pro / VLAN-era firmware exposes new datasets through asusrouter before this wrapper has a pretty command for them.
Pings targets defined in config.yaml (default: gateway + Cloudflare + Google).
python3 router.py reboot --confirm
⚠️ Requires --confirm flag. Causes 2-3 min downtime.
status — check WAN link stateping — check latency to external IPswan — check DHCP lease and DNSclients --online --json — check rx_speed/tx_speed fields
who — checks for devices listed in config.yaml under known_devices
mesh — check client distribution across nodesstatus — check CPU/RAM (high CPU = overloaded)find <device> — check signal strength (rssi)All settings live in config.yaml. See config.example.yaml for the full template.
Key settings:
router.host — Router IP addressrouter.username — Admin usernamerouter.password — Admin passwordrouter.ssl — Use HTTPS (default: false)router.port — Optional web UI/API port, commonly 8443 for HTTPS local accessknown_devices — Devices for presence detectionping_targets — Custom ping targets for latency checksFor modern routers, prefer HTTPS local access when stable: enable it in AsusWRT under Administration → System → Local Access Config → Authentication Method, then set ssl: true and the configured port.
Add --json to any command for machine-readable output. Useful for cron jobs, heartbeat checks, and alerting.
For persistent monitoring, also install ha-asusrouter via HACS:
https://github.com/Vaskivskyi/ha-asusrouter