Bedroom Thermostat Rule issues

Currently trying to set up a rule to turn on and off a radiator valve in my childrens bedroom depending on the room temperature, setpoint of the room and wether the boiler is running or not. saying there is issues on my log. could anybody shed some light?

rule “Kids Bedroom heating”

when

Item Boiler_Status changed to ON then 

Item Kids_Bedroom_Temp_Setpoint changed or

Item Bed_Temperature changed

then

var Number cur_temp = Bed_Temperature.state as Number

var Number setpoint = Kids_Bedroom_Temp_Setpoint.state as Number

val  Number hysteresis = 0.5

if (cur_temp < (setpoint - hysteresis)) {

    if (Bed_Heater.state != ON) {Bed_Heater.sendCommand(ON)}

}

else if(cur_temp > setpoint + hysteresis) {

    if (Bed_Heater.state != OFF) {Bed_Heater.sendCommand(OFF)}

}

end

Since I replied in the other post. :laughing:

rule "Elutoa temperatuur"
when
    Item ElutoaSetpoint changed or
    Item ElutoaTemp changed
then
    var Number cur_temp = ElutoaTemp.state as Number
    var Number setpoint = ElutoaSetpoint.state as Number
    val  Number hysteresis = 0.5

    if (cur_temp < (setpoint - hysteresis) && Boiler_Status.state == ON) {
        if (ElutoaRadikas.state != ON) {ElutoaRadikas.sendCommand(ON)}
    }
    else if(cur_temp > setpoint + hysteresis) {
        if (ElutoaRadikas.state != OFF) {ElutoaRadikas.sendCommand(OFF)}
    }
end

Or just check if the switch is off and do nothing with:

if (Boiler_Status.state == OFF) return; 

Put this at the first part of the then part of rule. If the switch is off the rule will do nothing.
rule "Kids Bedroom heating"
when
Item Kids_Bedroom_Temp_Setpoint changed or
Item Bed_Temperature changed
then
var Number cur_temp = Bed_Temperature.state as Number
var Number setpoint = Kids_Bedroom_Temp_Setpoint.state as Number
val  Number hysteresis = 0.5

if (cur_temp < (setpoint - hysteresis) && Boiler_Status.state == ON) {
    if (Bed_Heater.state != ON) {Bed_Heater.sendCommand(ON)}
}
else if(cur_temp > setpoint + hysteresis) {
    if (Bed_Heater.state != OFF) {Bed_Heater.sendCommand(OFF)}
}
end

just looking for a solution to turn the Bed_Heater OFF once the Boiler_State changes to OFF even if the setpoint has not been reached

Just remove the else if part and see what happens. :wink:

rule "Kids Bedroom heating"
when
Item Kids_Bedroom_Temp_Setpoint changed or
Item Bed_Temperature changed
then
var Number cur_temp = Bed_Temperature.state as Number
var Number setpoint = Kids_Bedroom_Temp_Setpoint.state as Number
val  Number hysteresis = 0.5

if (cur_temp < (setpoint - hysteresis) && Boiler_Status.state == ON) {
    if (Bed_Heater.state != ON) {Bed_Heater.sendCommand(ON)}
}
end

@Taffy, even better add another rule for the bed so you can maintain the temp if boiler is on.

rule "Kids Bedroom heating"
when
Item Kids_Bedroom_Temp_Setpoint changed or
Item Bed_Temperature changed
then
var Number cur_temp = Bed_Temperature.state as Number
var Number setpoint = Kids_Bedroom_Temp_Setpoint.state as Number
val  Number hysteresis = 0.5

if (cur_temp < (setpoint - hysteresis) && Boiler_Status.state == ON) {
    if (Bed_Heater.state != ON) {Bed_Heater.sendCommand(ON)}
}
else if(cur_temp > setpoint + hysteresis) {
    if (Bed_Heater.state != OFF) {Bed_Heater.sendCommand(OFF)}
}
end

rule "Bed Off"
when
    Item Boiler_Status changed to OFF
then
    Bed_Heater.sendCommand(OFF)
end

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.