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;
|
bool mqttInitDone = false;
|
||||||
|
|
||||||
|
void readPowerMeter();
|
||||||
|
|
||||||
bool smlReadLoop();
|
bool smlReadLoop();
|
||||||
const std::list<OBISHandler> smlHandlerList{
|
const std::list<OBISHandler> smlHandlerList{
|
||||||
{{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power},
|
{{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power},
|
||||||
|
|||||||
@ -96,6 +96,11 @@ void PowerMeterClass::onMqttMessage(const espMqttClientTypes::MessageProperties&
|
|||||||
|
|
||||||
float PowerMeterClass::getPowerTotal()
|
float PowerMeterClass::getPowerTotal()
|
||||||
{
|
{
|
||||||
|
CONFIG_T& config = Configuration.get();
|
||||||
|
if (!config.PowerMeter_Enabled
|
||||||
|
|| (millis() - _lastPowerMeterUpdate) < (1000)) {
|
||||||
|
readPowerMeter();
|
||||||
|
}
|
||||||
return _powerMeter1Power + _powerMeter2Power + _powerMeter3Power;
|
return _powerMeter1Power + _powerMeter2Power + _powerMeter3Power;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,6 +142,19 @@ void PowerMeterClass::loop()
|
|||||||
return;
|
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;
|
uint8_t _address = config.PowerMeter_SdmAddress;
|
||||||
|
|
||||||
if (config.PowerMeter_Source == SOURCE_SDM1PH) {
|
if (config.PowerMeter_Source == SOURCE_SDM1PH) {
|
||||||
@ -169,12 +187,6 @@ void PowerMeterClass::loop()
|
|||||||
_lastPowerMeterUpdate = millis();
|
_lastPowerMeterUpdate = millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageOutput.printf("PowerMeterClass: TotalPower: %5.2f\r\n", getPowerTotal());
|
|
||||||
|
|
||||||
mqtt();
|
|
||||||
|
|
||||||
_lastPowerMeterCheck = millis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PowerMeterClass::smlReadLoop()
|
bool PowerMeterClass::smlReadLoop()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user