Community. I try to document the amount of rain per hour, day, week, month and year. All values work perfectly, except the recording per hour; it remains “0 mm / h”.
So far I have looked for the mistake without success.
I use the same approach for all items. One of them doesn’t work.
No error is shown in the log.
How can I keep looking?
Am I having a wrong approach or an obvious flaw?
Thanks for any tip.
My Items:
Number:Length Weather_davis_rain_rate "Weather Davis - Rain - Rate (actual) [%.1f mm]"
<rain>
{ channel="xyz" }
Number:Length Weather_davis_rain_total "Weather Davis - Rain - Total Year [%.1f mm]"
<rain>
{ channel="xyz" }
Number:Length Weather_davis_rain_p1h "Weather Davis - Rain - per Hour [%.1f mm]"
<rain>
Number:Length Weather_davis_rain_p1d "Weather Davis - Rain - per Day [%.1f mm]"
<rain>
Number:Length Weather_davis_rain_p7d "Weather Davis - Rain - per Week [%.1f mm]"
<rain>
Number:Length Weather_davis_rain_p1M "Weather Davis - Rain - per Month [%.1f mm]"
<rain>
Number:Length Weather_davis_rain_p1Y "Weather Davis - Rain - per Year [%.1f mm]"
<rain>
My rrd4j.persist:
Weather_davis_rain_total, Weather_davis_rain_rate, Weather_davis_rain_p1h, Weather_davis_rain_p1d,
Weather_davis_rain_p7d, Weather_davis_rain_p1M, Weather_davis_rain_p1Y : strategy = everyChange, everyMinute
My Rules:
rule "Weather: Rain per Hour, Day, Week, Mounth and Year"
when
Time cron "1 0/10 * * * ?"
then
val String StrDateTimeNow = now.toLocalDateTime().toString()
val String StrHour = StrDateTimeNow.substring(11,13)
val int DayOfWeek = now.getDayOfWeek.getValue
val String StrDay = StrDateTimeNow.substring(8,10)
val String StrMonth = StrDateTimeNow.substring(5,7)
val String StrYear = StrDateTimeNow.substring(0,4)
var String StrMyZoneDateTime = StrYear + "-" + StrMonth + "-" + StrDay + "T" + StrHour + ":00:00.000Z"
var MyZoneDateTime = ZonedDateTime.parse(StrMyZoneDateTime).withZoneSameInstant(ZoneId.systemDefault())
logInfo("*** Rain ***", "Now: " + now.toString + ", StrDateTimeNow: " + StrDateTimeNow + ", String day: " + StrDay + ", String hour: " + StrHour)
// Rain this hour
StrMyZoneDateTime = StrYear + "-" + StrMonth + "-" + StrDay + "T" + StrHour + ":00:00.000Z"
MyZoneDateTime = ZonedDateTime.parse(StrMyZoneDateTime).withZoneSameInstant(ZoneId.systemDefault())
if (Weather_davis_rain_total.deltaSince(MyZoneDateTime, "rrd4j") != NULL) {
Weather_davis_rain_p1h.postUpdate(Weather_davis_rain_total.deltaSince(MyZoneDateTime, "rrd4j") as Number)
} else {
Weather_davis_rain_p1h.postUpdate(0)
}
logInfo("*** Rain ***", "Now = " + now.toString + ", DateTime String: " + StrMyZoneDateTime + ", String per hour: " + MyZoneDateTime + ", Rain: " + Weather_davis_rain_p1h.state)
// Rain in this day
StrMyZoneDateTime = StrYear + "-" + StrMonth + "-" + StrDay + "T00:00:00.000Z"
MyZoneDateTime = ZonedDateTime.parse(StrMyZoneDateTime).withZoneSameInstant(ZoneId.systemDefault())
if (Weather_davis_rain_total.deltaSince(MyZoneDateTime, "rrd4j") != NULL) {
Weather_davis_rain_p1d.postUpdate(Weather_davis_rain_total.deltaSince(MyZoneDateTime, "rrd4j") as Number)
} else {
Weather_davis_rain_p1d.postUpdate(0)
}
logInfo("*** Rain ***", "Now = " + now.toString + ", DateTime String: " + StrMyZoneDateTime + ", String per day: " + MyZoneDateTime + ", Rain: " + Weather_davis_rain_p1d.state)
// the same principle for week, month, year...
end
My Openhab.log:
2021-08-04 12:22:01.508 [INFO ] [enhab.core.model.script.*** Rain ***] - Now: 2021-08-04T12:22:01.508409+02:00[Europe/Zurich], StrDateTimeNow: 2021-08-04T12:22:01.506810, String day: 04, String hour: 12
2021-08-04 12:22:01.510 [INFO ] [enhab.core.model.script.*** Rain ***] - Now = 2021-08-04T12:22:01.510299+02:00[Europe/Zurich], DateTime String: 2021-08-04T12:00:00.000Z, String per hour: 2021-08-04T14:00+02:00[Europe/Zurich], Rain: 0 mm
2021-08-04 12:22:01.511 [INFO ] [enhab.core.model.script.*** Rain ***] - Now = 2021-08-04T12:22:01.511077+02:00[Europe/Zurich], DateTime String: 2021-08-04T00:00:00.000Z, String per day: 2021-08-04T02:00+02:00[Europe/Zurich], Rain: 0.6 mm
Only the value for the amount of rain [mm / h] does not work …
(I use openHAB 3.2.0.M1 on Ubuntu)
Many thanks!