From 68e05bef31c620272f3360ca1b3cac45a390a057 Mon Sep 17 00:00:00 2001 From: zepala <46625678+zepala@users.noreply.github.com> Date: Sat, 4 Jan 2025 08:33:04 +0100 Subject: [PATCH 1/2] Change percent_open calculation method (#772) * Change percent_open calculation method Modified 'percent_open' calculation method : - Before : If < min_opening_degree then =min_opening_degree - Now : Each % step is calculated (100 - min_opening_degree)/100 * Code aesthetics * Code aesthetics * Updated test_overclimate_valve.py --- .../versatile_thermostat/underlyings.py | 13 ++++++++++--- tests/test_overclimate_valve.py | 8 ++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/custom_components/versatile_thermostat/underlyings.py b/custom_components/versatile_thermostat/underlyings.py index a79a918..47f8bf5 100644 --- a/custom_components/versatile_thermostat/underlyings.py +++ b/custom_components/versatile_thermostat/underlyings.py @@ -1080,10 +1080,17 @@ async def send_percent_open(self): ) return - # Send opening_degree - if 0 < self._percent_open < self._min_opening_degree: - self._percent_open = self._min_opening_degree + # Caclulate percent_open + if self._percent_open >= 1: + self._percent_open = round( + self._min_opening_degree + + (self._percent_open + * (100 - self._min_opening_degree) / 100) + ) + else: + self._percent_open = 0 + # Send opening_degree await super().send_percent_open() # Send closing_degree if set diff --git a/tests/test_overclimate_valve.py b/tests/test_overclimate_valve.py index cbfcbd9..a29cd4c 100644 --- a/tests/test_overclimate_valve.py +++ b/tests/test_overclimate_valve.py @@ -627,11 +627,11 @@ async def test_over_climate_valve_multi_min_opening_degrees( assert mock_service_call.call_count == 6 mock_service_call.assert_has_calls([ # min is 60 - call(domain='number', service='set_value', service_data={'value': 60}, target={'entity_id': 'number.mock_opening_degree1'}), - call(domain='number', service='set_value', service_data={'value': 40}, target={'entity_id': 'number.mock_closing_degree1'}), + call(domain='number', service='set_value', service_data={'value': 68}, target={'entity_id': 'number.mock_opening_degree1'}), + call(domain='number', service='set_value', service_data={'value': 32}, target={'entity_id': 'number.mock_closing_degree1'}), call(domain='number', service='set_value', service_data={'value': 3.0}, target={'entity_id': 'number.mock_offset_calibration1'}), - call(domain='number', service='set_value', service_data={'value': 70}, target={'entity_id': 'number.mock_opening_degree2'}), - call(domain='number', service='set_value', service_data={'value': 30}, target={'entity_id': 'number.mock_closing_degree2'}), + call(domain='number', service='set_value', service_data={'value': 76}, target={'entity_id': 'number.mock_opening_degree2'}), + call(domain='number', service='set_value', service_data={'value': 24}, target={'entity_id': 'number.mock_closing_degree2'}), call(domain='number', service='set_value', service_data={'value': 12}, target={'entity_id': 'number.mock_offset_calibration2'}) ] ) From 9c8a965dba44693ac7651cae85bdedcceee34fd8 Mon Sep 17 00:00:00 2001 From: Jean-Marc Collin Date: Sun, 5 Jan 2025 15:32:01 +0100 Subject: [PATCH 2/2] Update creation.md --- documentation/fr/creation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/fr/creation.md b/documentation/fr/creation.md index 6305c04..aafeb1b 100644 --- a/documentation/fr/creation.md +++ b/documentation/fr/creation.md @@ -50,7 +50,7 @@ Les entités sous-jacentes sont donc des `switchs` ou des `input_boolean`. Lorsque votre équipement est contrôlé par une entité de type `climate` dans Home Assistant et que vous n'avez que ça à disposition, vous devez utiliser ce type de VTherm. Dans ce cas, le VTherm va simplement commander la température de consigne du `climate` sous-jacent. Ce type est aussi équipé de fonction d' auto-régulations avancées permettant de moduler la consigne donnée aux sous-jacent pour atteindre plus vite la consigne et de s'affranchir de la régulation interne de ces équipements qui est parfois mauvaise. C'est le cas, si le thermomètre interne de l'équipement est trop proche du corps de chauffe. L'équipement peut croire qu'il fait chaud alors qu'au bout de la pièce, la consigne n'est pas du tout atteinte. -Depuis la version 6.8, ce type de VTherm permet aussi de réguler avec une action directe sur la vanne. Idéal pour les _TRV_ pour lesquels la vanne est commandable, ce type est recommandé si vous êtes équipés. +Depuis la version 6.8, ce type de VTherm permet aussi de réguler avec une action directe sur la vanne. Idéal pour les _TRV_ pour lesquels la vanne est commandable, comme les Sonoff TRVZB, ce type est recommandé si vous êtes équipés. Les entités sous-jacentes de ce type de VTherm sont donc des `climate` exclusivement.