From f62e687d3f2b65801693c8825754cd14de1b1b22 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 27 Oct 2024 04:31:35 +0300 Subject: [PATCH] fix: fixed pressure and flow validation when using correction --- src/OpenThermTask.h | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h index ccbaea2..3c6b366 100644 --- a/src/OpenThermTask.h +++ b/src/OpenThermTask.h @@ -1080,17 +1080,29 @@ protected: } float value = CustomOpenTherm::getFloat(response); - if (value < 0 || value > convertVolume(16, UnitSystem::METRIC, settings.opentherm.unitSystem)) { + if (value < 0) { return false; } - value = convertVolume( - value * settings.opentherm.dhwFlowRateFactor, + // correction + value = value * settings.opentherm.dhwFlowRateFactor; + + // no minuscule values + // some boilers send a response of 0.06 when there is no flow + if (value < 0.1f) { + value = 0.0f; + } + + // protocol declares a maximum of 16 l/m + //if (value > convertVolume(16.0f, UnitSystem::METRIC, settings.opentherm.unitSystem)) { + // value = 0.0f; + //} + + vars.sensors.dhwFlowRate = convertVolume( + value, settings.opentherm.unitSystem, settings.system.unitSystem ); - - vars.sensors.dhwFlowRate = value > 0.09f ? value : 0.0f; return true; } @@ -1180,12 +1192,20 @@ protected: } float value = CustomOpenTherm::getFloat(response); - if (value < 0 || value > convertPressure(5, UnitSystem::METRIC, settings.opentherm.unitSystem)) { + if (value < 0) { return false; } + // correction + value = value * settings.opentherm.pressureFactor; + + // protocol declares a maximum of 5 bar + //if (value > convertPressure(5.0f, UnitSystem::METRIC, settings.opentherm.unitSystem)) { + // value = 0.0f; + //} + value = convertPressure( - value * settings.opentherm.pressureFactor, + value, settings.opentherm.unitSystem, settings.system.unitSystem );