How would I use a rule to determine a range difference between a current state of a temperature monitor and and desired cool state of my Ecobee?
For example:
I have a timer firing every x seconds. In that timer I want to:
Compare the TempSensor.state and the EcobeeDesiredCool.state and then if TempSensor.state is not at least 8 degrees cooler than EcobeeDesciredCool.state …{do something here}
rule "TestTemperature"
when
Item TempSensor changed
then
logInfo ("TestTemperature", "TempSensor.state ={}", TempSensor.state)
if ((TempSensor.state as DecimalType)+8>=(EcobeeDesciredCool.state as DecimalType) {
logInfo ("TestTemperature", "TestTemperature is not at least 8 degrees cooler than EcobeeDesciredCool.state")
}
end
No timer needed in here, rule triggers whenever your TestTemperature changes.
I’m completely lost; i’ve tried many combinations and can’t get this to run:
I’ve stripped it down to what should happen and cut out extraneous paths that shouldn’t run:
Essentially this conditional should fire: if ((Laundry_Temperature.state as DecimalType) < (testBlowTemp)) {
as laundry temp is 56 and the testblowtemp is 70
That email never comes
All i see in the log is:
2017-05-19 11:10:34.043 [ERROR] [.script.engine.ScriptExecutionThread] - Rule ‘Test Rule’: org.eclipse.smarthome.core.library.types.DecimalType
I’ve tried removing state, adding state to each variable, removing as decimaltype and adding as decimal type to each variable/item…nothing works…it never sends the email even though the item state and variable are set with the proper values to fire it.
if (EcoBeeEquipmentStatus.state == ‘compCool1,fan’) {
Put some logInfo in so you can see the path followed and the values
logInfo("test", "we got this far somehow")
logInfo("test", "next we will test " + EcoBeeEquipmentStatus.state)
if (EcoBeeEquipmentStatus.state == 'compCool1,fan') {
logInfo("test", "whatever that was about we got past it")
if (weather_forecasts0_temperature.state <= 70) {
logInfo("test", "maybe testBlow was declared earlier")
testBlowTemp = 65
logInfo("test", "that doesnt need brackets")
etc etc.