Is this bug with Items with using QuantityTypes in calculations?

Hi, i tryed to calculate temperature of my heating system, but got strange results.
If i use items with QuantityTypes in items definition “:Temperature” - the results of calculation is wrong.

Here is log with QuantityTypes - roomGoalRadT = -3227.88 - WRONG:

items:
Number:Temperature  roomSens_RadTemp        "Radiator [%.1f %unit%]" 
Number:Temperature  roomSens_InWallTemp     "Room [%.1f %unit%]"
Number:Temperature  sysSens_OutTemp         "OutTemp [%.1f %unit%]" 

rules:
roomT = roomSens_InWallTemp.state as Number
tempOut = sysSens_OutTemp.state as Number
roomRadT = roomSens_RadTemp.state as Number
roomGoalRadT = 32 + (roomGoalT - tempOut) + (roomGoalT - roomT) * 11

2020-04-06 22:02:30.699 [INFO ] [arthome.model.script.   ---> Heating] - Baxi
2020-04-06 22:02:30.701 [INFO ] [arthome.model.script.   ---> Heating] - roomGoalT=24
2020-04-06 22:02:30.701 [INFO ] [arthome.model.script.   ---> Heating] - gist=0.1
2020-04-06 22:02:30.702 [INFO ] [arthome.model.script.   ---> Heating] - tempOut=11.03 °C
2020-04-06 22:02:30.703 [INFO ] [arthome.model.script.   ---> Heating] - roomRadT=21.93 °C
2020-04-06 22:02:30.705 [INFO ] [arthome.model.script.   ---> Heating] - roomGoalRadT=-3227.88

Here is log without QuantityTypes - roomGoalRadT = 56 - OK:

items:
Number  roomSens_RadTemp        "Radiator [%.1f]" 
Number  roomSens_InWallTemp     "Room [%.1f ]"
Number  sysSens_OutTemp         "OutTemp [%.1f]" 

rules:
roomT = roomSens_InWallTemp.state as Number
tempOut = sysSens_OutTemp.state as Number
roomRadT = roomSens_RadTemp.state as Number
roomGoalRadT = 32 + (roomGoalT - tempOut) + (roomGoalT - roomT) * 11

2020-04-06 22:03:30.582 [INFO ] [arthome.model.script.   ---> Heating] - Baxi
2020-04-06 22:03:30.583 [INFO ] [arthome.model.script.   ---> Heating] - roomGoalT=24
2020-04-06 22:03:30.584 [INFO ] [arthome.model.script.   ---> Heating] - gist=0.1
2020-04-06 22:03:30.585 [INFO ] [arthome.model.script.   ---> Heating] - tempOut=11
2020-04-06 22:03:30.587 [INFO ] [arthome.model.script.   ---> Heating] - roomRadT=22
2020-04-06 22:03:30.589 [INFO ] [arthome.model.script.   ---> Heating] - roomGoalRadT=56

I know when comparing a value to an item with a %unit% I had to do it like so.

MBR_Lum.state < 30 | " %"

Maybe it is similar for calculations.

1 Like

Well, as roomGoalT isn’t of type QuantityType, your calculation is not allowed. Either change roomGoalT to be of Type QuantityType or cut the unit and recharge after calculation.

roomT = (roomSens_InWallTemp.state as Number).floatValue
tempOut = (sysSens_OutTemp.state as Number).floatValue
roomRadT = (roomSens_RadTemp.state as Number).floatValue
roomGoalRadT = (32 + (roomGoalT - tempOut) + (roomGoalT - roomT) * 11) | °C

Yes, you right, problem is in variables types. All variables must be same type.
Thank you @Udo_Hartmann