Water slow leak detection script.

Posted on
Sun Dec 03, 2017 9:43 am
hamw offline
Posts: 1212
Joined: Mar 31, 2008

Water slow leak detection script.

Any idea where I would begin on this script? Monitoring for consistent flow is a strategy used by automated water meters to automatically shut off water control valves in the case of a leak, and I use this script for my whole house/pool and sprinkler meters. It has successfully picked up leaks in the past. The data gets into Indigo via Phidget sensors, and each hour the usage is logged in its own variable. The script talks to Indigo every hour.

The script looks at the the most recent 7 hour variables. Here's the hourly log output:

Code: Select all
Dec 3, 2017, 10:05:06 AM
   Script                          Total Water Leak for last hour is 64
   Script                          Water Slow Leak register contains 0 in at least one period in seven hours.  0, 0, 0, 0, 0, 42, 64


If water flow is detected for 7 consecutive hours it will set a variable to "true" that will then execute a trigger to send an email stating "water flow detected for 7 consecutive hours. Check to be sure there is not a slow leak."

I know it is really simple and inelegant, but it works. Any advice?

Code: Select all
using terms from application "IndigoServer"
   tell application "IndigoServer"
      
      set WLeakTime_01 to value of variable "WLeakTime_01"
      set WLeakTime_02 to value of variable "WLeakTime_02"
      set WLeakTime_03 to value of variable "WLeakTime_03"
      set WLeakTime_04 to value of variable "WLeakTime_04"
      set WLeakTime_05 to value of variable "WLeakTime_05"
      set WLeakTime_06 to value of variable "WLeakTime_06"
      set WLeakTime_07 to value of variable "WLeakTime_07"
      set WLeakTime_08 to value of variable "WLeakTime_08"
      set WLeakTime_09 to value of variable "WLeakTime_09"
      set WLeakTime_10 to value of variable "WLeakTime_10"
      set WLeakTime_11 to value of variable "WLeakTime_11"
      set WLeakTime_12 to value of variable "WLeakTime_12"
      set WLeakTime_13 to value of variable "WLeakTime_13"
      set WLeakTime_14 to value of variable "WLeakTime_14"
      set WLeakTime_15 to value of variable "WLeakTime_15"
      set WLeakTime_16 to value of variable "WLeakTime_16"
      set WLeakTime_17 to value of variable "WLeakTime_17"
      set WLeakTime_18 to value of variable "WLeakTime_18"
      set WLeakTime_19 to value of variable "WLeakTime_19"
      set WLeakTime_20 to value of variable "WLeakTime_20"
      set WLeakTime_21 to value of variable "WLeakTime_21"
      set WLeakTime_22 to value of variable "WLeakTime_22"
      set WLeakTime_23 to value of variable "WLeakTime_23"
      set WLeakTime_24 to value of variable "WLeakTime_24"
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_01" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_01 to value of variable "WLeakTime_01"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_01" as string
      
      if ((((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0) or (((WLeakTime_23) as integer) is equal to 0) or (((WLeakTime_24) as integer) is equal to 0) or (((WLeakTime_01) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01
      end if
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_02" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_02 to value of variable "WLeakTime_02"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_02" as string
      
      if ((((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0) or (((WLeakTime_23) as integer) is equal to 0) or (((WLeakTime_24) as integer) is equal to 0) or (((WLeakTime_01) as integer) is equal to 0) or (((WLeakTime_02) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_03" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_03 to value of variable "WLeakTime_03"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_03" as string
      
      if ((((WLeakTime_22) as integer) is equal to 0) or (((WLeakTime_23) as integer) is equal to 0) or (((WLeakTime_24) as integer) is equal to 0) or (((WLeakTime_01) as integer) is equal to 0) or (((WLeakTime_02) as integer) is equal to 0) or (((WLeakTime_03) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_04" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_04 to value of variable "WLeakTime_04"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_04" as string
      
      if ((((WLeakTime_23) as integer) is equal to 0) or (((WLeakTime_24) as integer) is equal to 0) or (((WLeakTime_01) as integer) is equal to 0) or (((WLeakTime_02) as integer) is equal to 0) or (((WLeakTime_03) as integer) is equal to 0) or (((WLeakTime_04) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_23 & ", " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04
      end if
      
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_05" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_05 to value of variable "WLeakTime_05"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_05" as string
      
      
      if ((((WLeakTime_24) as integer) is equal to 0) or (((WLeakTime_01) as integer) is equal to 0) or (((WLeakTime_02) as integer) is equal to 0) or (((WLeakTime_03) as integer) is equal to 0) or (((WLeakTime_04) as integer) is equal to 0) or (((WLeakTime_05) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_24 & ", " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05
      end if
      
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_06" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_06 to value of variable "WLeakTime_06"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_06" as string
      
      
      if ((((WLeakTime_01) as integer) is equal to 0) or (((WLeakTime_02) as integer) is equal to 0) or (((WLeakTime_03) as integer) is equal to 0) or (((WLeakTime_04) as integer) is equal to 0) or (((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_01 & ", " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_07" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_07 to value of variable "WLeakTime_07"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_07" as string
      
      
      if ((((WLeakTime_02) as integer) is equal to 0) or (((WLeakTime_03) as integer) is equal to 0) or (((WLeakTime_04) as integer) is equal to 0) or (((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0)) then
         
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_02 & ", " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07
         
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_08" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_08 to value of variable "WLeakTime_08"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_08" as string
      
      
      if ((((WLeakTime_03) as integer) is equal to 0) or (((WLeakTime_04) as integer) is equal to 0) or (((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08
         
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_03 & ", " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08
         
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_09" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_09 to value of variable "WLeakTime_09"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_09" as string
      
      
      if ((((WLeakTime_04) as integer) is equal to 0) or (((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_10" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_10 to value of variable "WLeakTime_10"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_10" as string
      
      
      if ((((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_04 & ", " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_11" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_11 to value of variable "WLeakTime_11"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_11" as string
      
      
      
      if ((((WLeakTime_05) as integer) is equal to 0) or (((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_05 & ", " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_12" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_12 to value of variable "WLeakTime_12"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_12" as string
      
      
      if ((((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_13" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_13 to value of variable "WLeakTime_13"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_13" as string
      
      
      if ((((WLeakTime_06) as integer) is equal to 0) or (((WLeakTime_07) as integer) is equal to 0) or (((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in eight hours.  " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_06 & ", " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_14" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_14 to value of variable "WLeakTime_14"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_14" as string
      
      
      
      if ((((WLeakTime_08) as integer) is equal to 0) or (((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in eight hours.  " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_07 & ", " & WLeakTime_08 & ", " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14
      end if
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_15" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_15 to value of variable "WLeakTime_15"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_15" as string
      
      
      if ((((WLeakTime_09) as integer) is equal to 0) or (((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0) or (((WLeakTime_15) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_09 & ", " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15
      end if
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_16" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_16 to value of variable "WLeakTime_16"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_16" as string
      
      
      if ((((WLeakTime_10) as integer) is equal to 0) or (((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0) or (((WLeakTime_15) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_10 & ", " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_17" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_17 to value of variable "WLeakTime_17"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_17" as string
      
      if ((((WLeakTime_11) as integer) is equal to 0) or (((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0) or (((WLeakTime_15) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_17) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_11 & ", " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17
      end if
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_18" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_18 to value of variable "WLeakTime_18"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_18" as string
      
      if ((((WLeakTime_12) as integer) is equal to 0) or (((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0) or (((WLeakTime_15) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_17) as integer) is equal to 0) or (((WLeakTime_18) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_12 & ", " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_19" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_19 to value of variable "WLeakTime_19"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_19" as string
      
      if ((((WLeakTime_13) as integer) is equal to 0) or (((WLeakTime_14) as integer) is equal to 0) or (((WLeakTime_15) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_17) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_13 & ", " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19
      end if
      
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_20" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_20 to value of variable "WLeakTime_20"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_20" as string
      
      if ((((WLeakTime_15) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_17) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0) or (((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0)) then
         
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20
         
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_14 & ", " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_21" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_21 to value of variable "WLeakTime_21"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_21" as string
      
      if ((((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_17) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0) or (((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_15 & ", " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_22" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_22 to value of variable "WLeakTime_22"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_22" as string
      
      if ((((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_16) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0) or (((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_16 & ", " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_23" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_23 to value of variable "WLeakTime_23"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_23" as string
      
      if ((((WLeakTime_17) as integer) is equal to 0) or (((WLeakTime_18) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0) or (((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0) or (((WLeakTime_23) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_17 & ", " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23
      end if
      
      
      
      
      set value of variable "WLeak_1" to value of variable "WaterUse_01_Today"
      
      delay 3600 --this is 60 minutes
      
      set Water_60min to value of variable "WaterUse_01_Today"
      
      set value of variable "WLeakTime_24" to (Water_60min - (value of variable "WLeak_1"))
      set WLeakTime_24 to value of variable "WLeakTime_24"
      log "Total Water Leak for last hour is " & value of variable "WLeakTime_24" as string
      
      if ((((WLeakTime_18) as integer) is equal to 0) or (((WLeakTime_19) as integer) is equal to 0) or (((WLeakTime_20) as integer) is equal to 0) or (((WLeakTime_21) as integer) is equal to 0) or (((WLeakTime_22) as integer) is equal to 0) or (((WLeakTime_23) as integer) is equal to 0) or (((WLeakTime_24) as integer) is equal to 0)) then
         
         set value of variable "WaterHouse_Leak_Slow_Detected" to "false" as string
         log "Water Slow Leak register contains 0 in at least one period in seven hours.  " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24
      else
         set value of variable "WaterHouse_Leak_Slow_Detected" to "true" as string
         log "Water Slow Leak register indicates a possible leak. No periods contain 0.  " & WLeakTime_18 & ", " & WLeakTime_19 & ", " & WLeakTime_20 & ", " & WLeakTime_21 & ", " & WLeakTime_22 & ", " & WLeakTime_23 & ", " & WLeakTime_24
      end if
      
   end tell
end using terms from

Posted on
Sun Dec 03, 2017 3:18 pm
DomoPat offline
User avatar
Posts: 210
Joined: Jul 17, 2010
Location: Toulouse, France

Re: Water slow leak detection script.

Oh my god, this is such a complicated script !

I do the same with one script in a schedule and one variable. The schedule executes every hour and runs a script like (written from memory, syntax might be off):
------
if hourly_water_use > 0 then
set consecutive_hours to consecutive_hours + 1
else
set consecutive_hours = 0
end
write log "Water use past hour is " & hourly_water_use & " liters and consecutive hours = " & consecutive_hours

if consecutive_hours > 7 then
write log "Alert, there has been usage of water for 7 consecutive hours ! possible leak ! "
end
-----
I believe my script does the same as yours, it also detected a tap that was not fully closed and save the day !

Posted on
Sun Dec 03, 2017 4:29 pm
hamw offline
Posts: 1212
Joined: Mar 31, 2008

Re: Water slow leak detection script.

That is much more elegant. How would you do it in python?

Posted on
Mon Dec 04, 2017 10:18 am
jay (support) offline
Site Admin
User avatar
Posts: 18199
Joined: Mar 19, 2008
Location: Austin, Texas

Re: Water slow leak detection script.

hamw wrote:
That is much more elegant. How would you do it in python?


If he posts the actual AppleScript it should be pretty straight-forward (I'm just not sure about where some of the stuff he's using is coming from).

[MODERATOR NOTE] you really should make a separate post for each script you're trying to convert. It'll be easier for others who are trying to learn from the forum's collective experience to find similar script conversions. I'll split this one.

Jay (Indigo Support)
Twitter | Facebook | LinkedIn

Posted on
Wed Dec 13, 2017 4:08 am
DomoPat offline
User avatar
Posts: 210
Joined: Jul 17, 2010
Location: Toulouse, France

Re: Water slow leak detection script.

To be completely precise, and now that I am back home here are the details. I have a water meter with a dry contact that closes for every liter that flows through the meter. It is connected to a Weeder board which counts the pulses and sends the info to a variable in Indigo via AppleScript.

Then in a schedule that runs every hour I check the quantity of water used in the past hour, stored in the variable "ConsoEauHeure":

Code: Select all
if (value of variable "ConsoEauHeure") as integer > 0 then
      set (value of variable "EauFuiteAlerte") to (value of variable "EauFuiteAlerte") + 1
   else
      set (value of variable "EauFuiteAlerte") to "0"
   end if
log "Consommation d'eau de l'heure passée: " & value of variable "ConsoEauHeure" & " litres. Heures consécutives: " & (value of variable "EauFuiteAlerte")
   


It sets the variable "EauFuiteAlerte" to 0 or the number of consecutive hours where there has been water flowing.

Then I have a trigger on the variable "EauFuiteAlerte", when the value goes above 8 I get an alert about a possible leak. 8 consecutive hours is too small, when we have guests I sometimes get the alert because there is so much water usage. It is easy to change the trigger though, but I don't do it as it tells me the system works as expected, and it impresses the guests ! :-)

I have another trigger for the catastrophic leaks, set on the variable "ConsoEauHeure" if it goes above 800, I get another type of alert.

I like this setup because I don't need any water detector (with batteries to check and replace, no need to remember where they are, no false alert when the kids spill water somewhere, etc...) and I can detect slow and catastrophic leaks with a 'simple' setup and a couple of variables, and I can monitor water usage all year long.

Now if only I could find a ZWave shutoff valve that works on European ZWave frequencies, I would be perfectly happy !

Posted on
Wed Dec 13, 2017 5:17 am
Asconasny offline
Posts: 161
Joined: Jan 16, 2015

Re: Water slow leak detection script.

hi
I have a water meter with a dry contact that closes for every liter that flows through the meter. It is connected to a Weeder board which counts the pulses and sends the info to a variable in Indigo via AppleScript.


May i ask what kind of flowmeter and weeder board you are using?

Posted on
Wed Dec 13, 2017 5:22 am
CliveS offline
Posts: 761
Joined: Jan 10, 2016
Location: Medomsley, County Durham, UK

Re: Water slow leak detection script.

DomoPat wrote:
Now if only I could find a ZWave shutoff valve that works on European ZWave frequencies, I would be perfectly happy !


Have you looked at the POPP Flow Stop gas/water shut-off controller, not cheap at 118,62€ tax incl upwards plus shipping

Popp.jpg
Popp.jpg (3.1 KiB) Viewed 3085 times

https://shop.zwave.eu/products/special-applications/652/popp-flow-stop-gas/water-shut-off-controller

http://www.vesternet.com/z-wave-popp-flow-stop-gas-water-shut-off-controller-gen5

https://en.robbshop.nl/popp-water-en-gasafsluiter

https://www.uk-automation.co.uk/z-wave-water-gas-valve-actuator-popp-009501/

http://shop.domo-supply.com/en/actuators-and-receptors/633-popp-flow-stop-z-wave-pope009501.html

CliveS

Indigo 2023.2.0 : macOS Ventura 13.6.3 : Mac Mini M2 : 8‑core CPU and 10‑core GPU : 8 GB : 256GB SSD
----------------------------------------------------------------------------------
The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer

Posted on
Wed Dec 13, 2017 9:02 am
DomoPat offline
User avatar
Posts: 210
Joined: Jul 17, 2010
Location: Toulouse, France

Re: Water slow leak detection script.

May i ask what kind of flowmeter and weeder board you are using?


The water meter is the same type as this one for example:https://www.amazon.com/PRM-MULTI-JET-WATER-METER-OUTPUT/dp/B016OUVYJA/ref=sr_1_7?ie=UTF8&qid=1513176882&sr=8-7&keywords=water+meter+pulse

The Weeder board is the Pulse Count board (probably overkill as it can work with much faster pulses). I have 3 other Weeder boards connected to it (DigitalI/O, Analog and Relay) which makes my whole interface to the physical world. I had to write a piece of software to interface the serial port of he Weeder boards and send the info to Indigo. If I had to redo it now I would probably use an Arduino, but it did not exist when I started the project...

Posted on
Wed Dec 13, 2017 9:08 am
DomoPat offline
User avatar
Posts: 210
Joined: Jul 17, 2010
Location: Toulouse, France

Re: Water slow leak detection script.

CliveS wrote:
DomoPat wrote:
Now if only I could find a ZWave shutoff valve that works on European ZWave frequencies, I would be perfectly happy !


Have you looked at the POPP Flow Stop gas/water shut-off controller, not cheap at 118,62€ tax incl upwards plus shipping



Thank you, first time I see these sold in the EU, very helpful. And expensive indeed !

Posted on
Mon Aug 13, 2018 9:36 pm
hamw offline
Posts: 1212
Joined: Mar 31, 2008

Re: Water slow leak detection script.

@domopat, Have you had any success in converting your script to python?

Posted on
Tue Aug 14, 2018 12:13 am
siclark offline
Posts: 1960
Joined: Jun 13, 2017
Location: UK

Re: Water slow leak detection script.

DomoPat wrote:
Now if only I could find a ZWave shutoff valve that works on European ZWave frequencies, I would be perfectly happy !


I bought an electric water mains solenoid valve that can take 230v or 24 v DC that I control with a zwave relay in a nearby switch box to also give override control. They are usually normally closed so fail safe in event of power failure but I went with normally on so we still have water on event of power cut (hoping leak and power cut are not at same time with no one nearby to manually turn off power!)

Bought from watersavers.co.uk.




Sent from my iPhone using Tapatalk

Posted on
Tue Aug 14, 2018 6:06 am
DaveL17 offline
User avatar
Posts: 6742
Joined: Aug 20, 2013
Location: Chicago, IL, USA

Re: Water slow leak detection script.

hamw wrote:
@domopat, Have you had any success in converting your script to python?


Untested, but compiles without error:
Code: Select all
if int(indigo.variables["ConsoEauHeure"].value) > 0:
    indigo.variable.updateValue("EauFuiteAlerte", str(int(indigo.variables["EauFuiteAlerte"].value) + 1))
else:
    indigo.variable.updateValue("EauFuiteAlerte", "0")
indigo.server.log("Consommation d'eau de l'heure passée: {0} litres. Heures consécutives: {1}".format(indigo.variables["ConsoEauHeure"].value, indigo.variables["EauFuiteAlerte"].value))

I came here to drink milk and kick ass....and I've just finished my milk.

[My Plugins] - [My Forums]

Page 1 of 1

Who is online

Users browsing this forum: No registered users and 1 guest