wharris Posted February 20, 2019 Posted February 20, 2019 This program adds leak detection capabilities to the ISY 994i. Many programs have been written to provide the ISY with this capability. After experimenting with these programs (with varying degrees of success) I decided to start over and take a slightly different approach. Benefits Logical code execution without repetitive "wait" timers. Streamlined operation with a scheduled operational status check. Weekly operational reports (for peace of mind). Efficient coding eliminates many of the unnecessary variables found in previous versions of programs such as this. The instructions are detailed and include many screen shots. I posted the article on my website. Please take a look and give it a try. Leak Sensor Integration with ISY 994i Thanks for your consideration. 1
wharris Posted February 20, 2019 Author Posted February 20, 2019 (edited) Butler Pantry - Heartbeat - [ID 0017][Parent 0025] If Control 'Leak Sensors / Bulter Pantry Sink-Dry' is switched On Or ( $sLeakButlerPantry is not 3 And ( Control 'Leak Sensors / Bulter Pantry Sink-Heartbeat' is switched On Or Control 'Leak Sensors / Bulter Pantry Sink-Heartbeat' is switched Off ) ) Then $sLeakButlerPantry = 1 Else - No Actions - (To add one, press 'Action') This program runs whenever any communication (other than a WET command) is received from the detector. At a minimum, the detector will send a HEARTBEAT command once every 24 hours. There are two events that will cause this program to run... 1. Whenever the leak detector sends a DRY (ON) command. Typically, this only happens when you press the reset button on the sensor after a WET command has been sent. 2. Whenever the leak detector sends a HEARTBEAT (ON or OFF) command. NOTE: The heartbeat signal is ignored if the state variable is still in the WET condition (3). We do not want to automatically clear a WET condition. That must always be done manually. If either of these two conditions occur then the state variable will be set to the normal (1) value. Changing the value of the state variable will trigger the Leak Send Status program. But, that program is disabled (except when triggered by Leak Check Status) on a fixed schedule. =============================================================================================== Butler Pantry - Timeout - [ID 0018][Parent 0025] If $sLeakButlerPantry is not 3 And Time is Last Run Time for 'Butler Pantry - Heartbeat' + 25 hours Then $sLeakButlerPantry = 2 Else - No Actions - (To add one, press 'Action') This program will run whenever 25+ hours have elapsed since the last hearbeat command was received. When the state variable is set to 2 it will trigger the Leak Send Status program. But, that program will not run because it is disabled (except when called from Leak Check Status) on a fixed schedule. Sensor problems are only reported on a fixed schedule (except for leaks which are immediate.) =============================================================================================== Butler Pantry - Wet - [ID 0016][Parent 0025] If Control 'Leak Sensors / Bulter Pantry Sink-Wet' is switched On Then $sLeakButlerPantry = 3 Else - No Actions - (To add one, press 'Action') This program will run whenever the detector sends a WET ON command. When the state variable is set to 3 (to indicate a leak) it will trigger the Leak Activation program. The Leak Activation program will immediately send an alert message. Note: The program will only be activated if the state variable CHANGES values. Therefore, only one alert will be sent until the reset button is pressed on the detector. If the reset button is not pressed before the next scheduled status report then the alert will be included in that report. =============================================================================================== Leak Activation - [ID 0014][Parent 0025] If $sLeakButlerPantry is 3 Or $sLeakGameRoomSink is 3 Or $sLeakGuestDownSink is 3 Or $sLeakGuestUpSink is 3 Or $sLeakKitchenSink is 3 Or $sLeakWashingMachine is 3 Then Send Notification to 'Default' content 'Leak Detector Activation' Resource 'Leak Detected' Else - No Actions - (To add one, press 'Action') This program will run whenever any of the leak detector state variables change. If any variable has a WET condition (3) then a report will be sent. The state variable is set to 3 whenever the leak detector sends a WET (ON) command. =============================================================================================== Leak Check Status - [ID 002C][Parent 0025] If Time is 8:00:00AM Or Time is 8:00:00PM Then $sSendStatus = 1 Wait 5 seconds $sSendStatus = 0 Else - No Actions - (To add one, press 'Action') This program will run at the scheduled times. When sSendStatus is set to 1 it will trigger the Leak Send Status program. When that happens, a report will be sent if any of the state variables are abnormal (<>1). =============================================================================================== Leak Send Status - [ID 0015][Parent 0025] If $sSendStatus is 1 And ( $sLeakButlerPantry is not 1 Or $sLeakGameRoomSink is not 1 Or $sLeakGuestDownSink is not 1 Or $sLeakGuestUpSink is not 1 Or $sLeakKitchenSink is not 1 Or $sLeakWashingMachine is not 1 ) Then Send Notification to 'Default' content 'Leak Detector Problem' Else - No Actions - (To add one, press 'Action') This program will run whenever any of the state variables change. But, a report will only be sent if sSendStatus = 1 AND any of the state variables are <> 1 (abnormal). The sSendStatus is 1 check is needed because this program is called whenever the sSendStatus variable changes. We only want to send a notification if this value is 1. =============================================================================================== Leak Startup - [ID 0013][Parent 0025][Run At Startup] If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $sSendStatus = 0 $sLeakButlerPantry = 0 $sLeakGameRoomSink = 0 $sLeakGuestDownSink = 0 $sLeakGuestUpSink = 0 $sLeakKitchenSink = 0 $sLeakWashingMachine = 0 Else - No Actions - (To add one, press 'Action') This program runs at startup. All status state variables are initialized to their startup value (0). sSendStatus enables scheduled status reports. (0=prevent reports state variables change state, 1=enable reports when variables change state) =============================================================================================== Leak Weekly Report - [ID 0026][Parent 0025] If On Sun Time is 12:00:00PM Then Send Notification to 'Default' content 'Leak Detector Report' Else - No Actions - (To add one, press 'Action') Edited February 20, 2019 by wharris Format 1
Michel Kohanim Posted February 20, 2019 Posted February 20, 2019 @wharris, Thank you! With kind regards, Michel
wharris Posted March 10, 2019 Author Posted March 10, 2019 I now have 25 leak sensors on-line. I have tested each sensor with water to verify that an alert is sent. One potential issue is the purity of the water. When I test with RO (reverse osmosis) water the leak detector may not detect the presence of water. This could be an issue if you are placing the leak detector to monitor an RO system. 1
mebert72 Posted March 11, 2019 Posted March 11, 2019 On 3/10/2019 at 9:16 AM, wharris said: I now have 25 leak sensors on-line. I have tested each sensor with water to verify that an alert is sent. One potential issue is the purity of the water. When I test with RO (reverse osmosis) water the leak detector may not detect the presence of water. This could be an issue if you are placing the leak detector to monitor an RO system. One could sprinkle some household table salt in the vicinity of the sensor, which would provide a conductive path when water is introduced... 1
Recommended Posts