Jump to content

My EZFlora Program


zerop

Recommended Posts

I had searched through posts about several peoples EZFlora watering programs when I wanted to set up my own but in the end didn’t find anyone that had done anything that I wanted.  So I borrowed ideas from some of the posts I found and added to it.  Now that I’ve got it up and running and pretty well tested I thought I’d share it with you.  I won’t post the details as if no one cares then I’d save myself a lot of time in writing.  However if you’re interested let me know and I can try to explain how I did it.

 

Premise:

Do not water X numbers of days a week but rather water dependent upon temperature.  Several days of weather over 90 degrees, water 3 times a week, weather under 65 degrees, water only once a week or less and delay watering X number of days dependent upon rainfall.

 

Overview:

Every day at the end of the day a program looks at the high temperature for the day (weather module) and increments (adds to) a variable “Score” with a value dependent upon how hot that day was, the hotter the day, the higher the value added to “Score”.  After this variable reaches a set limit the sprinklers run the next day.

 

At the end of each day another program checks to see if there is rain in the forecast for the next day (again, weather module), if so, then if watering is supposed to take place the next day it is put on hold for one day.

 

Also at the end of each day another program checks to see how much it rained that day (yet again, weather module).  Dependent on the amount of rainfall the same variable “Score” is negatively incremented dependent upon the amount of rain that day.  The more rain received, the more is subtracted from the “Score” variable.

 

That’s the basic premise of it.  Has someone done this approach already and I just didn’t find it in a search?

Link to comment

My approach is a bit different, but may be of some use to you as if uses both climate and forecast data to determine when watering is needed.  Note that rather than temperature, I use the Irrigation Requirement parameter from the Irrigation module to determine watering requirements.

 

It's quite simple - the following 4 programs "check" twice per day at optimal watering times whether to launch a watering session...

Irrig_Sched_All_SMTWTFS - [ID 0033][Parent 007E]

If
        (
             Time is  5:00:00AM
          Or Time is  4:00:00PM
        )
    And Program 'Irrig_Required' is True
    And Program 'Irrig_Available' is True
    And Program 'Irrig_Permitted' is True
 
Then
        $i.IRRIG.bScheduledRun  = 1
        Run Program 'Irrig_Zone_All' (Then Path)
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Required - [ID 004E][Parent 007C]

If
        Module 'Climate' Irrigation Requirement >= 0.18 inches
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Permitted - [ID 004D][Parent 007C]

If
        Module 'Climate' Low Temperature > 40 °F
    And Module 'Climate' 24h Low Temperature > 40 °F
    And Module 'Climate' Wind Speed < 20 mph
    And Module 'Climate' Gust Wind Speed < 20 mph
    And Module 'Climate' Total Rain Today <= 0.09 "
    And Module 'Climate' 24h Rain < 0.36 "
    And Program 'Irrig_Event_Rain_Sensor_Wet' is False
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Available - [ID 00C1][Parent 007C]

If
        Status  'Irrigation / Zone1' is Off
    And Status  'Irrigation / Zone2' is Off
    And Status  'Irrigation / Zone3' is Off
    And Status  'Irrigation / Zone4' is Off
    And Status  'Irrigation / Zone5' is Off
    And Status  'Irrigation / Zone6' is Off
    And Status  'Irrigation / Zone7' is Off
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')

 

Link to comment

 

My approach is a bit different, but may be of some use to you as if uses both climate and forecast data to determine when watering is needed.  Note that rather than temperature, I use the Irrigation Requirement parameter from the Irrigation module to determine watering requirements.

 

It's quite simple - the following 4 programs "check" twice per day at optimal watering times whether to launch a watering session...

Irrig_Sched_All_SMTWTFS - [ID 0033][Parent 007E]

If
        (
             Time is  5:00:00AM
          Or Time is  4:00:00PM
        )
    And Program 'Irrig_Required' is True
    And Program 'Irrig_Available' is True
    And Program 'Irrig_Permitted' is True
 
Then
        $i.IRRIG.bScheduledRun  = 1
        Run Program 'Irrig_Zone_All' (Then Path)
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Required - [ID 004E][Parent 007C]

If
        Module 'Climate' Irrigation Requirement >= 0.18 inches
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Permitted - [ID 004D][Parent 007C]

If
        Module 'Climate' Low Temperature > 40 °F
    And Module 'Climate' 24h Low Temperature > 40 °F
    And Module 'Climate' Wind Speed < 20 mph
    And Module 'Climate' Gust Wind Speed < 20 mph
    And Module 'Climate' Total Rain Today <= 0.09 "
    And Module 'Climate' 24h Rain < 0.36 "
    And Program 'Irrig_Event_Rain_Sensor_Wet' is False
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')
Irrig_Available - [ID 00C1][Parent 007C]

If
        Status  'Irrigation / Zone1' is Off
    And Status  'Irrigation / Zone2' is Off
    And Status  'Irrigation / Zone3' is Off
    And Status  'Irrigation / Zone4' is Off
    And Status  'Irrigation / Zone5' is Off
    And Status  'Irrigation / Zone6' is Off
    And Status  'Irrigation / Zone7' is Off
 
Then
   - No Actions - (To add one, press 'Action')
 
Else
   - No Actions - (To add one, press 'Action')

Thanks fir posting this.  I have been thinking about getting on and was debating the setup.  this seems perfect.  

Link to comment

 

Thanks fir posting this.  I have been thinking about getting on and was debating the setup.  this seems perfect.  

 

 

Agreed, thank you Bill. 

 

This post interests me because I want to further maximize water savings this summer. I don't want to set up a full Wx station, but Wx reported rainfall has been an issue, causing over and under watering. I'm getting the actual rainfall on my property via the hydreon rain sensor and iolinc, and I've continued to write my own irrigation routines around it, as it is super accurate. That with a model like Bill's or zerop's would make it better.

 

 

I had searched through posts about several peoples EZFlora watering programs when I wanted to set up my own but in the end didn’t find anyone that had done anything that I wanted.  So I borrowed ideas from some of the posts I found and added to it.  Now that I’ve got it up and running and pretty well tested I thought I’d share it with you.  I won’t post the details as if no one cares then I’d save myself a lot of time in writing.  However if you’re interested let me know and I can try to explain how I did it.

 

 

zerop, could you share your programs as well? The programs can be copied / pasted in and tagged as code as Bill did.

 

Paul

Link to comment

Here are my programs.  I'm sure there are much nicer ways to write them but with my limited coding skills, this is what you/I get.  Let me know if there are things in here that aren't easily understood why I did them and I'll try to explain (if I can remember now).

 

 

 

Checks tomorrow's forecast to see if there is going to be rain, if so then sets variable "RainDelay" to stop watering next morning if it was planned.

RainCheck - [ID 0116][Parent 01BF]
 
If
        Time is 11:55:00PM
    And Module 'Climate' Rain Tomorrow >= 0.15 "
 
Then
        $RainDelay  = 1
        $RainDelay Init To 1
 
Else
   - No Actions - (To add one, press 'Action')

 
 
 
These sets of programs check how much rain there was this day and scores appropriately (subtracts a value from variable "Score").  Also sets variable RainToady to 1 so today's temperature readings are not scored.

RainH - [ID 010E][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.75 "
    And Module 'Climate' Total Rain Today < 0.9 "
 
Then
        $ScoreGrass -= 50
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainHH - [ID 0111][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.9 "
    And Module 'Climate' Total Rain Today <= 1 "
 
Then
        $ScoreGrass -= 60
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainHHH - [ID 010F][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today > 1 "
 
Then
        $ScoreGrass  = 0
        $ScoreGrass Init To 0
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainL - [ID 010C][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.45 "
    And Module 'Climate' Total Rain Today < 0.6 "
 
Then
        $ScoreGrass -= 30
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainLL - [ID 010B][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.3 "
    And Module 'Climate' Total Rain Today < 0.45 "
 
Then
        $ScoreGrass -= 20
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainLLL - [ID 010A][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.15 "
    And Module 'Climate' Total Rain Today < 0.3 "
 
Then
        $ScoreGrass -= 10
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')
RainM - [ID 010D][Parent 01BF]
 
If
        Time is 11:35:00PM
    And Module 'Climate' Total Rain Today >= 0.6 "
    And Module 'Climate' Total Rain Today < 0.75 "
 
Then
        $ScoreGrass -= 40
        $ScoreGrass Init To $ScoreGrass
        $RainToday  = 1
 
Else
   - No Actions - (To add one, press 'Action')

 
This program checks if it is ok to turn the sprinklers on.  "ColdDelayGrass" is a check to see if the outside temperature is <40 degrees, if so then watering the grass won't happen until later in the morning.

CheckWater_Grass - [ID 0112][Parent 0120]
 
If
        Time is  5:00:00AM
    And $ScoreGrass >= 70
    And $ColdDelayGrass is 0
    And $RainDelay is 0
 
Then
        Run Program 'Water_Grass' (Then Path)
 
Else
   - No Actions - (To add one, press 'Action')

 
This is an evening cleanup and reset of variables.

Reset - [ID 0109][Parent 0120]
 
If
        Time is 11:45:00PM
 
Then
        $RainToday  = 0
        $RainToday Init To 0
        $RainDelay  = 0
        $RainDelay Init To 0
        $ColdDelayGrass  = 0
        $ColdDelayGrass Init To 0
        $ColdDelayOther  = 0
        $ColdDelayOther Init To 0
 
Else
   - No Actions - (To add one, press 'Action')

 
 
This program is another cleanup of a variable.  Resets it to 0 is it is a negative value.

ScoreCleanup_Grass - [ID 0110][Parent 0120]
 
If
        Time is 11:50:00PM
    And $ScoreGrass < 0
 
Then
        $ScoreGrass  = 0
        $ScoreGrass Init To 0
 
Else
   - No Actions - (To add one, press 'Action')

 
 
 
Program to water the grass. Is initiated from the "CheckWater_Grass" program (above).

Water_Grass - [ID 0113][Parent 0120]
 
If
   - No Conditions - (To add one, press 'Schedule' or 'Condition')
 
Then
        $Watering  = 1
        Set 'Sprinklers / Back / 6BackGrass' On
        Wait  25 minutes 
        Set 'Sprinklers / Front / 4FrontGrass' On
        Wait  20 minutes 
        Set 'Sprinklers / Back / 6BackGrass' On
        Wait  25 minutes 
        Set 'Sprinklers / Front / 7SidewalkGrass' On
        Wait  10 minutes 
        Set 'Sprinklers / Front / 7SidewalkGrass' Off
        Wait  10 minutes 
        Set 'Sprinklers / Back / 6BackGrass' On
        Wait  25 minutes 
        Set 'Sprinklers / Back / 6BackGrass' Off
        $ScoreGrass  = 0
        $ScoreGrass Init To 0
        $Watering  = 0
 
Else
   - No Actions - (To add one, press 'Action')

 
 
This is the program to check the temperature outside and set the variable "ColdDelayGrass" if it is too cold to water.  Watering will be done later in the morning if it is too cold.

ColdCheck_Grass - [ID 0114][Parent 01C0]
 
If
        Time is  4:59:00AM
    And Module 'Climate' Temperature < 40 °F
 
Then
        $ColdDelayGrass  = 1
        $ColdDelayGrass Init To 1
 
Else
   - No Actions - (To add one, press 'Action')

 
 
 
This is the program that will water the grass later in the morning (or evening) if it was too cold to run earlier.

ColdDelayRun_Grass - [ID 0115][Parent 01C0]
 
If
        (
             Time is  9:00:00AM
          Or Time is  8:00:00PM
        )
    And Module 'Climate' Temperature >= 40 °F
    And $ColdDelayGrass is 1
    And $ScoreGrass >= 70
    And $RainDelay is 0
 
Then
        Run Program 'Water_Grass' (Then Path)
        $ColdDelayGrass  = 0
        $ColdDelayGrass Init To 0
 
Else
   - No Actions - (To add one, press 'Action')

 
 
 
These sets of programs score the variable "ScoreGrass" dependent upon the high temperature of the day (adds values to variable "ScoreGrass").  This is the same variable that values are subtracted from when it rains.

TempH - [ID 0106][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 85 °F
    And Module 'Climate' High Temperature < 90 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 23
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempHH - [ID 0107][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 90 °F
    And Module 'Climate' High Temperature < 95 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 28
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action)
TempHHH - [ID 0108][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 95 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 35
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempL - [ID 0104][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 75 °F
    And Module 'Climate' High Temperature < 80 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 14
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempLL - [ID 0103][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 70 °F
    And Module 'Climate' High Temperature < 75 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 12
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempLLL - [ID 0102][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 65 °F
    And Module 'Climate' High Temperature < 70 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 10
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempLLLL - [ID 0101][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature < 65 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 7
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')
TempM - [ID 0105][Parent 01C0]
 
If
        Time is 11:40:00PM
    And Module 'Climate' High Temperature >= 80 °F
    And Module 'Climate' High Temperature < 84 °F
    And $RainToday is 0
 
Then
        $ScoreGrass += 18
        $ScoreGrass Init To $ScoreGrass
 
Else
   - No Actions - (To add one, press 'Action')

That's is.  Sorry if I've posted way too much.

Link to comment

Thanks fir posting this.  I have been thinking about getting on and was debating the setup.  this seems perfect.  

You're very welcome.  If you have any questions or see any opportunities to improve upon it, please share!

 

Agreed, thank you Bill. 

 

This post interests me because I want to further maximize water savings this summer. I don't want to set up a full Wx station, but Wx reported rainfall has been an issue, causing over and under watering. I'm getting the actual rainfall on my property via the hydreon rain sensor and iolinc, and I've continued to write my own irrigation routines around it, as it is super accurate. That with a model like Bill's or zerop's would make it better.

 

 

 

zerop, could you share your programs as well? The programs can be copied / pasted in and tagged as code as Bill did.

 

Paul

Gotta hand it to you Paul, you find the coolest toys...  :mrgreen:

 

That rain sensor looks like quite an improvement over the Rain Bird mechanical cork / contact model that I currently have attached via an IOLinc.  It's the legacy sensor that I was using with my old irrigation controller, and though it's adequate as a downfall detector, allowing me to cancel irrigation just before or during a session, something that allowed actual measurement would be better suited here...  I may consider one of these.  What mode do you yours in..? 

 

I've been running this program with minimal supervision since mid-summer last year.  Predictably it's weakest link has been HAM weather drop-outs and inaccuracies, this is why I use wide margins on the "Total Rainfall / Forecast Rainfall" data, but thankfully HAM reliability seems to have improved / stabilized considerably since I wrote the program, so I may be able to tighten those up a bit.  Since I turned the system on a month ago it just works...

 

zerop, I second Paul's request - I'd love to see your programs...

 

--Bill   

Link to comment

Here are my programs.  I'm sure there are much nicer ways to write them but with my limited coding skills, this is what you/I get.  Let me know if there are things in here that aren't easily understood why I did them and I'll try to explain (if I can remember now).

 

Thank you, very interesting approach and things to think about as I look to improve my setup. 

 

 

 

That rain sensor looks like quite an improvement over the Rain Bird mechanical cork / contact model that I currently have attached via an IOLinc.  It's the legacy sensor that I was using with my old irrigation controller, and though it's adequate as a downfall detector, allowing me to cancel irrigation just before or during a session, something that allowed actual measurement would be better suited here...  I may consider one of these.  What mode do you yours in..? 

--Bill   

 

Bill-

I use tipping bucket mode and count up .01" per iolinc "click", which is how its configured out of the box. When it gets to 11 (.11"), that sets a state variable that indicates the next cycle can be skipped. Mine is on a old flaky iolinc that doesn't always respond to queries, but very faithfully 'clicks away' when its raining.

 

I recommend the hydreon's tipping bucket mode, and an iolinc. Tipping bucket mode gives a real datapoint to manage / log irrigation from.

 

While the ezflora has a raingauge breakout kit that can be used with the hydreon's irrigation mode (emulates the cork sensor's behavior), I don't recommend it. The ezflora will stop responding to zone commands whenever its rain sensor inputs are connected. It also means locating the hydreon near the ezflora for wiring, which I didn't want to do.

 

For other Wx data, I use the climate module and Detroit Metro Airport (DTW) Wx station. Its ok for temp and wind values, and because its from an airport, I don't worry about it being "down".

 

 

Paul

Link to comment

I own an EXFLORA and I have bought the Irrigtion module. But I have a hard time figuring out how to use these two together.

In this topic, I see bipto's programs that use "Module 'Climate' Irrigation Requirement >= 0.18 inches" but bipto also irrigates all the zones. (Just using Bipto and an example)

My lawn needs more frequent water than my fruit trees. The "irrigation requirement" is different for the different zoes.

The "crop coefficient/plant type" is differrent in the different zones, but the irrigation module only has one "crop coefficient/plant type".

I understand that I can adjust the amount of water for each zone, but that is a hack.

My fruit trees don't need nor do they want water every 2 days but my lawn does.

Moreover, after irrigation, I'm suppose to "reset" the "irrigation required" via "cycle complete". This further enforces that all zones have to be treated the same.

 

Am I missing he magic of the "irrigation module"?

 

Thanks,

 

Bert

Link to comment

I own an EXFLORA and I have bought the Irrigtion module. But I have a hard time figuring out how to use these two together.

In this topic, I see bipto's programs that use "Module 'Climate' Irrigation Requirement >= 0.18 inches" but bipto also irrigates all the zones. (Just using Bipto and an example)

My lawn needs more frequent water than my fruit trees. The "irrigation requirement" is different for the different zoes.

The "crop coefficient/plant type" is differrent in the different zones, but the irrigation module only has one "crop coefficient/plant type".

I understand that I can adjust the amount of water for each zone, but that is a hack.

My fruit trees don't need nor do they want water every 2 days but my lawn does.

Moreover, after irrigation, I'm suppose to "reset" the "irrigation required" via "cycle complete". This further enforces that all zones have to be treated the same.

 

Am I missing he magic of the "irrigation module"?

 

Thanks,

 

Bert

 

I don't have any tree / shrub zones (yet).  I imagine that their watering requirement would be different than the lawn, and would probably be handled through separate programming.  Not sure whether the Irrigation Module would be used for those - I too would be interested in hearing how others handle that scenario.  As far my lawn is concerned, my irrigation system is set up to put down an average of 0.18" across all zones in one watering session, so I use the Irrigation Module to fire off the program when the irrigation requirement exceeds that number...

 

--Bill

Link to comment

I own an EXFLORA and I have bought the Irrigtion module. But I have a hard time figuring out how to use these two together.

In this topic, I see bipto's programs that use "Module 'Climate' Irrigation Requirement >= 0.18 inches" but bipto also irrigates all the zones. (Just using Bipto and an example)

My lawn needs more frequent water than my fruit trees. The "irrigation requirement" is different for the different zoes.

The "crop coefficient/plant type" is differrent in the different zones, but the irrigation module only has one "crop coefficient/plant type".

I understand that I can adjust the amount of water for each zone, but that is a hack.

My fruit trees don't need nor do they want water every 2 days but my lawn does.

Moreover, after irrigation, I'm suppose to "reset" the "irrigation required" via "cycle complete". This further enforces that all zones have to be treated the same.

 

Am I missing he magic of the "irrigation module"?

 

Thanks,

 

Bert

 

Bert,

 

I'm in the same situation as you.  This is why I didn't bother with the Irrigation Module and just use the Climate Module and daily temperatures to determine watering schedules for each my my different zones.

Link to comment

Archived

This topic is now archived and is closed to further replies.


  • Recently Browsing

    • No registered users viewing this page.
  • Who's Online (See full list)

    • There are no registered users currently online
  • Forum Statistics

    • Total Topics
      36.9k
    • Total Posts
      370.2k
×
×
  • Create New...