It’s actually not that difficult to modify the unified firmware to support relay board. I assume what you mean is that each station is controlled by an individual GPIO pin. I believe the following two functions need to be changed:
– in OpenSprinkler.cpp, function apply_all_station_bits(): this is where the station status bits are pushed to the shift register on OpenSprinkler. Change this to assigning status to each station GPIO pin instead.
– in OpenSprinkler.cpp, function begin(): this is where you need to initialize the GPIO pins. So change the first 6 lines (configure shift register) to configure your GPIO pins.