Thanks for sharing, the only problem I can see is that if you manually turn off your heater (Sw_Heater_Towels
) and the temp sensor is below your threshold, it will just turn back on again, in the second half of your rule.
Here is a very similar rule I use;
rule "Nursery heating"
when
Item VT_Heating_Mode_Nursery changed or
Item VT_Heating_Setpoint_Nursery changed or
Item FF_Nursery_Temp changed or
Item FF_Nursery_Window changed
then
// 0="Off", 1="On", 2="Auto"
if (VT_Heating_Mode_Nursery.state == 0) {
// heater off
FF_Nursery_Heater.sendCommand(OFF)
} else if (VT_Heating_Mode_Nursery.state == 1) {
// heater on
FF_Nursery_Heater.sendCommand(ON)
} else if (VT_Heating_Mode_Nursery.state == 2) {
// only fire up the heater if the nursery window is closed
if (FF_Nursery_Window.state == CLOSED) {
// get the current setpoint for the nursery
var Number setpoint = VT_Heating_Setpoint_Nursery.state as DecimalType
// calculate the turn on/off temperatures
var Number turnOnTemp = setpoint - 0.5
var Number turnOffTemp = setpoint + 0.5
// get the current temperature in the nursery
var Number temp = FF_Nursery_Temp.state as DecimalType
// determine whether we need to turn on/off the heater
if (temp <= turnOnTemp) {
// turn on temp has been reached so switch on the heater
FF_Nursery_Heater.sendCommand(ON)
} else if (temp >= turnOffTemp) {
// turn off temp has been reached so switch off the heater
FF_Nursery_Heater.sendCommand(OFF)
}
} else {
// heater off
FF_Nursery_Heater.sendCommand(OFF)
}
}
end
Using the following items;
// heating setpoints
Number VT_Heating_Setpoint_Nursery "Nursery Setpoint [%.1f °C]" <degreesc>
// heating modes: 0 - Off, 1 - On, 2 - Auto
Number VT_Heating_Mode_Nursery "Nursery Heating Mode" <heating>
Switch FF_Nursery_Heater "Nursery Heater" <fire> { zwave="32:command=SWITCH_BINARY" }
Number FF_Nursery_Temp "Nursery [%.1f °C]" <temperature> { rfxcom="<14082:Temperature" }
Then finally in my sitemap;
Switch item=VT_Heating_Mode_Nursery label="Heating Mode" mappings=[0="Off", 1="On", 2="Auto"]
Setpoint item=VT_Heating_Setpoint_Nursery label="Target Temperature [%.1f °C]" minValue=16 maxValue=24 step=0.5 visibility=[VT_Heating_Mode_Nursery==2]
Text item=FF_Nursery_Heater
So I can either manually override and set the heater on/off, or set it to auto and adjust the setpoint to control the temp. The Text item=FF_Nursery_Heater
just shows the state of the heater, i.e. whether it is on or off.