feat(add ability to do a polite power meter read):

This commit is contained in:
helgeerbe 2023-06-14 16:21:58 +02:00
parent 080a3eb29e
commit fd58ad2003
3 changed files with 9 additions and 7 deletions

View File

@ -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:

View File

@ -94,13 +94,15 @@ void PowerMeterClass::onMqttMessage(const espMqttClientTypes::MessageProperties&
_lastPowerMeterUpdate = millis();
}
float PowerMeterClass::getPowerTotal()
float PowerMeterClass::getPowerTotal(bool forceUpdate)
{
if (forceUpdate) {
CONFIG_T& config = Configuration.get();
if (config.PowerMeter_Enabled
&& (millis() - _lastPowerMeterUpdate) < (1000)) {
&& (millis() - _lastPowerMeterUpdate) > (1000)) {
readPowerMeter();
}
}
return _powerMeter1Power + _powerMeter2Power + _powerMeter3Power;
}

View File

@ -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);
}