A Home Assistant custom integration to connect to Cudy routers (WR3600, WR6500) on the local network, read configuration/status, and expose safe actions like reboot.
Status:
Version: 0.1.0
Repository: https://github.com/restrive/cudy-scanner
Note: Core features implemented and tested with explorer client. Home Assistant integration needs validation testing with real hardware.
- ✅ Local-only connectivity to Cudy router admin UI/API (LuCI/OpenWrt-based)
- ✅ Device discovery via MAC address/serial number extraction
- ✅ Stable device identity - survives IP changes
- ✅ Status sensors:
- Firmware version
- WAN IP address
- Uptime (duration)
- ✅ Binary sensor: Online status
- ✅ Reboot button with 60-second cooldown protection
- ✅ Reboot service:
cudy_scanner.reboot - ✅ Per-device credentials - each router has its own login
- ✅ Diagnostics with sensitive data redaction
- Open HACS in Home Assistant
- Go to Integrations
- Click the three dots (⋮) in the top right
- Select Custom repositories
- Add repository:
https://github.com/restrive/cudy-scanner - Select category: Integration
- Click Add
- Find Cudy Scanner in the integrations list
- Click Download
- Restart Home Assistant
- Go to Settings → Devices & Services
- Click Add Integration and search for Cudy Scanner
-
Clone this repository:
git clone https://github.com/restrive/cudy-scanner.git cd cudy-scanner -
Copy the
custom_componentsfolder to your Home Assistantconfigdirectory:cp -r custom_components ~/.homeassistant/ -
Restart Home Assistant
-
Go to Settings → Devices & Services → Add Integration → Cudy Scanner
-
Go to Settings → Devices & Services
-
Click Add Integration
-
Search for Cudy Scanner
-
Enter your router details:
- Host/IP: Router IP address (e.g.,
192.168.1.1) - Username: Usually empty (leave blank)
- Password: Router admin password
- Use HTTPS: Optional (default: HTTP)
- Verify SSL: Optional (default: false for self-signed certs)
- Host/IP: Router IP address (e.g.,
-
The integration will:
- Test the connection
- Extract device identity (MAC address or serial number)
- Create entities automatically
After setup, the following entities are created:
- Sensor: Firmware Version - Current firmware version
- Sensor: WAN IP - Router's WAN IP address
- Sensor: Uptime - Router uptime (formatted as duration)
- Binary Sensor: Online - Connection status
- Button: Reboot - Reboot the router
Reboot a Cudy router:
service: cudy_scanner.reboot
data:
device_id: "80AFCA8B8B8D" # MAC address without colons (from device unique_id)Or use the reboot button entity directly.
- ✅ WR3600 - Explorer client tested, HA integration needs validation
- ✅ WR6500 - Explorer client tested, HA integration needs validation
⚠️ Other Cudy models with LuCI interface may work (untested)
- Home Assistant 2023.1.0 or later
- Local network access to router
- Router admin password
- Platform: LuCI (OpenWrt-based web interface)
- Authentication: Session-based with double SHA256 password hashing
- Update Interval: 10 seconds (status), 15 seconds (statistics)
- Polling: Local polling (no cloud dependency)
The integration uses MAC address or serial number as stable device identifiers. If your router's IP changes:
- The integration will detect the connection failure
- Session will be cleared and re-login attempted
- Device identity remains stable (based on MAC/serial)
Note: Full automatic rediscovery (ARP/SSDP) is planned for future releases.
- Verify router IP address is correct
- Check router is accessible from Home Assistant host
- Verify password is correct (no username usually required)
- Check router firewall settings
- Ensure password is correct
- Some routers may require username (try leaving blank first)
- Check router logs for login attempts
- Check router is online
- Verify credentials are correct
- Check Home Assistant logs for errors
- Some data may not be available on all models
To help with troubleshooting, you can export diagnostics:
- Go to Settings → System → Diagnostics
- Select Cudy Scanner integration
- Click Download Diagnostics
Note: All sensitive data (passwords, tokens) are automatically redacted.
cudy-scanner/
├── custom_components/
│ └── cudy_scanner/
│ ├── __init__.py
│ ├── config_flow.py
│ ├── coordinator.py
│ ├── cudy_client.py
│ ├── sensor.py
│ ├── binary_sensor.py
│ ├── button.py
│ └── ...
├── docs/
├── research/
└── README.md
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- SSDP/UPnP discovery
- mDNS discovery
- Full IP change rediscovery (ARP/SSDP)
- Options flow for polling intervals
- Connected clients device tracker
- Mesh topology visualization
- Firmware update checking
[Add your license here]
- Based on reverse engineering of Cudy router LuCI interface
- Inspired by other router/AP integrations in HACS
- Issues: https://github.com/restrive/cudy-scanner/issues
- Repository: https://github.com/restrive/cudy-scanner
Version: 0.1.0
Last Updated: 2025-11-09
Status: MVP Core Features Complete - Testing Required
- Discovery: Manual IP entry required (SSDP/mDNS discovery planned)
- IP Change: Device identity is stable (MAC/serial), but automatic rediscovery not yet implemented
- Testing: Integration needs validation with real hardware (explorer client was tested)
- Error Messages: Some technical errors may need user-friendly improvements