Hi All,
I try to write a new rule for my Floorheater. I have some unexpected failure.
For my understanding the error code means that there is something wrong with my Number Values… but I don´t know what the error code means for my case … is there something that I missed?
Thank for your help
var Number Hysterese_Start = 0.25 //Hysterese in °C anfangen heizen
var Number Hysterese_Ende = 0.4 //Hysterese in °C ende heizen
var Temp_vergleich = 0 //0 = aus, 1 = ein
rule "Bodenheizung"
when
Item Raumtemperatur received update
then
if(thermostat_target_mode.state.toString == "OFF" && Kueche_Heizung.state == ON) { //Wenn Heizung Deaktiviert ist aber Heizung noch AN ist
Heizung_DW3.sendCommand(OFF)
}
else if((Hysterese_Start - Raumtemperatur.state as Number) =< Heizung.state as Number) { //Wenn Raumteperatur kleiner ist als Solltemperatur
Temp_vergleich = 1
}
else((Raumtemperatur.state as Number - Hysterese_Ende) => Heizung.state as Number) { //Wenn Raumteperatur größer ist als Solltemperatur
Temp_vergleich = 0
}
if(Temp_vergleich == 1 && thermostat_target_mode.state.toString == "ON" && (Kueche_Heizung.state == NULL || Kueche_Heizung.state == OFF)){
Heizung_DW3.sendCommand(ON) + thermostat_current_mode.sendCommand("HEATING")
}
else if(Temp_vergleich == 0 && thermostat_target_mode.state.toString == "ON" && (Kueche_Heizung.state == NULL || Kueche_Heizung.state == ON)) {
Heizung_DW3.sendCommand(OFF) + thermostat_current_mode.sendCommand("OFF")
}
end
Error
2022-10-07 11:52:26.994 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Bodenheizung-1' failed: An error occurred during the script execution: Cannot assign a value in null context. in Bodenheizung
this is my room temperature item (as Number value).
Yes I try to to a little bit math. I want that my heater turn on when my room temperature drops 0.4 °C under my target temperature. And it should turn off when my room temperature rises until it is 0.25 °C under my Target temperature.
There’s three or four different things going on here. Break it down in smaller steps. Raumtemperatur.state
What’s that? Log it out. Raumtemperatur.state - Hysterese_Start
What’s that, can it do the maths here? Perform the calculation outside of the if() so that you can isolate and log out the result. Heizung.state as Number
What’s that, log it out?
Are these now sensible values to compare? < Heizung.state as Number
Is that ambiguous? Did we mean (X < Y) as Number
or did we mean X < (Y as Number)
Would it help to disambiguate with braces?