After becoming increasingly irritated with the unreliability and lack of features on the archaic Toro irrigation controller stuffed in our crawl space, I decided to bring our landscape technology into the 21st century.

Bonus points if you can spot the dead gecko…

OpenSprinkler seems to be the best in the DIY irrigation game at this time, but their hardware prices are out of my range. So…I pulled out a spare RPi2 from storage, ordered up a cheap relay board made of pure Chinesium, and got to work.

The no-name relay board was supposed to come with documentation and code examples, but alas the package contained only the board itself, and a small package of (not enough) mounting screws. A quick search turned up a similar board on Amazon, which led me to a wiki with more info and the promised documentation. The board seems to be known as the WaveShare 15423 (UPC 614961953253) on some sites.

After flashing Raspbian Lite, I installed OpenSprinkler using the instructions on their site. Everything went smoothly, and I was able to pull up the web interface. The interface seemed pretty simple, but I was not able to get any of the board relays to engage when manually triggering the sprinkler zones.

Back to the documentation. The board is supposed to be directly addressable using the Pi’s GPIO pins, and I found a chart showing the pin mapping on the documentation page found earlier. After digging around in the OpenSprinkler interface, I found the screen for configuring each station (Gear icon by the station name->Advanced tab). Each of the 8 default stations was set to Station Type ‘Standard’. I set each of them to ‘GPIO’ type instead, and used the pin mapping chart to set the GPIO number accordingly. Then after wasting a bunch of time troubleshooting, I also determined that I needed to set each station Active State to ‘Low’, rather than the default of ‘High’.

Pay no attention to the single ziptie holding the whole thing together…

…And there you have it! With the relays now clicking happily on each station trigger command, I removed the Toro controller from its housing and replaced it with the new board. I used the old Toro 24VAC transformer to power the relays in order to supply the required voltage to the valve solenoids, and an old 5VDC power supply to power up the logic side of the board (the relay board also supplies power to the RPi).

Zones are now happily cycling on and off, and for extra credit I’ll be eventually integrating this into HomeAssistant.