diff --git a/include/PowerMeter.h b/include/PowerMeter.h index c7a106989..bb40b54fa 100644 --- a/include/PowerMeter.h +++ b/include/PowerMeter.h @@ -60,6 +60,8 @@ class PowerMeterClass { bool mqttInitDone = false; + void readPowerMeter(); + bool smlReadLoop(); const std::list smlHandlerList{ {{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power}, diff --git a/src/PowerMeter.cpp b/src/PowerMeter.cpp index 0c5e55b87..46a5f3c31 100644 --- a/src/PowerMeter.cpp +++ b/src/PowerMeter.cpp @@ -96,6 +96,11 @@ void PowerMeterClass::onMqttMessage(const espMqttClientTypes::MessageProperties& float PowerMeterClass::getPowerTotal() { + CONFIG_T& config = Configuration.get(); + if (!config.PowerMeter_Enabled + || (millis() - _lastPowerMeterUpdate) < (1000)) { + readPowerMeter(); + } return _powerMeter1Power + _powerMeter2Power + _powerMeter3Power; } @@ -137,6 +142,19 @@ void PowerMeterClass::loop() return; } + readPowerMeter(); + + MessageOutput.printf("PowerMeterClass: TotalPower: %5.2f\r\n", getPowerTotal()); + + mqtt(); + + _lastPowerMeterCheck = millis(); +} + +void PowerMeterClass::readPowerMeter() +{ + CONFIG_T& config = Configuration.get(); + uint8_t _address = config.PowerMeter_SdmAddress; if (config.PowerMeter_Source == SOURCE_SDM1PH) { @@ -169,12 +187,6 @@ void PowerMeterClass::loop() _lastPowerMeterUpdate = millis(); } } - - MessageOutput.printf("PowerMeterClass: TotalPower: %5.2f\r\n", getPowerTotal()); - - mqtt(); - - _lastPowerMeterCheck = millis(); } bool PowerMeterClass::smlReadLoop()