Files
SRS IT 27be1892ed Initial release — Dibby Wemo Manager v2.0.0
Desktop (Electron/Windows): device dashboard, DWM scheduling engine,
native firmware rules editor, Windows background service, web remote,
sunrise/sunset support.

Homebridge plugin (homebridge-dibby-wemo v1.0.0): HomeKit switches for
all local Wemo devices, custom UI with DWM rules, device rules,
scheduler heartbeat, and location-based sunrise/sunset scheduling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 16:30:43 -04:00

223 lines
7.4 KiB
Markdown

# homebridge-dibby-wemo
**Homebridge plugin for local Belkin Wemo control — no cloud required.**
Registers all Wemo devices on your local network as HomeKit switches and provides a full scheduling engine via a custom Homebridge UI panel. All device communication is direct local UPnP/SOAP — no Belkin account needed.
---
## Installation
### Via Homebridge UI (recommended)
1. Open Homebridge UI → **Plugins**
2. Search for `homebridge-dibby-wemo`
3. Click **Install**
4. Restart Homebridge
### Via npm
```bash
npm install -g homebridge-dibby-wemo
```
---
## Configuration
Add to your Homebridge `config.json`:
```json
{
"platforms": [
{
"platform": "DibbyWemo",
"name": "DibbyWemo"
}
]
}
```
Restart Homebridge. All Wemo devices on your network are discovered automatically and appear in HomeKit.
### Optional config properties
```json
{
"platform": "DibbyWemo",
"name": "DibbyWemo",
"discoveryTimeout": 10000,
"pollInterval": 30,
"manualDevices": [
{ "host": "192.168.1.50", "port": 49153 }
]
}
```
| Property | Type | Default | Description |
|---|---|---|---|
| `discoveryTimeout` | number | `10000` | SSDP discovery window in milliseconds |
| `pollInterval` | number | `30` | How often (seconds) to poll device state for HomeKit |
| `manualDevices` | array | `[]` | Devices to add by IP if SSDP discovery misses them |
---
## Custom UI
Once installed, open the plugin settings in Homebridge UI. The plugin provides a full custom panel with five tabs:
### 📱 Devices Tab
- Lists all discovered Wemo devices with their model, firmware version, and IP address
- Toggle any device on or off directly from the UI
- **Discover** button re-runs SSDP discovery and updates the device list
### ⏰ DWM Rules Tab
Create and manage automation rules that run inside Homebridge.
**Scheduler status bar** — shown at the top of the tab:
- 🟢 **Green** — scheduler is running, shows total schedule entries and next upcoming rule
- 🟠 **Amber** — scheduler may have stopped (no heartbeat for 90+ seconds) — restart Homebridge
- 🔴 **Red** — scheduler is not running — check the `DibbyWemo` platform is in `config.json`
**Rule types:**
| Icon | Type | Description |
|---|---|---|
| 📅 | **Schedule** | Turn devices on/off at specific times on selected days |
| ⏱ | **Countdown** | Active window — on at start, off at end (cross-midnight aware) |
| 🏠 | **Away Mode** | Randomised on/off simulation during a time window |
| 🔒 | **Always On** | Device is kept ON at all times; any off-state is corrected within 10 seconds |
| ⚡ | **Trigger** | IFTTT-style: when one device changes state, control another |
**Creating a rule:**
1. Click **+ ADD RULE**
2. Enter a name, select the rule type
3. Select target device(s) and set times / options
4. Click **Save Rule**
Rules take effect on the next 30-second scheduler tick — no restart needed.
**Editing / deleting a rule:**
- Click **EDIT** to open the inline form
- Click **DELETE** → confirm with **Yes, delete** in the inline bar that appears
**Times use 12-hour AM/PM format.** Examples: `8:30 PM`, `6:00 AM`, `12:00 AM` (midnight), `9 PM`
### 🔌 Device Rules Tab
Manage rules stored directly on the Wemo device's own firmware:
1. Select a device from the dropdown
2. Click **Load Rules** to fetch the device's rule database
3. Toggle rules on/off or delete them
4. Click **Add Rule** to create a new native firmware rule
> Native firmware rules are separate from DWM Rules. DWM Rules are recommended as they support more features and work across multiple devices simultaneously.
> Wemo Dimmer V2 (WDS060) with newer RTOS firmware does not support `FetchRules`/`StoreRules`. These devices show a warning in the Device Rules tab.
### ⚙️ Settings Tab
Set your **location** for sunrise/sunset-based scheduling:
1. Type your city name in the search box
2. Select your city from the dropdown
3. Click **Save Location**
Once set, you can use Sunrise and Sunset as rule start/end times.
### ❓ Help Tab
Built-in documentation covering all features, rule types, time format, and troubleshooting.
---
## How It Works
### Device Discovery
At startup, the plugin broadcasts an SSDP M-SEARCH packet to `239.255.255.250:1900`. Wemo devices respond with their location URL, from which the plugin fetches device details (`/setup.xml`) and registers each device as a HomeKit switch accessory.
Cached devices are restored immediately on the next restart so HomeKit doesn't time out waiting for SSDP to complete.
### HomeKit Control
All on/off commands use direct UPnP SOAP requests to the device:
- `SetBinaryState` — set on (`1`) or off (`0`)
- `GetBinaryState` — read current state
The plugin polls each device every `pollInterval` seconds and pushes state changes to HomeKit.
### DWM Scheduler
The scheduler runs inside the Homebridge process:
- **30-second tick** — reloads rules from store, schedules upcoming events
- **65-second look-ahead window** — pre-schedules `setTimeout` callbacks for precise firing
- **10-minute catch-up** — on restart, fires any rules whose time fell within the last 10 minutes
- **Health monitor** — polls all referenced devices every 10 seconds for AlwaysOn and Trigger rule enforcement
- **Heartbeat** — writes scheduler status to the store every tick; the UI reads this to show the status bar
Rules are stored in `<homebridgeStoragePath>/dibby-wemo.json`. The scheduler reloads this file on every tick, so rules created or edited in the UI take effect within 30 seconds without a restart.
### Native Firmware Rules
Wemo devices store their own rules in a SQLite database inside a ZIP archive. The plugin:
1. Calls `FetchRules` to get the current database URL
2. Downloads and extracts the ZIP to get the SQLite file
3. Opens it with `sql.js` (WebAssembly SQLite — no native compilation)
4. Modifies the database
5. Re-ZIPs, base64-encodes, and uploads via `StoreRules`
---
## Troubleshooting
| Problem | Solution |
|---|---|
| No devices found | Ensure PC and Wemo devices are on the same network. Some routers block SSDP multicast — add devices manually via `manualDevices` in config. |
| HomeKit switch unresponsive | Restart Homebridge. The device must be discovered at least once to register. Check Homebridge logs for SOAP errors. |
| Rules not firing | Check the scheduler status bar in the DWM Rules tab. 🔴 Red = DibbyWemo platform missing from config. 🟠 Amber = restart Homebridge. |
| Settings gear icon missing | Ensure `customUi: true` is in the plugin's `package.json` and `config.schema.json`. Upgrade `homebridge-config-ui-x` to v5+. |
| Dimmer device shows warning | Wemo Dimmer V2 (WDS060) newer firmware does not support FetchRules. Power control still works. |
| Rule was created but not showing | The UI data refreshes on tab open. Switch away and back to the DWM Rules tab, or restart Homebridge and hard-refresh the browser (Ctrl+Shift+R). |
---
## Data Storage
All plugin data is stored in the Homebridge storage directory (default `~/.homebridge/`):
**`dibby-wemo.json`** — main plugin store:
```json
{
"location": { "lat": 0, "lng": 0, "city": "...", "country": "..." },
"devices": [...],
"dwmRules": [...],
"schedulerHeartbeat": { "running": true, "ts": "...", "upcoming": [...] }
}
```
No data is sent outside your local network.
---
## Requirements
- Homebridge ≥ 1.6.0
- Node.js ≥ 18
- homebridge-config-ui-x ≥ 5.0.0 (for custom UI panel)
- Wemo devices on the same LAN as the Homebridge host
---
## License
MIT