I am trying to display the minimum, maximum and average values for an item that is persisted using jdbc:mysql.
From what I can read the following should work… logInfo("Test","Maximum Battery Voltage Since 5 years " + BYD_Voltage.maximumSince(ZonedDateTime.now.minusYears(5)))
This results in …
Maximum Battery Voltage Since 5 years org.openhab.core.persistence.extensions.PersistenceExtensions$1@f3dbdc
I have tried adding the persistance service … logInfo("Test","Maximum Battery Voltage Since 5 years " + BYD_Voltage.maximumSince(ZonedDateTime.now.minusYears(5)),"jdbc")
This has the same output.
I also tried logInfo("Test","Maximum Battery Voltage " + BYD_Voltage.previousState())
This returns …
Maximum Battery Voltage null
Is this even possible with jdbc:mysql ?
What am i getting wrong?
Do you have data that actually goes back five years? Many of the persistence engines have trouble working with times where there is no data.
That implies that perhaps your database doesn’t have any data at all. Have you configured mysql as your default? You are not specifying which persistence engine to use in these calls so it’s going to use the default as configured in MainUI. If you’ve confirmed that MySQL is in fact saving data double check that it’s the default.
The default persistance is MapDB - so yes, I will have to specify the service (I’m not 100% sure i have the correct format for doing that??).
I have changed the command to
logInfo("Test","Maximum Battery Voltage Since 1 years " + BYD_Voltage.maximumSince(ZonedDateTime.now.minusYears(1)),"jdbc:mysql")
logInfo("Test","Maximum Battery Voltage " + BYD_Voltage.previousState(),"jdbc:mysql")
to reduce the 5 years of data to 1 year (I do have ,more one year of data in the database).
The output is the same …
2022-07-08 09:48:24.539 [INFO ] [org.openhab.core.model.script.Test ] - Maximum Battery Voltage Since 1 years org.openhab.core.persistence.extensions.PersistenceExtensions$1@1105db2
2022-07-08 09:48:24.543 [INFO ] [org.openhab.core.model.script.Test ] - Maximum Battery Voltage null
The defination for the item is
Number BYD_Voltage "BYD Battery Voltage [%.2fv]" <voltage> (gSQLpersist_every10Min,gBatVolts)
Awsome! Thanks @rlkoshk (and “Doh” that I missed that),
logInfo("Test","Maximum Battery Voltage Since 1 years " + BYD_Voltage.maximumSince(ZonedDateTime.now.minusYears(1),"jdbc"))
results in
2022-07-08 12:35:46.744 [INFO ] [org.openhab.core.model.script.Test ] - Maximum Battery Voltage Since 1 years JdbcItem [name=BYD_Voltage, state=56.65999984741211, timestamp=2021-11-28T19:40+10:00[Australia/Brisbane]]
Remember that maximumSince and other persistence calls will return a HistoricState which carries both the state and a timestamp for when that state was saved to the database.