From 4a5d097a09ae7c0f21ff61f62413d2cec660768c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Mon, 4 Dec 2023 16:28:28 +0100 Subject: [PATCH] Huawei: Update battery behaviour depending on the battery state --- huawei/huaweifusionsolar.cpp | 26 ++++++++++++++++++++++++++ huawei/huaweifusionsolar.h | 4 ++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/huawei/huaweifusionsolar.cpp b/huawei/huaweifusionsolar.cpp index d8ae56e..5a2bbd9 100644 --- a/huawei/huaweifusionsolar.cpp +++ b/huawei/huaweifusionsolar.cpp @@ -356,6 +356,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(); @@ -486,6 +499,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;