From fd58ad2003a9ad9c55dfab962aa09575badced0c Mon Sep 17 00:00:00 2001 From: helgeerbe Date: Wed, 14 Jun 2023 16:21:58 +0200 Subject: [PATCH] feat(add ability to do a polite power meter read): --- include/PowerMeter.h | 2 +- src/PowerMeter.cpp | 12 +++++++----- src/WebApi_ws_live.cpp | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/PowerMeter.h b/include/PowerMeter.h index bb40b54f..fe8b88f4 100644 --- a/include/PowerMeter.h +++ b/include/PowerMeter.h @@ -40,7 +40,7 @@ public: void mqtt(); void loop(); void onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total); - float getPowerTotal(); + float getPowerTotal(bool forceUpdate = true); uint32_t getLastPowerMeterUpdate(); private: diff --git a/src/PowerMeter.cpp b/src/PowerMeter.cpp index cc14071a..dfc02f77 100644 --- a/src/PowerMeter.cpp +++ b/src/PowerMeter.cpp @@ -94,12 +94,14 @@ void PowerMeterClass::onMqttMessage(const espMqttClientTypes::MessageProperties& _lastPowerMeterUpdate = millis(); } -float PowerMeterClass::getPowerTotal() +float PowerMeterClass::getPowerTotal(bool forceUpdate) { - CONFIG_T& config = Configuration.get(); - if (config.PowerMeter_Enabled - && (millis() - _lastPowerMeterUpdate) < (1000)) { - readPowerMeter(); + if (forceUpdate) { + CONFIG_T& config = Configuration.get(); + if (config.PowerMeter_Enabled + && (millis() - _lastPowerMeterUpdate) > (1000)) { + readPowerMeter(); + } } return _powerMeter1Power + _powerMeter2Power + _powerMeter3Power; } diff --git a/src/WebApi_ws_live.cpp b/src/WebApi_ws_live.cpp index 545846a6..44b786bd 100644 --- a/src/WebApi_ws_live.cpp +++ b/src/WebApi_ws_live.cpp @@ -202,7 +202,7 @@ void WebApiWsLiveClass::generateJsonResponse(JsonVariant& root) JsonObject powerMeterObj = root.createNestedObject("power_meter"); powerMeterObj[F("enabled")] = Configuration.get().PowerMeter_Enabled; - addTotalField(powerMeterObj, "Power", PowerMeter.getPowerTotal(), "W", 1); + addTotalField(powerMeterObj, "Power", PowerMeter.getPowerTotal(false), "W", 1); }