ISY-99i/ISY-26 INSTEON:Auto Irrigation Program v2
Functionality Highlights
- Automatically runs 7 days a week with scaling back based on the weather ie. rain and temperature (WeatherBug).
- Rain above zero inches pushes out the schedule
- Temperature below a set-point prevents running that day
- Temperature high above a set-point promotes daily runs
- Manual control is integrated with the Automatic mode ie. auto mode is user interruptable from an INSTEON device.
- Manual control to run irrigation and advance forward stations from an INSTEON device.
- Each "Station Timer" program also acts as a time-stamp for each station.
- Sends a start and finish notification for user tracking purposes.
Variables
- Irrigation_Station - tracks which station is currently running, is used for tracking next valve to run.
- Manual_Currently_Running - tracks if the irrigation is being run manually, used to prevent an auto run from interrupting a manual run.
- Weather_Rained_Last_36_Hours - has rained in the lat 36 hours, used to hold off runs if it has rained.
- Weather_Temp_Below_40_Degrees - checks if its below 40 degrees at set start time (11pm), holds off runs if its too cold.
- Weather_Temp_High_Above_70_Degrees - checks if the high temp for the day is above 70 degrees, for adding 7 day a week runs if its hot weather.
Evapotranspiration
With the upcoming ISY firmware which will include the new evapotranspiration feature I am thinking about how it will fit into this design. Some ideas are it would be used to control the length of the irrigation station run time. Or it might be used to handle the amount of days the irrigation runs each week instead of using the high temp as the current design does. Or maybe it will replace all the weather part of this code and just make the whole thing much more simpler than it currently is which is always good.
ISY Programs File
- AutoIrrig.zip - this file needs unzipping first then loaded from the programs tab. See the Wiki section on the programs tree view for more info on importing programs.
Folder: Auto
Auto Scheduled Timer -M-W-F-
If On Mon, Wed, Fri Time is 11:00:00PM And $Manual_Currently_Running is 0 And $Weather_Rained_Last_36_Hours is 0 And $Weather_Temp_Below_40_Degrees is 0 And $Weather_Temp_High_Above_70_Degrees is 1 Then Run Program 'Station1 Timer' (Then Path)
Auto Scheduled Timer S-T-T-S
If On Sat, Sun, Tue, Thu Time is 11:00:00PM And $Manual_Currently_Running is 0 And $Weather_Rained_Last_36_Hours is 0 And $Weather_Temp_Below_40_Degrees is 0 Then Run Program 'Station1 Timer' (Then Path)
Weather Rain Delay 36 Hours
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $Weather_Rained_Last_36_Hours = 1 Wait 36 hours $Weather_Rained_Last_36_Hours = 0 Keep the rain status for 36 hours then reset it.
Weather Rain Today Check
If Module 'Climate' Rain Today is not 0 " Then Stop program 'Weather Rain Delay 36 Hours' Run Program 'Weather Rain Delay 36 Hours' (Then Path)
Weather Temp Below 40 Degrees
If Module 'Climate' Temperature < 40 °F Then $Weather_Temp_Below_40_Degrees = 1 Else $Weather_Temp_Below_40_Degrees = 0 This is in a separate program to avoid having the temperature event trigger a false start of the irrigation system.
Weather Temp High Above 70 Degrees
If Module 'Climate' Temperature High > 70 °F Then $Weather_Temp_High_Above_70_Degrees = 1 Else $Weather_Temp_High_Above_70_Degrees = 0 This is in a separate program to avoid having the temperature event trigger a false start of the irrigation system.
Folder: Manual
Any "Irrigation All" Stations On
If Status 'Irrigation / Irrigation1 Front Plants' is not Off Or Status 'Irrigation / Irrigation2 Empty' is not Off Or Status 'Irrigation / Irrigation3 Back Daylilies' is not Off Or Status 'Irrigation / Irrigation4 Back Fruit Trees' is not Off Or Status 'Irrigation / Irrigation5 Back Maple Trees' is not Off Or Status 'Irrigation / Irrigation6 Back Lawn1' is not Off Or Status 'Irrigation / Irrigation7 Back Lawn2' is not Off Or Status 'Irrigation / Irrigation8 Back Lawn3' is not Off
Manual Currently Running Reset
If Program 'Any "Irrigation All" Stations On' is False Then $Manual_Currently_Running = 0 This is a safety to make sure manual mode does not get left on.
Manual Trigger Fast Off
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast Off Then Run Program 'Stations All Off' (Then Path) Listens for manual remote control to turn the irrigation system off.
Manual Trigger Station1
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 0 Then $Manual_Currently_Running = 1 Run Program 'Station1 Timer' (Then Path)
Manual Trigger Station2
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 1 Then $Manual_Currently_Running = 1 Run Program 'Station2 Timer' (Then Path)
Manual Trigger Station3
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 2 Then $Manual_Currently_Running = 1 Run Program 'Station3 Timer' (Then Path)
Manual Trigger Station4
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 3 Then $Manual_Currently_Running = 1 Run Program 'Station4 Timer' (Then Path)
Manual Trigger Station5
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 4 Then $Manual_Currently_Running = 1 Run Program 'Station5 Timer' (Then Path)
Manual Trigger Station6
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 5 Then $Manual_Currently_Running = 1 Run Program 'Station6 Timer' (Then Path)
Manual Trigger Station7
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 6 Then $Manual_Currently_Running = 1 Run Program 'Station7 Timer' (Then Path)
Manual Trigger Station8
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 7 Then $Manual_Currently_Running = 1 Run Program 'Station8 Timer' (Then Path)
Manual Trigger Station9 All Off
If Control 'Inside / Inside RL4 Irrigation On' is switched Fast On And $Irrigation_Station is 8 Then Run Program 'Stations All Off' (Then Path)
Folder: Station Engine
Irrigation Finished
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Send Notification to 'Mark's Email'
Irrigation Started
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Send Notification to 'Mark's Email'
Station1 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Run Program 'Irrigation Started' (Then Path) Set 'Irrigation / Irrigation1 Front Plants' On $Irrigation_Station = 1 Wait 90 minutes Run Program 'Station2 Timer' (Then Path)
Station2 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation2 Empty' On $Irrigation_Station = 2 Wait 5 seconds Run Program 'Station3 Timer' (Then Path)
Station3 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation3 Back Daylilies' On $Irrigation_Station = 3 Wait 90 minutes Run Program 'Station4 Timer' (Then Path)
Station4 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation4 Back Fruit Trees' On $Irrigation_Station = 4 Wait 90 minutes Run Program 'Station5 Timer' (Then Path)
Station5 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation5 Back Maple Trees' On $Irrigation_Station = 5 Wait 90 minutes Run Program 'Station6 Timer' (Then Path)
Station6 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation6 Back Lawn1' On $Irrigation_Station = 6 Wait 10 minutes Run Program 'Station7 Timer' (Then Path)
Station7 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation7 Back Lawn2' On $Irrigation_Station = 7 Wait 10 minutes Run Program 'Station8 Timer' (Then Path)
Station8 Timer
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Irrigation / Irrigation8 Back Lawn3' On $Irrigation_Station = 8 Wait 10 minutes Run Program 'Stations All Off' (Then Path)
Stations All Off
If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $Manual_Currently_Running = 0 Stop program 'Station1 Timer' Stop program 'Station2 Timer' Stop program 'Station3 Timer' Stop program 'Station4 Timer' Stop program 'Station5 Timer' Stop program 'Station6 Timer' Stop program 'Station7 Timer' Stop program 'Station8 Timer' Set 'Irrigation / Irrigation1 Front Plants' Off Set 'Irrigation / Irrigation2 Empty' Off Set 'Irrigation / Irrigation3 Back Daylilies' Off Set 'Irrigation / Irrigation4 Back Fruit Trees' Off Set 'Irrigation / Irrigation5 Back Maple Trees' Off Set 'Irrigation / Irrigation6 Back Lawn1' Off Set 'Irrigation / Irrigation7 Back Lawn2' Off Set 'Irrigation / Irrigation8 Back Lawn3' Off $Irrigation_Station = 0 Run Program 'Irrigation Finished' (Then Path) Let's cover everything just to make sure its reliable.