UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Jak powinna wyglądać reguła, która była by w stanie obliczyć zużycie energii za ostatnią dobę albo godzinę? Licznik_Pobrana to aktualny stan pobranej energii w kWh z licznika.
Na podstawie przykładów zrobiłem taką ale nie działa.
rule "Energy by hour" when Time cron "0 0 * * * ?" then var hour = Licznik_Pobrana.state as DecimalType - Licznik_Pobrana.historicState(now.minusHours(1)).state as DecimalType logInfo("ENERGY","LicznikLastH = " + hour) postUpdate(LicznikLastH, hour) end
Items
Number Licznik_Pobrana Number LicznikLastH
Do peristance dodałem wykonywanie co godzinę Licznik_Pobrana i LicznikLastH
Otrzymuję taki błąd:
2022-10-06 11:03:00.017 [WARN ] [nce.extensions.PersistenceExtensions] - There is no default persistence service configured!
2022-10-06 11:03:00.026 [WARN ] [nce.extensions.PersistenceExtensions] - There is no queryable persistence service registered with the id 'null'
2022-10-06 11:03:00.017 [INFO ] [e.smarthome.model.script.Motionrules] - Podtrzymanie pamięci - cron co 1min.
2022-10-06 11:03:00.037 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Energy by minute': cannot invoke method public abstract org.eclipse.smarthome.core.types.State org.eclipse.smarthome.core.persistence.HistoricItem.getState() on null
historicState wymaga skonfigurowania persistence:
Ewentualnie można skorzystać z wariantu metody historicState z dodatkowym argumentem, który wskaże docelowy persistence service id.
Z błędu wynika, że nie masz domyślnego persistence service lub nie jest on typu "queryable", tj nie obsługuje odczytów/zapytań z zadanym czasem.