From f01dd7c4bffad5814b9f341dcbc4f5ef4b20c355 Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Fri, 24 Jan 2025 11:57:39 +0100 Subject: [PATCH] fix: Make sure limit values sre consistent and not above 100% Ref: https://github.com/tbnobody/OpenDTU/issues/25 --- lib/Hoymiles/src/parser/SystemConfigParaParser.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Hoymiles/src/parser/SystemConfigParaParser.cpp b/lib/Hoymiles/src/parser/SystemConfigParaParser.cpp index f01af707..b6426dc2 100644 --- a/lib/Hoymiles/src/parser/SystemConfigParaParser.cpp +++ b/lib/Hoymiles/src/parser/SystemConfigParaParser.cpp @@ -47,7 +47,11 @@ float SystemConfigParaParser::getLimitPercent() const HOY_SEMAPHORE_TAKE(); const float ret = ((static_cast(_payload[2]) << 8) | _payload[3]) / 10.0; HOY_SEMAPHORE_GIVE(); - return ret; + + // don't pretend the inverter could produce more than its rated power, + // even though it does process, accept, and even save limit values beyond + // its rated power. + return min(100, ret); } void SystemConfigParaParser::setLimitPercent(const float value)