Hello everyone,
i have a strange behavior of my OH3 when I want to calculate something in a rule. I just want to calculate the difference in a quantity of energy (diff = currently - energy at the time 0:00:00)
Items:
Number:Energy heatMeter_Heating "Heat meter heating [%s kWh]" <Energy> (gHeatpump) { channel="luxtronikheatpump:heatpump:heatpump:heatMeterHeating" }
Number:Energy heatMeter_Heating_today "Heat meter heating today [%.4s kWh]" <Energy> (gHeatpump)
Number:Energy heatMeter_Heating_today_1000 "Heat meter Hot Water today [%.4s kWh]" <Energy> (gHeatpump)
Number:Energy heatMeter_Heating_today_max "Heat meter heating today [%.4s kWh]" <Energy> (gHeatpump)
Number:Energy heatMeter_Heating_today_min "Heat meter heating today [%.4s kWh]" <Energy> (gHeatpump)
For better understanding, I first set all values to 1 and use a new variables for each “possibility”.
Rules:
// all values 1
heatMeter_Heating_today.postUpdate(1)
heatMeter_Heating_today_max.postUpdate(1)
heatMeter_Heating_today_min.postUpdate(1)
heatMeter_Heating_today_1000.postUpdate(1)
heatMeter_Heating_today_diff.postUpdate(1)
// my favorite code
heatMeter_Heating_today.postUpdate(((heatMeter_Heating.state as Number) - (heatMeter_Heating.minimumSince(now.with(LocalTime.of(0,0,0,0)), "influxdb").state))/1)
heatMeter_Heating_today_1000.postUpdate(((heatMeter_Heating.state as Number) - (heatMeter_Heating.minimumSince(now.with(LocalTime.of(0,0,0,0)), "influxdb").state))/10000000)
// step by step
var Number max = (heatMeter_Heating.state as Number)
var Number min = ((heatMeter_Heating.minimumSince(now.with(LocalTime.of(0,0,0,0)), "influxdb").state))
heatMeter_Heating_today_max.postUpdate(heatMeter_Heating.state as Number)
heatMeter_Heating_today_min.postUpdate(heatMeter_Heating.minimumSince(now.with(LocalTime.of(0,0,0,0)), "influxdb").state)
heatMeter_Heating_today_diff.postUpdate(max - min)
logInfo("loggerName_max", "MAX is {}", max)
logInfo("loggerName_min", "MIN is {}", min)
==> /var/log/openhab/openhab.log <==
2022-03-28 14:41:20.100 [INFO ] [hab.core.model.script.loggerName_max] - MAX is 109.6 kWh
2022-03-28 14:41:20.106 [INFO ] [hab.core.model.script.loggerName_min] - MIN is 94.8
==> /var/log/openhab/events.log <==
2022-03-28 13:36:04.537 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'dummy' received command OFF
2022-03-28 13:36:04.545 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dummy' changed from ON to OFF
2022-03-28 13:36:04.584 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeatPump_Temp_Outside_Min' changed from 0.1 °C to 1 °C
2022-03-28 13:36:04.594 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeatPump_Temp_Outside_Max' changed from 14.9 °C to 1 °C
2022-03-28 13:36:04.631 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeatPump_Temp_Outside_Min' changed from 1 °C to 0.1 °C
2022-03-28 13:36:04.682 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeatPump_Temp_Outside_Max' changed from 1 °C to 14.9 °C
2022-03-28 13:36:04.713 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today' changed from 3.945599052E8 kWh to 1 kWh
2022-03-28 13:36:04.718 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_max' changed from 109.6 kWh to 1 kWh
2022-03-28 13:36:04.722 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_min' changed from 94.8 kWh to 1 kWh
2022-03-28 13:36:04.728 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_1000' changed from 39.45599052 kWh to 1 kWh
2022-03-28 13:36:04.744 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today' changed from 1 kWh to 3.945599052E8 kWh
2022-03-28 13:36:04.782 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_1000' changed from 1 kWh to 39.45599052 kWh
2022-03-28 13:36:04.827 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_max' changed from 1 kWh to 109.6 kWh
2022-03-28 13:36:04.866 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_min' changed from 1 kWh to 94.8 kWh
2022-03-28 13:36:04.964 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'heatMeter_Heating_today_diff' changed from 1 kWh to 3.945599052E8 kWh
real:
109.6 kWh - 94.8 kWh = 14.8 kWh
calculated OH3: 3.945599052E8 kWh
At first I thought it was a unit error, hence the /100000. But the value is wrong. Only the variable min has no unit. is that an approach?
That’s my first article - i hope i mentioned all important points.