The solution cost was to use Gardena automatic water distributor along with an single electronic valve from Hunter. This keeps the electrics simple and the connections plug and play. The control was done with openhab running on a raspberry pi, which triggered the valve via a remote 433mhz switch. You could obviously use a valve per circuit, but this requires another bridge to the PI and I had the 433Mhz already set up with pilight. As it is below you can also switch the valve with an electric pump, which I sometimes do when I have collected enough rain water.
Parts list:
1.) Remote switch - 25 Euro - Although I had this already
2.) Gardena automatic water distributer - 55 Euro
3.) 24 V AC Transformer - 12 Euro
4.) Hunter PGV-100 valve - 16 Euro - basically cheaper than Gardena version
5.) Raspberry PI - 40 Euro - although had this already as well
6.) Aurel 433Mhz transmitter
7.) Various garden houses to different sections of the garden, 4 circuits in use, but up to 6 can be used
View of the switch, the transformer and hunter valve |
Garden Distributor |
View of control panel in Openhab basic UI |
addons.cfg:
pilight:kaku.host=192.168.2.168
pilight:kaku.port=5000
pilight:kaku.delay=1000
pilight:kaku.host=192.168.2.168
pilight:kaku.port=5000
pilight:kaku.delay=1000
Pilight devices:
"devices": {
"desklamp": {
"protocol": [ "kaku_switch" ],
"id": [{
"id": 15831690,
"unit": 1
}],
"state": "off"
},
Items file:
Switch KakuDeskLamp "Water" {pilight="kaku#desklamp"}
Switch WaterTest "Water Test"
Switch StartProgram "Start Program"
Switch KakuSmallBathFan "Small bath fan" {pilight="kaku#smallbathfan"}
Number Irrigation_LawnMins "Lawn Sprinkler [%d mins]" <water> (Irrigation)
Number Irrigation_Pause "Break [%d mins]" <water> (Irrigation)
Number Irrigation_Multiplier "Multiplier [%d mins]" <water> (Irrigation)
Number Irrigation_Circuits "Circuits [%d]" <water> (Irrigation)
Number Irrigation_ActiveCircuit "Circuits [%d]" <water> (Irrigation)
Number Irrigation_Repeats "Repeats [%d]" <water> (Irrigation)
Items file:
Switch KakuDeskLamp "Water" {pilight="kaku#desklamp"}
Switch WaterTest "Water Test"
Switch StartProgram "Start Program"
Switch KakuSmallBathFan "Small bath fan" {pilight="kaku#smallbathfan"}
Number Irrigation_LawnMins "Lawn Sprinkler [%d mins]" <water> (Irrigation)
Number Irrigation_Pause "Break [%d mins]" <water> (Irrigation)
Number Irrigation_Multiplier "Multiplier [%d mins]" <water> (Irrigation)
Number Irrigation_Circuits "Circuits [%d]" <water> (Irrigation)
Number Irrigation_ActiveCircuit "Circuits [%d]" <water> (Irrigation)
Number Irrigation_Repeats "Repeats [%d]" <water> (Irrigation)
Openhab rules:
rule "Enabling irrigation"
when
Item StartProgram changed from OFF to ON or
Time cron "0 45 7 1/1 * ? *"
then
var i = 0
var Number lawnMins = Irrigation_LawnMins.state as DecimalType
var Number pause = Irrigation_Pause.state as DecimalType
var Number Multiplier = Irrigation_Multiplier.state as DecimalType
var Number Circuits = Irrigation_Circuits.state as DecimalType
var Number Repeats = Irrigation_Repeats.state as DecimalType
lawnMins = lawnMins*1000
if (Multiplier != 0)
{
lawnMins = lawnMins*Multiplier
}
logInfo("Irrigation", "Circuits " + Circuits + " multiplier " + Multiplier)
while ((i=i+1) < Circuits+1) {
var j = 0
while ((j=j+1) < Repeats+1) {
logInfo("Irrigation", "Repeat " + j)
sendCommand(KakuDeskLamp, ON)
Thread::sleep(100)
}
logInfo("Irrigation", i + " lawnMins " + lawnMins)
sendCommand(Irrigation_ActiveCircuit, i)
Thread::sleep(lawnMins.intValue) //*lawnMins)
j = 0
while ((j=j+1) < Repeats+20) {
logInfo("Irrigation", "Repeat " + j)
sendCommand(KakuDeskLamp, OFF)
Thread::sleep(100)
}
sendCommand(Irrigation_ActiveCircuit, 0)
Thread::sleep(1000*pause.intValue)
}
sendCommand(StartProgram, OFF)
end