I’ve got a water flow meter, that sends data based on mqtt.
Number dodgerWaterFlow "Rainwater" { channel="mqtt:topic:451040c553:a2ef0b77f9:Waterflow" }
DateTime dodgerPumpStart "Pump started"
This gives me nicelty the values:
2022-03-25 11:04:57.654 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 0 to 5.2
2022-03-25 11:05:00.663 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 5.2 to 0
2022-03-25 11:13:04.925 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 0 to 0.13333333333333333
2022-03-25 11:13:07.926 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 0.13333333333333333 to 12.133333333333333
2022-03-25 11:13:10.936 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12.133333333333333 to 12
2022-03-25 11:13:31.990 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12 to 11.866666666666667
2022-03-25 11:13:35.002 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 12
2022-03-25 11:13:38.016 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12 to 11.866666666666667
2022-03-25 11:13:41.109 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 12
2022-03-25 11:13:45.134 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12 to 11.866666666666667
2022-03-25 11:13:50.041 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 12
2022-03-25 11:13:53.056 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12 to 11.866666666666667
2022-03-25 11:14:17.117 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 2.2666666666666666
2022-03-25 11:14:20.123 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 2.2666666666666666 to 0
2022-03-25 11:14:47.195 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 0 to 4.266666666666667
2022-03-25 11:14:50.196 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 4.266666666666667 to 12
2022-03-25 11:14:56.218 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 12 to 11.866666666666667
2022-03-25 11:15:17.275 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 11.733333333333333
2022-03-25 11:15:20.281 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.733333333333333 to 11.866666666666667
2022-03-25 11:15:26.301 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 11.733333333333333
2022-03-25 11:15:29.306 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.733333333333333 to 11.866666666666667
2022-03-25 11:15:41.337 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 11.733333333333333
2022-03-25 11:15:47.362 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.733333333333333 to 11.866666666666667
2022-03-25 11:15:53.373 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 11.733333333333333
2022-03-25 11:15:59.392 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.733333333333333 to 11.866666666666667
2022-03-25 11:16:02.395 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 11.733333333333333
2022-03-25 11:16:08.409 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.733333333333333 to 11.866666666666667
2022-03-25 11:16:11.428 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 11.866666666666667 to 2.6666666666666665
2022-03-25 11:16:14.441 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 2.6666666666666665 to 0
2022-03-25 11:19:50.984 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 0 to 3.3333333333333335
2022-03-25 11:19:53.978 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'dodgerWaterFlow' changed from 3.3333333333333335 to 0
I'm now trying to calucate now the total amount of water that I used. But after 2 days fighting with founding out how I can calcute the time between 2 values, I think it's time to ask some help. ;)
I’ve got follow rule that works.
rule "Rainwater usuage"
when
Item dodgerWaterFlowLastUpdate received update
then
var now3000 = now.toInstant().toEpochMilli()
dodgerPumpStart.postUpdate(now3000)
logInfo("Water", "TEST021 now : " + now3000 )
var item3000 = (dodgerPumpStart.state as DateTimeType).getZonedDateTime.toEpochSecond * 1000
logInfo("Water", "TEST022 item : " + item3000 )
var runtime3000 = (now3000 - item3000)/1000
logInfo("Water", "TEST025 diff : " + runtime3000 )
end
Gives me, as expected:
2022-03-25 12:17:50.398 [INFO ] [org.openhab.core.model.script.Water ] - TEST021 now : 1648207070397
2022-03-25 12:17:50.401 [INFO ] [org.openhab.core.model.script.Water ] - TEST022 item : 1648198361000
2022-03-25 12:17:50.403 [INFO ] [org.openhab.core.model.script.Water ] - TEST025 diff : 0
But I should have the previous datetime value for the pumpstart. This way, I can find out the amount of seconds, and calculate the excact water usuage (I hope).
rule "Rainwater usuage"
when
Item dodgerWaterFlowLastUpdate received update
then
var now3000 = now.toInstant().toEpochMilli()
dodgerPumpStart.postUpdate(now3000)
logInfo("Water", "TEST021 now : " + now3000 )
var item3000 = (dodgerPumpStart.previousState().state as DateTimeType).getZonedDateTime.toEpochSecond * 1000
logInfo("Water", "TEST022 item : " + item3000 )
var runtime3000 = (now3000 - item3000)/1000
logInfo("Water", "TEST025 diff : " + runtime3000 )
end
error:
2022-03-25 12:16:37.287 [INFO ] [org.openhab.core.model.script.Water ] - TEST021 now : 1648206997285
2022-03-25 12:16:37.290 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'waterTest-1' failed: cannot invoke method public abstract org.openhab.core.types.State org.openhab.core.persistence.HistoricItem.getState() on null in waterTest
Of course, better suggestions are more then welcome.
ps I tried also the timestamp profile, but these gave me a lot more updates. Not sure from where these came from, guess each time a mqtt sync?