From 46824a1b8f6d99e402ca2a3b6c711daa51fe7dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Tue, 16 Dec 2025 17:02:19 +0100 Subject: [PATCH] Start implementing logdb fetch --- plugin/evdashengine.cpp | 32 ++++++++++++++++++++++++++++--- plugin/evdashengine.h | 4 +++- plugin/experiencepluginevdash.cpp | 2 +- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/plugin/evdashengine.cpp b/plugin/evdashengine.cpp index ea4c5b8..b67375e 100644 --- a/plugin/evdashengine.cpp +++ b/plugin/evdashengine.cpp @@ -35,6 +35,7 @@ #include "chargingsessionsdbusinterfaceclient.h" #include +#include #include #include @@ -51,9 +52,10 @@ #include Q_DECLARE_LOGGING_CATEGORY(dcEvDashExperience) -EvDashEngine::EvDashEngine(ThingManager *thingManager, EvDashWebServerResource *webServerResource, QObject *parent) +EvDashEngine::EvDashEngine(ThingManager *thingManager, LogEngine *logEngine, EvDashWebServerResource *webServerResource, QObject *parent) : QObject{parent}, m_thingManager{thingManager}, + m_logEngine{logEngine}, m_webServerResource{webServerResource} { Things configuredThings = m_thingManager->configuredThings(); @@ -525,6 +527,28 @@ QJsonObject EvDashEngine::packCharger(Thing *charger) const chargerObject.insert("pluggedIn", charger->stateValue("pluggedIn").toBool()); chargerObject.insert("chargingAllowed", charger->stateValue("power").toBool()); + QString stateName = "power"; + chargerObject.insert(stateName, charger->stateValue(stateName).toString()); + QString source = QString("state-%1-%2").arg(charger->id().toString(QUuid::WithBraces), stateName); + LogFetchJob *job = m_logEngine->fetchLogEntries( + {source}, + {stateName}, + {}, {}, {}, // start/end/filter + Types::SampleRateAny, + Qt::DescendingOrder, + 0, 1 // offset, limit + ); + + connect(job, &LogFetchJob::finished, this, [](const LogEntries &entries) { + if (entries.isEmpty()) { + qCDebug(dcEvDashExperience()) << "##### Last state change unknwon"; + return; + } + + //qint64 lastChangeMs = entries.first().timestamp().toMSecsSinceEpoch(); + qCDebug(dcEvDashExperience()) << "##### Last state change" << entries.first().timestamp().toString(); + }); + if (charger->hasState("currentVersion")) chargerObject.insert("version", charger->stateValue("currentVersion").toDouble()); @@ -541,8 +565,10 @@ QJsonObject EvDashEngine::packCharger(Thing *charger) const if (charger->hasState("error")) chargerObject.insert("error", charger->stateValue("error").toString()); - if (charger->hasState("status")) - chargerObject.insert("status", charger->stateValue("status").toString()); + if (charger->hasState("status")) { + + + } if (charger->hasState("digitalInputMode")) chargerObject.insert("digitalInputMode", charger->stateValue("digitalInputMode").toInt()); diff --git a/plugin/evdashengine.h b/plugin/evdashengine.h index 54b1278..52ee693 100644 --- a/plugin/evdashengine.h +++ b/plugin/evdashengine.h @@ -43,6 +43,7 @@ class QWebSocket; class QWebSocketServer; class Thing; +class LogEngine; class ThingManager; class EnergyManagerDbusClient; class EvDashWebServerResource; @@ -61,7 +62,7 @@ public: }; Q_ENUM(EvDashError) - explicit EvDashEngine(ThingManager *thingManager, EvDashWebServerResource *webServerResource, QObject *parent = nullptr); + explicit EvDashEngine(ThingManager *thingManager, LogEngine *logEngine, EvDashWebServerResource *webServerResource, QObject *parent = nullptr); ~EvDashEngine() override; bool enabled() const; @@ -78,6 +79,7 @@ private slots: private: ThingManager *m_thingManager = nullptr; + LogEngine *m_logEngine = nullptr; EvDashWebServerResource *m_webServerResource = nullptr; bool m_enabled = false; diff --git a/plugin/experiencepluginevdash.cpp b/plugin/experiencepluginevdash.cpp index 9c51289..3fc602e 100644 --- a/plugin/experiencepluginevdash.cpp +++ b/plugin/experiencepluginevdash.cpp @@ -50,7 +50,7 @@ void ExperiencePluginEvDash::init() qCDebug(dcEvDashExperience()) << "Initializing experience..."; m_resource = new EvDashWebServerResource(this); - m_engine = new EvDashEngine(thingManager(), m_resource, this); + m_engine = new EvDashEngine(thingManager(), logEngine(), m_resource, this); jsonRpcServer()->registerExperienceHandler(new EvDashJsonHandler(m_engine, m_resource, this), 1, 0); }