Hi OH Community,
I have a slight issue with a Rule that i need to run my irrigation for my house.
I have the below that works but the rule contains 3 x Master Valves (Commented in code) that need to come on while certain valves are running. I have ordered then so the masters can be on for a clock time.
Anyone got any example of including the master valves or how i could fit them into the code below? so they come on as required without disrupting the sequential time flow of the sub valves.
I did have the master valves all come on at once under the top rule but it seemed to have issues with triggering multiple switches at the same time stamp.
Any help would be grand.
rule "Goudie House Startup"
when
System started
then
postUpdate(ScheduleFront_StartTime, "06:00")
postUpdate(ScheduleBack_StartTime, "07:00")
postUpdate(ScheduleFront_RunTime, "1")
postUpdate(ScheduleBack_RunTime, "1")
end
//Front - Rules
rule "Front - Rules"
when
Item ManualFront received command ON
then
if (ScheduleFront.state == ON) {
var FrontRunTime = 1
var FrontRunTimeMaster = 15 //Need to run the duration of the SubValves
var DateTime startTime = now
var DateTime endTime
var DateTime endTimeMaster
logInfo("Front - Rules", "Running Front Scheduler")
logInfo("Front Rules", "Start Time: " + startTime)
//PIN02 - Mater - Front (Needs to be on for PIN03, 04, 05 06, 07)
if (FrontRunTime > 0) {
logInfo("Schedule", "MASTERS - Start Time: " + startTime)
endTimeMaster = startTime.plusMinutes(FrontRunTimeMaster)
logInfo("Schedule", "MASTERS - End Time: " + endTimeMaster)
createTimer(startTime) [| sendCommand(PIN02, ON) ]
createTimer(endTimeMaster) [| sendCommand(PIN02, OFF) ]
}
//PIN03 - Driveway - Bottom - Front
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN03 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN03 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN03, ON) ]
createTimer(endTime) [| sendCommand(PIN03, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN04 - Driveway - Bottom - Back
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN04 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN04 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN04, ON) ]
createTimer(endTime) [| sendCommand(PIN04, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN05 - Driveway - Top - Front
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN05 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN05 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN05, ON) ]
createTimer(endTime) [| sendCommand(PIN05, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN06 - Driveway - Top - Back
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN06 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN06 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN06, ON) ]
createTimer(endTime) [| sendCommand(PIN06, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN07 - Front - House
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN07 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN07 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN07, ON) ]
createTimer(endTime) [| sendCommand(PIN07, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN19 - Master - Front Side (Needs to run when PIN08 on)
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN19 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN19 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN19, ON) ]
createTimer(endTime) [| sendCommand(PIN19, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN08 - Front - Side Fence
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN08 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN08 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN08, ON) ]
createTimer(endTime) [| sendCommand(PIN08, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN17 - Master - Nature Strip (Needs to run with PIN14 and 15 On)
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN17 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN17 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN17, ON) ]
createTimer(endTime) [| sendCommand(PIN17, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN15 - Nauture Strip
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN15 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN15 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN15, ON) ]
createTimer(endTime) [| sendCommand(PIN15, OFF) ]
startTime = endTime.plusSeconds(1)
}
//PIN14 - Driveway Trees
if (FrontRunTime > 0) {
logInfo("Schedule", "PIN14 Start Time: " + startTime)
endTime = startTime.plusMinutes(FrontRunTime)
logInfo("Schedule", "PIN14 End Time: " + endTime)
createTimer(startTime) [| sendCommand(PIN14, ON) ]
createTimer(endTime) [| sendCommand(PIN14, OFF) ]
startTime = endTime.plusSeconds(1)
}
}
end
Thanks