perf(PowerMeter): query PowerMeter on demand
In addition to the cyclic query of the power meters, they will be queried on demand when total power is requested and last update is older than 1 second.
This commit is contained in:
parent
8dac88e7b9
commit
86ee7e1a64
@ -60,6 +60,8 @@ private:
|
||||
|
||||
bool mqttInitDone = false;
|
||||
|
||||
void readPowerMeter();
|
||||
|
||||
bool smlReadLoop();
|
||||
const std::list<OBISHandler> smlHandlerList{
|
||||
{{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power},
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user