diff --git a/huawei/huaweifusionsolar.cpp b/huawei/huaweifusionsolar.cpp index e78c6ad..62bfafc 100644 --- a/huawei/huaweifusionsolar.cpp +++ b/huawei/huaweifusionsolar.cpp @@ -448,6 +448,19 @@ void HuaweiFusionSolar::readNextRegister() qCWarning(dcHuaweiFusionSolar()) << "<-- Received invalid values. Requested" << 1 << "but received" << unit.values(); } else { processLunaBattery1StatusRegisterValues(unit.values()); + switch (m_lunaBattery1Status) { + case HuaweiFusionSolar::BatteryDeviceStatusFault: + case HuaweiFusionSolar::BatteryDeviceStatusStandby: + case HuaweiFusionSolar::BatteryDeviceStatusOffline: + case HuaweiFusionSolar::BatteryDeviceStatusSleepMode: + m_battery1Available = false; + m_lunaBattery1Power = 0; + emit lunaBattery1PowerChanged(m_lunaBattery1Power); + break; + case HuaweiFusionSolar::BatteryDeviceStatusRunning: + m_battery1Available = true; + break; + } } } finishRequest(); @@ -578,6 +591,19 @@ void HuaweiFusionSolar::readNextRegister() qCWarning(dcHuaweiFusionSolar()) << "<-- Received invalid values count. Requested" << 1 << "but received" << unit.values(); } else { processLunaBattery2StatusRegisterValues(unit.values()); + switch (m_lunaBattery2Status) { + case HuaweiFusionSolar::BatteryDeviceStatusFault: + case HuaweiFusionSolar::BatteryDeviceStatusStandby: + case HuaweiFusionSolar::BatteryDeviceStatusOffline: + case HuaweiFusionSolar::BatteryDeviceStatusSleepMode: + m_battery2Available = false; + m_lunaBattery2Power = 0; + emit lunaBattery2PowerChanged(m_lunaBattery2Power); + break; + case HuaweiFusionSolar::BatteryDeviceStatusRunning: + m_battery2Available = true; + break; + } } } finishRequest(); diff --git a/huawei/huaweifusionsolar.h b/huawei/huaweifusionsolar.h index 58a8260..9eb4cdd 100644 --- a/huawei/huaweifusionsolar.h +++ b/huawei/huaweifusionsolar.h @@ -55,8 +55,8 @@ private: int m_currentRegisterRequest = -1; void finishRequest(); - bool m_battery1Available = true; - bool m_battery2Available = true; + bool m_battery1Available = false; + bool m_battery2Available = false; double m_actualInverterPower = 0;