Files
dibby-wemo-manager/apps/desktop/README.md
T
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

6.2 KiB
Raw Permalink Blame History

Dibby Wemo Manager — Desktop App

Windows desktop application for local Belkin Wemo control.

Full device dashboard, power control, scheduling engine, Windows background service, and optional web remote — all communicating directly with your Wemo devices over your local network. No Belkin cloud account required.


Installation

Download the latest release from GitHub Releases:

File Description
Dibby Wemo Manager Setup 2.0.0.exe NSIS installer — recommended, installs to Program Files, adds Start Menu shortcut
Dibby Wemo Manager 2.0.0.exe Portable — single executable, no installation, runs from any folder

Run the installer or portable exe. The app opens and immediately begins discovering Wemo devices on your network.


Features

🔍 Device Discovery & Control

  • Automatically discovers all Wemo devices on your LAN via SSDP
  • Displays device name, model, firmware version, and IP address
  • Toggle any device on or off with a single click
  • Real-time status polling

DWM Rules — Scheduling Engine

Create automation rules across one or multiple devices:

Rule Type Description
📅 Schedule Turn devices on/off at fixed times on selected days of the week
⏱ Countdown Active window — turns on at window start, off at window end (handles cross-midnight windows)
🏠 Away Mode Simulates occupancy during a time window by randomly toggling devices on (3090 min) then off (115 min)
🔒 Always On Continuously enforces a device stays on; detects and corrects any off-state within 10 seconds
Trigger IFTTT-style automation: when a source device changes state, control target devices (mirror, opposite, force on/off)

Multi-device rules — every rule can target multiple devices simultaneously.

Times use 12-hour AM/PM format (e.g. 8:30 PM, 6 AM).

Rules reload live — the scheduler picks up edits within 30 seconds. No restart needed.

🔌 Native Firmware Rules

Read and manage rules stored directly on the Wemo device's own firmware:

  • View all rules on a selected device
  • Toggle rules on or off
  • Delete rules
  • Add new native firmware rules

Wemo Dimmer V2 (WDS060) with newer RTOS firmware does not support firmware rule editing.

🛠️ Windows Background Service

The DWM scheduler can run as a Windows service (DibbyWemoService) so rules continue to fire even when the GUI is closed or the user logs out.

  • Install/uninstall the service from the app's System tab
  • The service reads rules from the shared data directory and syncs automatically when rules are saved in the GUI
  • Service uses node-windows for reliable Windows service registration

🌐 Web Remote

Optional local web interface accessible from any device on your network (phone, tablet, another PC):

  • View device status
  • Toggle devices on/off
  • QR code for easy mobile access
  • Configurable port; firewall rule created automatically (UAC prompt)

📍 Sunrise/Sunset Scheduling

Set your city in the Settings tab. Schedule rules can then use local sunrise and sunset times as start/end points.


Data Storage

All app data is stored in %APPDATA%\DibbyWemoManager\ (typically C:\Users\<you>\AppData\Roaming\DibbyWemoManager\):

File Description
wemo-manager.json App settings, discovered devices, DWM rules
dwm-rules.json DWM rules shared with the Windows background service

The standalone service reads C:\ProgramData\DibbyWemoManager\dwm-rules.json. The GUI syncs rules to this location after every create, update, or delete.


Architecture

Electron Main Process
├── wemo.js           — Wemo UPnP/SOAP client + SSDP discovery
├── scheduler.js      — DWM rule scheduling engine (tick every 30s)
├── store.js          — JSON persistence layer
├── firewall.js       — Windows Firewall rule management (elevated)
├── web-server.js     — Express web remote server
├── service-manager.js— node-windows service install/uninstall
└── ipc/
    ├── devices.ipc.js
    ├── rules.ipc.js
    ├── scheduler.ipc.js
    ├── system.ipc.js
    └── wifi.ipc.js

Electron Renderer (React 18 + Zustand)
├── DeviceCard        — per-device power button + status
├── RulesTab          — DWM rules list + inline editor
├── AllRulesTab       — Native firmware rules per device
└── Settings          — location, service, web remote config

Standalone Service (scheduler-standalone.js)
└── Runs headless; reads dwm-rules.json; same scheduling logic

Wemo Protocol Details

Operation Protocol
Discovery SSDP UDP multicast to 239.255.255.250:1900
Device info HTTP GET /setup.xml
Power on/off UPnP SOAP SetBinaryState to /upnp/control/basicevent1
State query UPnP SOAP GetBinaryState
Rules fetch UPnP SOAP FetchRules → download ZIP → extract SQLite
Rules save Modify SQLite → re-ZIP → base64 → StoreRules

Native firmware rules are stored in a SQLite database (temppluginRules.db) inside a ZIP archive. The app uses sql.js (WebAssembly SQLite) to read and write rules without any native compilation.


Building from Source

Prerequisites

  • Node.js ≥ 18
  • npm ≥ 9
  • Windows (for Windows builds)

Install dependencies

# From repo root
npm install

# Or just for the desktop app
cd apps/desktop
npm install

Development mode

cd apps/desktop
npm run dev

Opens the Electron app with hot-reload for the renderer.

Production build

cd apps/desktop
npm run build:win

This:

  1. Compiles the renderer with electron-vite
  2. Bundles the standalone service script
  3. Runs electron-builder to produce the NSIS installer and portable exe

Output appears in apps/desktop/dist/.

Code signing: The build configuration expects a PFX certificate at resources/srsit-codesign.pfx. Remove the win.certificateFile entry from package.json if you don't have a certificate.


Requirements

  • Windows 10 or later (x64)
  • Node.js ≥ 18 (only needed for building from source)
  • Wemo devices on the same LAN

License

MIT