This was submitted by Karl Denninger
Application note for using Sprinkler control with both X10 and
Applied Digital RLY8-XA interfaces.
1. Compile and install the HOME DAEMON software available from
http://www.mcs.net/~karl. Make sure the Applied Digital driver
is installed ("x10-appdig"). This package requires a BRIDGE
and DOES NOT use the CPU-XA. Wire power and communication per
the standard APPDIG diagrams.
2. Before starting the package, configure at least one APPDIG RLY8XA.
READ the documentation in the HOME DAEMON software for this
procedure; its a bit tricky and must be followed exactly or
you'll get odd (or no) results.
In the example that follows, you have a MASTER water valve (from
your water source) and several ZONE VALVES. The rules for
operating the system are:
1. You MUST open the master valve when you open any zone
valve, otherwise you get no water. There is no pump
relay; this system sources water from municipal.
If you had a pump (ie: you draw from a lake or well)
then you would want to either substitute the master
valve drive for the relay drive to enable the pump
(CAUTION - the RLY8 will NOT safely drive most pump
motors! Use a contactor and drive the contactor coil
from the RLY8 or you'll fry the contacts on the RLY8
module!)
2. You MAY NOT open more than one zone valve at a time;
if you do the system will get insufficient pressure to
the zones and the sprinklers will malfunction. One
exception to this is that we have an x10 event that
trips both back yard zones if we get motion while the
alarm is armed; this "sprinkles" the potential intruder
(or cat, as the case may be) for a couple of minutes :-).
While the rotors on those zones aren't "full force" when
this happens, its more than enough to soak the intruding
animal (whether human or rodent)
3. The "pre-programming" of the RLY8 module sets a watchdog
timer for 30 seconds; if we do not talk to the module
for a half-minute, all relays are turned off. This is a
failsafe to prevent watering your lawn all night (or all
month if you're gone on vacation!)
4. The event code sets a SECOND watchdog on each zone through
an event that turns off the zone(s) after a maximum time
is reached. This event should NEVER fire; its there for
the case where you screwed up the programming of the other
event chains and accidentally left the sprinklers on!
A FINAL failsafe is that we shut off all sprinkler zones
each day at 12:00 noon. We do this because in our area
it is prohibited to sprinkle from noon to 6:00 PM, and
violating that ordinance can lead to stiff fines.
3. The relays are wired with all COMMON terminals connected together
on a bus with this leading to one of the transformer terminals
(24VAC; standard sprinkler system issue stuff). Each ZONE valve
wire is connected to a relay output's NO contact. The common ZONE
VALVE wire is connected to the other transformer terminal. This
causes a VALVE to be actuated when the relay is turned ON, and
disabled when turned OFF.
The event code which manages this process is as follows (note that this
is a partial file; the other events and declarations are omitted, and in
particular there are a couple of X10 devices missing from the first
declaration section that are necessary for a working file - the back
yard floodlights!) See the HOME DAEMON documentation for the format of this
file; it contains four declaration sections followed by event listings.
This is an ACTUAL working code snippet with these exceptions (it was cut
directly out of my current operating sprinkler configuration).......
BEGIN event file
B15 T Backyard-Motion
H1 T Alarm-Armed_Away
*
Unused - Old Exit Illumination
Outdoor-Dark
Evening-Lights
Sprinkle-Lawn
Sprinkle-Garden
Sprinkle-Intruder
*
Button-Sprinkle_Garden
*
Sprinkler-Master_Valve
Sprinkler-East_Front
Sprinkler-Center_Front(Garden)
Sprinkler-West_Front
Sprinkler-West_Back
Sprinkler-East_Back
*
Back Yard Motion - Alarm Armed
Night
J Backyard-Motion ON
X Alarm-Armed_Away ON
+
x Backyard-Floods ON
x Backyard-Porch_Light ON
x Backyard-Motion OFF
O Sprinkler-Master_Valve ON
O Sprinkler-West_Back ON
O Sprinkler-East_Back ON
V Sprinkle-Intruder 1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Sprinklers - Zone 1
o Sprinkler-Master_Valve = 0
o Sprinkler-East_Front = 0
o Sprinkler-Center_Front(Garden) = 0
o Sprinkler-West_Front = 0
o Sprinkler-West_Back = 0
o Sprinkler-East_Back = 0
V Sprinkle-Lawn = 1
V Sprinkle-Garden = 0
+
V Sprinkle-Lawn 1
O Sprinkler-Master_Valve ON
O Sprinkler-East_Front ON
O Sprinkler-Center_Front(Garden) OFF
O Sprinkler-West_Front OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back OFF
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Sprinklers - Zone 2
o Sprinkler-East_Front = 1 0:40
V Sprinkle-Lawn = 1
+
V Sprinkle-Lawn 1
O Sprinkler-Master_Valve ON
O Sprinkler-East_Front OFF
O Sprinkler-Center_Front(Garden) ON
O Sprinkler-West_Front OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back OFF
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Sprinklers - Zone 3
o Sprinkler-Center_Front(Garden) = 1 0:30
V Sprinkle-Lawn = 1
+
V Sprinkle-Lawn 1
O Sprinkler-Master_Valve ON
O Sprinkler-East_Front OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back ON
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Water Garden Off
V Sprinkle-Garden = 1
o Sprinkler-East_Back = 1 0:30
+
V Sprinkle-Garden 0
O Sprinkler-Master_Valve OFF
O Sprinkler-Center_Front(Garden) OFF
O Sprinkler-East_Front OFF
O Sprinkler-West_Front OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back OFF
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Turn Off Sprinklers (at noon every day)
T11:55
+
V Sprinkle-Lawn 0
V Sprinkle-Garden 0
O Sprinkler-Master_Valve OFF
O Sprinkler-East_Front OFF
O Sprinkler-Center_Front(Garden) OFF
O Sprinkler-West_Front OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back OFF
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Shut off Sprinkler - Intruder
V Sprinkle-Intruder = 1 0:02
+
V Sprinkle-Intruder 0
O Sprinkler-Master_Valve OFF
O Sprinkler-West_Back OFF
O Sprinkler-East_Back OFF
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
End file
How this all works:
1. At 4:00 AM on even days and weekends ("Water Lawn" event) the
"Sprinkle-Lawn" variable is set.
2. When this variable is seen to be turned on AND all zones are off,
the first zone is watered. Each zone "falls through" from there,
looking for the amount of time the previous was enabled and carring
through until all five zones have been watered.
3. Likewise, Wednesday and Thursday (but again, only on even days)
we do the same but only for the "Garden" (Zone 2) and the east
back yard section (Zone 5). This is to "even out" the "rainfall"
that these areas receive.
Note that in both cases if you are already watering something
when this process is supposed to initiate it will be ignored (this
is accomplished by testing ALL zones for OFF before turning
anything on). This allows you to manually start a cycle which
would otherwise "run into" another and not have them interfere
with each other (the first will run to completion and the regular
timed event will be ignored).
4. If motion is detected in the back yard AND the alarm is armed
(this is an X10 state) then we turn on the back yard zones for
two minutes to make sure the cat (or cat burgler) gets nice
and wet. This timer is re-tripped on each activation, so
the water keeps going until the motion stops (the sprinklers
don't trip the MS10s that I am using - thank God!). It is trivial
to put X10 triggers into this event file; you could have a Leviton
6400 button, for example, that enables watering if you want (a
manual "water the garden" button, for example). The motion example
shows how you can "cross the bridge" between X10 (or SECU16) inputs
and the RLY8 outputs.
5. We safeguard against overwatering with zone protection (watchdog)
events along with the RLY8's internal watchdog. We try to prevent
manual overrides from running over the noon hour by shutting off
the zones at noon every day (even if they're already off; that
does no harm; we actually do this five minutes before noon in
case the idiot cop in the neighborhood's watch is off by a few
minutes).
6. Note that from the HOME DAEMON web interface you CAN manually trip
any event. This allows you to enable watering of either the lawn
or garden on command with the click of a mouse. NOTE THAT IF YOU
DO THIS YOU CAN OVERRIDE THE DAY AND TIME RESTRICTIONS, SINCE
MANUAL ACTIVATION OF AN EVENT DOES NOT CHECK ANY OF THE TESTS!!
There is no current "lockout" provision to prevent you from getting
fined (by the local gendarme) in this case if you do something
stupid. HOME DAEMON's web interface is a CGI program which is
typically run with authentication enabled under APACHE or another
web server; note that it is a VERY BAD IDEA to enable this
capability without installing authentication around it (as doing so
will allow anyone to both see the state of your system and execute
any event you have defined)
What can be added to this:
1. A rain gauge. Current code (using a SECU16) will trivially support
a simple "wet/not wet" rain gauge (ie: the cork disk models) with
nothing more than a test to see if the switch is open or closed on
the activation of the first "enable" trip. The next revision of
the code will support arithmatic computation of "rainfall" for
tipping-bucket gauges, allowing VERY precise watering control.
NOTE THAT THE CURRENT CODE CANNOT SUPPORT THESE DUE TO LACK OF
SCALING SUPPORT IN THE SOFTWARE - this is planned for the next
release of HOME DAEMON (that release will also support temperature
sensors on the SECU16 if I can find a suitable probe for this
purpose).
END OF FILE