- Platform information:
- Hardware: Raspberry 4
- Openhabian
- openHAB version: 4 (stable)
Hi,
I’m migrating from OH2 to OH4. I’ve noticed a strange behaviour when writing a rule. This simple code fails and is not executed
val Number ECS_Temp_hyst = 1.0|°C
val Number ECS_Temp_maxvalid = 90|°C
val Number ECS_Temp_minvalid = 0|°C
logInfo ("ECS","Script start")
logInfo ("ECS_Temp_hyst",ECS_Temp_hyst.toString())
var TempCorrect = ( ( ECSTemperatureHaut.state != UNDEF ) && ( ECSTemperatureHaut.state != NULL ) )
TempCorrect = TempCorrect && ( ECSTemperatureHaut.state as Number > ECS_Temp_minvalid )
TempCorrect = TempCorrect && ( ECSTemperatureHaut.state as Number < ECS_Temp_maxvalid )
if (TempCorrect) {logInfo ("ECS","Températures correctes")}
but is I change one comparison ‘<’ to ‘>’ in ECSTemperatureHaut.state as Number < ECS_Temp_maxvalid it works like a charm
val Number ECS_Temp_hyst = 1.0|°C
val Number ECS_Temp_maxvalid = 90|°C
val Number ECS_Temp_minvalid = 0|°C
logInfo ("ECS","Script start")
logInfo ("ECS_Temp_hyst",ECS_Temp_hyst.toString())
var TempCorrect = ( ( ECSTemperatureHaut.state != UNDEF ) && ( ECSTemperatureHaut.state != NULL ) )
TempCorrect = TempCorrect && ( ECSTemperatureHaut.state as Number > ECS_Temp_minvalid )
TempCorrect = TempCorrect && ( ECS_Temp_maxvalid > ECSTemperatureHaut.state as Number )
if (TempCorrect) {logInfo ("ECS","Températures correctes")}
and I don’t understand why.
Thank you for your help.
Bernard
Error message when it fails
2023-08-26 12:16:15.959 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID ‘c4ee9b610a’ failed: val Number ECS_Temp_hyst = 1.0|°C
val Number ECS_Temp_maxvalid = 90|°C
val Number ECS_Temp_minvalid = 0|°C
logInfo (“ECS”,“Script start”)
logInfo (“ECS_Temp_hyst”,ECS_Temp_hyst.toString())
var TempCorrect = ( ( ECSTemperatureHaut.state != UNDEF ) && ( ECSTemperatureHaut.state != NULL ) )
TempCorrect = TempCorrect && ( ECSTemperatureHaut.state as Number > ECS_Temp_minvalid )
TempCorrect = TempCorrect && ( ECSTemperatureHaut.state as Number < ECS_Temp_maxvalid )
if (TempCorrect) {logInfo (“ECS”,“Températures correctes”)}