Two Zone WiFi Water Timer

Moss or grass seed only requires many, very short watering cycles.
Lawn water timers typically cannot do this. Control from a web page.

Similar projects worth following
A shaded area of my backyard was always yellow grass and bare dirt with a small amount of moss. In order to get the moss to take over I installed an automatic water timer and soaker hoses a few of years ago. Recently I upgraded from Arduino Uno to NodeMCU.

Moss doesn't have roots so, unlike grass where you want to water deeply but not often, you need to water the surface frequently but only for a few minutes per hour. Most water timers cannot handle this many cycles per day.

I found only 3 minutes every 1-2 hours in the shade is enough to keep the area damp. This also applies to newly seeded areas where you really only need a small amount of water near the surface to keep it damp. The mist from soaker hoses won't wash away the seeds or create puddles like some sprinklers.

Of course you can also program fewer, longer cycles as well.

Once established moss eliminates most watering,  mowing, fertilizing and all other grass costs and forms a nice, soft, green carpet. It spreads quite slowly. In the US moss is worth $5/sq ft to purchase for those wanting to eliminate grass immediately.  Some people replace their entire lawn with moss. Never mow again.

Moss also grows in cold temperatures so in the spring it is already bright green under the snow. It spreads very slowly though so you have to be patient. 

The previous watering system used an Arduino Uno, Iduino WiFi shield and a 4 channel relay shield. Time comes from a battery backed DS3231 Real Time Clock so power failures don't affect controller time. I recently replaced it with a much less expensive WiFi NodeMCU, 4 channel relay board and DS3231 RTC. 

A web page is used to enable or disable the system remotely when rain is forecast or to manually turn the valves ON or OFF. Far more convenient to do this from your smartphone. No app needed. Works on any browser on any phone tablet or pc. The two independent zones are not on at the same time due to reduced flow. Zones 1 and 2 are on at even and odd number hours. The system uses Orbit 91592 watering valves. These latching valves are unusual in that to turn ON they only need a +24VDC 0.5 second pulse and a reverse polarity -24VDC 0.5 second pulse to turn OFF. 

A big advantage of this is they need no power to stay on. A big disadvantage of this is they need power to shut off. If the power fails when they are on they will stay on. Commercial timers with these valves are battery powered. The short green hose from the tap gets the Y valve far enough away and absorbs the shock when the valves snap off. 

A separate 24VDC power supply goes to two SPDT relays wired to create a DPDT relay used to change the polarity then to the other two relays for zone select. Polarity is chosen before zone select  and the valves powered. A 24VDC power supply for the valves, a 5VDC power supply for the NodeMCU and relays are all inside a plastic box outside. The power supplies keep the box warm and stop condensation. 5V for the relays comes from VU on the LoLin NodeMCU. Relays are active LOW. digitalWrite(D*, LOW); turns them ON.

Auto OFF means manual control of valves instead of time. Litres is calculated from ON seconds. Calibrated with home digital water meter.

Many more zones could be controlled with an 8 or 16  relay board connected to a MCP23017 16 I/O expander chip. Two I2C wires (same wires as real time clock, default is D1 and D2) address the chip so no extra I/O needed from NodeMCU. 

Precisely controlling lawn watering can greatly reduce your municipal water consumption. Stop paying sewer charges for water that doesn't go down the sewer. 

Programs for NodeMCU are uploaded wirelessly from a remote location within the same router range.
In this case uploaded from my laptop inside to NodeMCU outside. Wireless is far more convenient.

To see a list of other advantages of NodeMCU go to:

See also a low volume plant watering system:

This is the seventh home automation project using NodeMCU. Total saving $1,000+/year.

To see the rest go to:

plain - 3.23 kB - 05/26/2020 at 23:23


  • 1 × LoLin V3 NodeMCU12E - I prefer this 3.3V board since it includes 5V VU output from the USB charger to power relays.
  • 2 × 17X10 protoboard. I mount the NodeMCU board across two of them. This makes it easy to wire and creates two isolated areas .
  • 1 × CR2032 battery for real time clock
  • 1 × 4 channel relay board. 5V needed for coils. Active low so digitalWrite(D*, LOW) on a 3.3V max. output activates them
  • 1 × Dupont wires. M-M and M-F for relays

View all 13 components

  • Added temp sensor

    nodemcu12ecanada05/11/2022 at 17:45 0 comments

    I added a DS18B20 temp sensor so that in freezing weather it turns the water on in the night to keep new plants from freezing.

    Normal ON times are 7am,  9, 11, 1pm, 2, 3, 4, 5, 7 pm for 5 minutes during the day in a sunny spot.

    Freezing ON times if below 1.0C are 3,4,5,6 am for 5 minutes ON and 5 minutes OFF. Above 1.5C turns this OFF.

    Seconds ON values shown are from the previous hour.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates