Просмотр исходного кода

Summary: Water heater: set support flag when ON_OFF is supported

This did not used to be enforced by Home Assistant, but something has
changed recently to make it no longer work without them.

Issue #2315
Jason Rumney 1 год назад
Родитель
Сommit
b89611bb2d

+ 5 - 4
custom_components/tuya_local/water_heater.py

@@ -68,12 +68,13 @@ class TuyaLocalWaterHeater(TuyaLocalEntity, WaterHeaterEntity):
 
 
         if self._operation_mode_dps:
         if self._operation_mode_dps:
             self._support_flags |= WaterHeaterEntityFeature.OPERATION_MODE
             self._support_flags |= WaterHeaterEntityFeature.OPERATION_MODE
+            if self._operation_mode_dps.type is bool:
+                self._support_flags |= WaterHeaterEntityFeature.ON_OFF
+            if "away" in self._operation_mode_dps.values(device):
+                self._support_flags |= WaterHeaterEntityFeature.AWAY_MODE
         if self._temperature_dps and not self._temperature_dps.readonly:
         if self._temperature_dps and not self._temperature_dps.readonly:
             self._support_flags |= WaterHeaterEntityFeature.TARGET_TEMPERATURE
             self._support_flags |= WaterHeaterEntityFeature.TARGET_TEMPERATURE
-        if self._away_mode_dps or (
-            self._operation_mode_dps
-            and "away" in self._operation_mode_dps.values(device)
-        ):
+        if self._away_mode_dps:
             self._support_flags |= WaterHeaterEntityFeature.AWAY_MODE
             self._support_flags |= WaterHeaterEntityFeature.AWAY_MODE
 
 
     @property
     @property

+ 1 - 1
tests/devices/test_hydrotherm_dynamicx8.py

@@ -44,7 +44,7 @@ class TestHydrothermDynamicX8(
     def test_supported_features(self):
     def test_supported_features(self):
         self.assertEqual(
         self.assertEqual(
             self.subject.supported_features,
             self.subject.supported_features,
-            WaterHeaterEntityFeature.OPERATION_MODE,
+            WaterHeaterEntityFeature.OPERATION_MODE | WaterHeaterEntityFeature.ON_OFF,
         )
         )
 
 
     def test_temperature_unit_returns_celsius(self):
     def test_temperature_unit_returns_celsius(self):

+ 2 - 1
tests/devices/test_thermex_if50v.py

@@ -45,7 +45,8 @@ class TestThermexIF50V(
             self.subject.supported_features,
             self.subject.supported_features,
             WaterHeaterEntityFeature.OPERATION_MODE
             WaterHeaterEntityFeature.OPERATION_MODE
             | WaterHeaterEntityFeature.TARGET_TEMPERATURE
             | WaterHeaterEntityFeature.TARGET_TEMPERATURE
-            | WaterHeaterEntityFeature.AWAY_MODE,
+            | WaterHeaterEntityFeature.AWAY_MODE
+            | WaterHeaterEntityFeature.ON_OFF,
         )
         )
 
 
     def test_temperature_unit_returns_celsius(self):
     def test_temperature_unit_returns_celsius(self):