An Indigo plugin that monitors a water leak sensor and sends Pushover and email alerts with confirmation retests to avoid false alarms.
- Polls a water leak sensor every 2 seconds
- Works with Zigbee2MQTT (
waterLeakstate) and Z-Wave sensors (falls back toonOffState) - Confirmation retest before alerting (1 × 5s) to eliminate false triggers
- Pushover push notification on confirmed leak
- Email alert via Indigo's built-in Email+ plugin
- Never silently drops a confirmed leak — if an alert can't be delivered (email or Pushover down) it keeps retrying until it gets through, rather than assuming it was sent
- Optional re-alert while a leak keeps flowing, so a persisting flood keeps nagging
- Send Test Alert menu item to verify Pushover and email delivery without a real leak
- Auto-clears the alert once the sensor returns to dry
- Handles sensor offline/unavailable states gracefully
- Indigo 2022.1 or later (Python 3.10+ bundled with Indigo)
- macOS (arm64 or x86_64)
- A water leak sensor device visible in Indigo (Zigbee, Z-Wave, etc.)
- Pushover plugin for Indigo (io.thechad.indigoplugin.pushover)
- Email+ plugin (bundled with Indigo)
Developed and tested on Indigo 2025.2 / Python 3.13. Older Indigo releases that meet the minimum API version above should also work — the API floor is what Indigo's plugin loader actually checks.
- Go to the Releases page and download
WaterLeakMonitor.indigoPlugin.zip - Unzip the downloaded file — you will get
WaterLeakMonitor.indigoPlugin - Double-click
WaterLeakMonitor.indigoPlugin— Indigo will install it automatically
Open Plugins → Water Leak Monitor → Configure and fill in:
| Field | Meaning |
|---|---|
| Leak Sensor Device ID | Indigo device ID of the water leak sensor to monitor |
| Alert Email Address | Recipient for leak-alert emails (fallback if WATERLEAK_ALERT_EMAIL is not in IndigoSecrets.py) |
| Email Subject | Subject line for the alert email |
| Re-alert every (minutes) | If a confirmed leak keeps flowing, re-send the alert this often. 0 = alert once only (default) |
After saving, use Plugins → Water Leak Monitor → Send Test Alert to confirm your Pushover and email delivery actually work.
This plugin, like every CliveS Indigo plugin, reads sensitive values from one shared master file:
/Library/Application Support/Perceptive Automation/IndigoSecrets.py
| File | Purpose | Real data? | Committed to GitHub? |
|---|---|---|---|
IndigoSecrets.py |
Working file the plugin reads at runtime. Keep a backup in a password manager. | YES | NO — listed in .gitignore |
IndigoSecrets_example.py |
Template only — empty placeholders. Shipped in the plugin bundle. | NO | YES |
If you don't have IndigoSecrets.py, copy IndigoSecrets_example.py out of
the plugin bundle into /Library/Application Support/Perceptive Automation/,
rename it to IndigoSecrets.py, and fill in your values. Or skip the file
altogether and type the values into the plugin's configuration dialog — where
both are set, IndigoSecrets.py wins.
If neither source supplies a value the plugin needs, it logs an ERROR naming
the key and telling you to either fill in the matching field or add the key to
IndigoSecrets.py.
Every log line carries a millisecond timestamp [HH:MM:SS.mmm], so you can
line events up precisely against the other CliveS plugins — Device Activity
Monitor uses the same format.
To turn the prefix off, or back on, at any time:
Plugins → Water Leak Monitor → Toggle Timestamps in Log (on/off)
The plugin stores the setting in pluginPrefs (timestampEnabled) and it
survives a restart. It defaults to ON.
- 1.9.1 (21-07-2026) — housekeeping. Shared-utility refresh: calling the log timestamp filter twice no longer double-stamps every line, and the module imports cleanly outside Indigo.
- 1.9 (18-07-2026) — deep-review improvements: a Send Test Alert menu item to verify delivery without a real leak, an optional re-alert while a leak keeps flowing, and Show Plugin Info now reports the monitored sensor and its state.
- 1.8 (18-07-2026) — deep-review safety fixes: a confirmed leak whose alert could not be delivered is no longer silently treated as sent — it keeps retrying until it gets through. The monitor loop can no longer be stopped by an unexpected error, Z-Wave sensors (which expose
onOffState) are now monitored, and the alert names your actual sensor. First test suite added. - 1.7 (05-06-2026) — estate bug-sweep. The leak sensor's device ID is now read defensively. The old code only coped with the field being blank, so anything non-numeric left in it crashed the plugin on load and again on saving the settings dialog.
- 1.6 (23-05-2026) — millisecond timestamp prefix on every log line and a Toggle Timestamps menu item.
- 1.5 (13-05-2026) — the alert email address moved into
IndigoSecrets.py(WATERLEAK_ALERT_EMAIL) with a settings-dialog fallback, and the leak sensor's device ID moved out of the source into the settings, so the plugin works for anyone rather than only for one sensor ID. A newPluginConfig.xmlmeans the whole thing can be set up without editing any code.
Vibed into existence by CliveS, who knew what he wanted, argued until he got it, and tested it on a real house. Typed at inhuman speed by Claude (Anthropic), who mostly did as it was told.
© 2026 CliveS · MIT licence — copy it, fork it, bend it, break it, fix it, ship it. If it breaks, you get to keep both pieces.