Hi everyone,
Can anyone see what I’m doing wrong here?
I’m trying to write a rule that will keep my kettle at a set temperature.
I have the following items.
Switch Kettle "Kettle" (PersistenceGroup) ["Switchable"] {mqtt=">[localhost:cmnd/tasmotaKettle/POWER:command:*:default], <[localhost:stat/tasmotaKettle/POWER:state:default]"}
String KettleTemp {mqtt="<[localhost:tele/tasmotaKettle/RESULT:state:JSONPATH($.TuyaReceived.DpType2Id5)]"}
Switch Kettle_Keep_Warm
Number Kettle_Keep_Warm_Temperature "Kettle Keep Warm Temperature [%d]"
and the following rule
rule "Keep kettle warm"
when
Item KettleTemp changed or
Item Kettle_Keep_Warm changed or
Item Kettle_Keep_Warm_Temperature changed
then
var Number var_KettleTemp
var String var_Kettle_Keep_Warm
var Number var_Kettle_Keep_Warm_Temperature
if (triggeringItem.name == "KettleTemp")
{
var_KettleTemp = newState
}
else
{
var_KettleTemp = KettleTemp.state
}
if (triggeringItem.name == "Kettle_Keep_Warm")
{
var_Kettle_Keep_Warm = newState.toString
}
else
{
var_Kettle_Keep_Warm = Kettle_Keep_Warm.state.toString
}
if (triggeringItem.name == "Kettle_Keep_Warm_Temperature")
{
var_Kettle_Keep_Warm_Temperature = newState
}
else
{
var_Kettle_Keep_Warm_Temperature = Kettle_Keep_Warm_Temperature.state
}
logInfo("Kettle","var_KettleTemp set to " + var_KettleTemp)
logInfo("Kettle","var_Kettle_Keep_Warm set to " + var_Kettle_Keep_Warm)
logInfo("Kettle","var_Kettle_Keep_Warm_Temperature set to " + var_Kettle_Keep_Warm_Temperature)
if (Kettle_Keep_Warm.state == ON && var_KettleTemp < var_Kettle_Keep_Warm_Temperature)
{
logInfo("Kettle","Turning the kettle on as " + var_KettleTemp + " is below " + var_Kettle_Keep_Warm_Temperature)
sendCommand(Kettle,ON)
}
if (Kettle_Keep_Warm.state == ON && var_KettleTemp => var_Kettle_Keep_Warm_Temperature)
{
logInfo("Kettle","Turning the kettle off as " + var_KettleTemp + " is not less than " + var_Kettle_Keep_Warm_Temperature)
sendCommand(Kettle,OFF)
}
end
When the rule executes, regardless of which item triggers it, the following appears in the log.
Rule 'Keep kettle warm': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.model.script.lib.NumberExtensions.operator_lessThan(java.lang.Number,java.lang.Number) on instance: null
Even more puzzling is this
rule "Keep kettle warm"
when
Item KettleTemp changed or
Item Kettle_Keep_Warm changed or
Item Kettle_Keep_Warm_Temperature changed
then
if (Kettle_Keep_Warm.state == ON && 10 < 20)
{
sendCommand(Kettle,ON)
}
if (Kettle_Keep_Warm.state == ON && 10 => 20)
{
sendCommand(Kettle,OFF)
}
end
Rule 'Keep kettle warm': An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(T,org.eclipse.xtext.xbase.lib.Procedures$Procedure1) on instance: null
What does it think is null?