diff --git a/src/powermeter/sdm/serial/Provider.cpp b/src/powermeter/sdm/serial/Provider.cpp index 5c457680a..a1e3832d9 100644 --- a/src/powermeter/sdm/serial/Provider.cpp +++ b/src/powermeter/sdm/serial/Provider.cpp @@ -149,6 +149,7 @@ void Provider::pollingLoop() // reading takes a "very long" time as each readVal() is a synchronous // exchange of serial messages. cache the values and write later to // enforce consistent values. + float totalPower = 0.0; float phase1Power = 0.0; float phase2Power = 0.0; float phase3Power = 0.0; @@ -158,6 +159,11 @@ void Provider::pollingLoop() float energyImport = 0.0; float energyExport = 0.0; + auto dataInFlight = DataPointContainer(); + if (_phases == Phases::Three && readValue(lock, SDM_TOTAL_SYSTEM_POWER, totalPower)) { + dataInFlight.add(totalPower); + } + bool success = readValue(lock, SDM_PHASE_1_POWER, phase1Power) && readValue(lock, SDM_PHASE_1_VOLTAGE, phase1Voltage) && readValue(lock, SDM_IMPORT_ACTIVE_ENERGY, energyImport) && @@ -172,7 +178,6 @@ void Provider::pollingLoop() if (!success) { continue; } - auto dataInFlight = DataPointContainer(); dataInFlight.add(phase1Power); dataInFlight.add(phase1Voltage); dataInFlight.add(energyImport);