Monday, June 2, 2014

OpenSprinkler Pi - smart sprinkler timer review

Due to the ongoing California drought, I decided to upgrade my old Toro sprinkler timer.  Some of the things that I wanted out of a new unit included:
  • Weather "smarts" - ie. the ability to lengthen watering during the hot months, shorten it during the winter and turn it off completely when it's raining (or will rain in the next day or two).
  • Logging capability - I want to see how much water I'm using on my lawn (our department of water & power bills sewer charges based on how much water is consumed - which isn't ideal if 75% of your water usage goes into your landscaping and not down the drain.
  • Remote control - the ability to view and control the system from afar, preferably using a web- or smartphone-based system.
 With these requirements, run-of-the-mill sprinkler timers from your local hardware store are out of the question.  The only commercial offerings are "smart" units, aka Weather-based Irrigation controllers.  The good thing is that many qualify for rebates.  The bad thing is that all that I could find are ridiculously expensive - starting at well over $200 and going up from there.  And most didn't satisfy one or more of my other requirements above.

The OpenSprinkler Pi controller
What to do?  I'm a tinkerer and a Linux aficionado, so I starting thinking - is there a way to make a Linux-based sprinkler contoller?  After some Googling, I came across the OpenSprinkler project.  A great idea, but Arduino-based.  I have no experience or expertise in Arduino systems.  But wait - the same guy now has OpenSprinkler Pi - a Raspberry Pi-based version.  Perfect!  He even has users who had written a number of programs to control the system in various ways - using your SmartPhone, using Google Calendar, using the web, and more.

So I ordered the parts:  The OpenSprinkler Pi 1.4 kit, a Raspberry Pi model A and a tiny USB WiFi dongle.  Total cost was around $150.00 Everything showed up within a couple of weeks and I set about assembling the unit.

Assembly: 

Quite quick.  Everything necessary is included - no soldering required.  Just mount the Raspberry Pi on the OpenSprinkler board with the included screws.  Then attach the WiFi dongle to the USB port.  I reused the power supply from my old Toro controller, which saved a few dollars.

A pleasant surprise when I received the OpenSprinkler Pi kit was that Ray had thoughtfully included a MicroSD-to-SD card adapter that allowed a MicroSD card to be used without having to cut the OpenSprinkler Pi case.

That said, I personally am not a fan of his new "one-size-fits-all" case.  Basically, he custom-designed a case for his original OpenSprinkler (Arduino-based) system.  It's great for that, but then he decided to shoehorn the Pi-based version to that case.  In order to make everything fit, he redesigned the PC board so that the Pi mounted at an odd angle.  But all of the connections were in different places, so few of the holes in the case are used for their original purposes. And because there's no display on the Pi-based system, the prominent display slot used on the Arduino-based system is covered with a piece of adhesive-based white paper.  It works fine, it just doesn't feel professional, and isn't something I'm proud to show to others who might be interested.

Testing:


Ray recommends testing the power output on the OpenSprinkler Pi board before attaching the Raspberry Pi to it.  I did so using a Volt/Ohmmeter (VOM) of mine and it tested fine with the Toro power supply.

I downloaded the software image from Ray's website and put it onto an 8 GB MicroSD card that I had laying around.  I decided to use Rich Zimmerman's excellent sprinklers_pi program, which seemed to be the most feature-complete and also provided a way to use the information from my personal weather station on Weather Underground to adjust watering times.  Cool!

One small issue I ran into:  Rich designed his software to designate Zone 1 as a pump controller (for those on wells).  So if you're not using a pump controller, you should leave Zone 1 unused.  If you have 8 zones to control, there's a workaround.

Operation:


Sprinklers_pi graph example
It works, and works well.  I'm able to see graphs showing how much time each zone is turned on, I can control the system via a web interface from home or away, I can choose to use Internet-supplied weather information to adjust my watering schedules (or not), and I can parse the sprinklers_pi log
files to keep track of how much time each zone is being watered.  Now I just have to figure out how many Gallons Per Minute (GPM) each zone uses, and I should be able to determine how much water is going into my lawn each month.


All in all, I'm satisfied with my new smart system, even if it didn't qualify for a rebate...   ;-)  I just hope he decides to redesign his case into a true all-in-one solution for all of his OpenSprinkler options (Arduino, Pi and BeagleBoard).