Let’s heap another Insteon Sensing Device on our growing collection of Insteon devices: the Insteon Water Leak Sensor. It’s a simple, (relatively) inexpensive one-trick pony that does what it does pretty well: detect whether it’s sitting in water and triggering an event based on that.
The idea is you put these guys anywhere a leak may spring – in my place I have 3 of them: by the sump pump, behind the washing machine, and under the A/C unit in the attic. If you were really paranoid you could put one behind toilets and under sinks in your house as well.
When added the to the ISY-994i, 3 distinct nodes show up: “Dry”, “Wet”, and “Heartbeat”. The first two are pretty much redundant – when the state of “Dry” is “On”, the state of “Wet” is off – and vice-versa. So any program you could write (such as “send me a text message when a leak is detected”) would work with either of them.
The “Heartbeat” node is a bit more complicated – as the much-smarter-than-me folks on the Universal Devices Forums have extensively discussed during the implementation phase. The problem is that in the past, wireless Insteon devices such as the motion detector or smoke detector bridge sent a signal for “low battery” when the device’s battery was low. This is great because you as an end user can write a program to email or text an alert when the battery for these devices gets low. But, what if one of the following conditions occur:
- the battery goes POOF! and dies very quickly, preventing the device from sending a signal that it was low in the first place
- the device goes out of range before the battery dies so the “low battery” signal is never received
- power is lost to the dual-band device that’s receiving these RF signals for an extended period
- the battery is removed from the device
The above reasons seem to be why Insteon made this fundamental change from actively sending a “low battery” event to regularly to sending daily “heartbeat” events. Now, instead of the wireless device being responsible for notifying the central controller (ISY) when it’s about to go dead, the Insteon engineering team have shifted that burden to the central controller itself. So in the current implementation, a “heartbeat” message is set every day, and end users can detect and alert if this state hasn’t been set in the past day. Also, the value of the “heartbeat” state is different than what I expected – it’s ON/OFF state represents Wet and Dry, respectively, not “heartbeat received”/”heartbeat not received” (thanks so much to LeeG for clarifying this in response to my question on the UDI forum.
In other words (again, thanks to LeeG), your program should NOT look like this:
If Control 'Leak Sensor-Heartbeat' is switched Off Then -- ALERT HERE BECAUSE THE HEARTBEAT DIED -- Else - No Actions - (To add one, press 'Action')
Instead, it SHOULD look like this (using a wait statement to check if 25 hours have gone by without a heartbeat):
If Control 'Leak Sensor-Heartbeat' is switched On Or Control 'Leak Sensor-Heartbeat' is switched Off Then Wait 25 hours -- ALERT HERE BECAUSE NO HEARTBEAT WAS RECEIVED -- Else - No Actions - (To add one, press 'Action')