Thanks to this post and little more digging, I’ve got this rule working.
In short, it keeps an eye on gMinute
and gHour
groups, so that minutes and hours are constrained, but also that when the minutes exceed the limits, it adjusts the coresponidng hour
I’ve left the logInfo
lines in so you can see my working out.
import org.openhab.core.model.script.ScriptServiceUtil
rule "Confine Minute"
when
Member of gMinute changed
then
logInfo("Minute Limiting", "Minute Value of "+triggeringItem.name+" Currently "+triggeringItem.state)
if (triggeringItem.state > 59) {
sendCommand(triggeringItem.name,"0")
// logInfo("Alarm Times",triggeringItem.name.split('Min').get(0)+"Hour")
var HourName = ""
HourName = triggeringItem.name.split('Min').get(0)+"Hour"
logInfo("Alarm Times",HourName)
var Number HourValue = 0
HourValue = ScriptServiceUtil.getItemRegistry.getItem(HourName).state
logInfo("Alarm Times","Hour is currently " + HourValue)
var Number NewHour = 0
NewHour=1 + HourValue
logInfo("Alarm Times","New Hour value is " + NewHour)
sendCommand(HourName, NewHour.toString)
}
if (triggeringItem.state < 0) {
sendCommand(triggeringItem.name,"45")
var HourName = ""
HourName = triggeringItem.name.split('Min').get(0)+"Hour"
logInfo("Alarm Times",HourName)
var Number HourValue = 0
HourValue = ScriptServiceUtil.getItemRegistry.getItem(HourName).state
logInfo("Alarm Times","Hour is currently " + HourValue)
var Number NewHour = 0
NewHour=HourValue -1
logInfo("Alarm Times","New Hour value is " + NewHour)
sendCommand(HourName, NewHour.toString)
}
end
rule "Confine Hour"
when
Member of gHour changed
then
logInfo("Hour Limiting", "Hour Value of "+triggeringItem.name+" Currently "+triggeringItem.state)
if (triggeringItem.state > 23) {
sendCommand(triggeringItem.name,"0")
// logInfo("Alarm Times",triggeringItem.name.split('Hou').get(0))
}
if (triggeringItem.state < 0) {
sendCommand(triggeringItem.name,"23")
// logInfo("Alarm Times",triggeringItem.name.split('Hou').get(0))
}
end