Powiadomienia
Wyczyść wszystko

UWAGAStrona 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

Kontakt

openHAB stan licznika za ostatnią godzinę

3 Wpisów
3 Użytkownicy
0 Reactions
947 Wyświetleń
(@sliver001)
Wpisów: 9
Bywalec
Autor tematu
 

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

 
Dodane : 06/10/2022 10:17 am
(@kamikac)
Wpisów: 226
Pomocny
 

historicState wymaga skonfigurowania persistence:

https://www.openhab.org/docs/configuration/persistence.html

 
Dodane : 15/10/2022 9:35 am
(@ldywicki)
Wpisów: 78
Kontrybutor
 

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.

 
Dodane : 27/08/2023 6:01 pm
Udostępnij: