Ver Fonte

Poolex Qline: remove mute mode, as it is not included in iot.tuya.com API docs.

Merge mode into hvac_mode rather than a separate preset_mode, since the only modes left are cool and heat.
Increase temperature range according to iot.tuya.com docs.
Jason Rumney há 3 anos atrás
pai
commit
22d992c426

+ 15 - 12
custom_components/tuya_local/devices/poolex_qline_heatpump.yaml

@@ -11,27 +11,30 @@ primary_entity:
           icon: "mdi:hvac-off"
           icon_priority: 1
         - dps_val: true
-          value: "heat"
-          icon: "mdi:hot-tub"
-          icon_priority: 3
+          constraint: heating_mode
+          conditions:
+            - dps_val: cold
+              value: cool
+            - dps_val: heating
+              value: heat
     - id: 2
-      name: preset_mode
+      name: heating_mode
+      hidden: true
       type: string
+      icon_priority: 3
       mapping:
-        - dps_val: "cold"
-          value: "Cool"
-        - dps_val: "heating"
-          value: "Heat"
-        - dps_val: "mute"
-          value: "Silent Heat"
+        - dps_val: heating
+          icon: "mdi:hot-tub"
+        - dps_val: cold
+          icon: "mdi:snowflake"
     - id: 4
       name: temperature
       type: integer
       range:
-        min: 15
+        min: 8
         max: 40
     - id: 15
-      type: integer
+      type: bitfield
       name: error
       mapping:
         - dps_val: 0

+ 24 - 62
tests/devices/test_poolex_qline_heatpump.py

@@ -1,8 +1,8 @@
 from homeassistant.components.binary_sensor import BinarySensorDeviceClass
 from homeassistant.components.climate.const import (
+    HVAC_MODE_COOL,
     HVAC_MODE_HEAT,
     HVAC_MODE_OFF,
-    SUPPORT_PRESET_MODE,
     SUPPORT_TARGET_TEMPERATURE,
 )
 from homeassistant.const import STATE_UNAVAILABLE
@@ -14,9 +14,9 @@ from ..mixins.climate import TargetTemperatureTests
 from .base_device_tests import TuyaDeviceTestCase
 
 HVACMODE_DPS = "1"
+MODE_DPS = "2"
 TEMPERATURE_DPS = "4"
 CURRENTTEMP_DPS = "16"
-PRESET_DPS = "2"
 ERROR_DPS = "15"
 
 
@@ -33,7 +33,7 @@ class TestPoolexSilverlineHeatpump(
         self.setUpTargetTemperature(
             TEMPERATURE_DPS,
             self.subject,
-            min=15,
+            min=8,
             max=40,
         )
         self.setUpBasicBinarySensor(
@@ -47,12 +47,17 @@ class TestPoolexSilverlineHeatpump(
     def test_supported_features(self):
         self.assertEqual(
             self.subject.supported_features,
-            SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE,
+            SUPPORT_TARGET_TEMPERATURE,
         )
 
     def test_icon(self):
         self.dps[HVACMODE_DPS] = True
+        self.dps[MODE_DPS] = "heating"
         self.assertEqual(self.subject.icon, "mdi:hot-tub")
+        self.dps[MODE_DPS] = "cold"
+        self.assertEqual(self.subject.icon, "mdi:snowflake")
+        self.dps[ERROR_DPS] = 1
+        self.assertEqual(self.subject.icon, "mdi:water-pump-off")
         self.dps[HVACMODE_DPS] = False
         self.assertEqual(self.subject.icon, "mdi:hvac-off")
 
@@ -61,26 +66,18 @@ class TestPoolexSilverlineHeatpump(
             self.subject.temperature_unit, self.subject._device.temperature_unit
         )
 
-    async def test_legacy_set_temperature_with_preset_mode(self):
-        async with assert_device_properties_set(
-            self.subject._device, {PRESET_DPS: "cold"}
-        ):
-            await self.subject.async_set_temperature(preset_mode="Cool")
-
-    async def test_legacy_set_temperature_with_both_properties(self):
-        async with assert_device_properties_set(
-            self.subject._device, {TEMPERATURE_DPS: 26, PRESET_DPS: "heating"}
-        ):
-            await self.subject.async_set_temperature(temperature=26, preset_mode="Heat")
-
     def test_current_temperature(self):
         self.dps[CURRENTTEMP_DPS] = 25
         self.assertEqual(self.subject.current_temperature, 25)
 
     def test_hvac_mode(self):
         self.dps[HVACMODE_DPS] = True
+        self.dps[MODE_DPS] = "heating"
         self.assertEqual(self.subject.hvac_mode, HVAC_MODE_HEAT)
 
+        self.dps[MODE_DPS] = "cold"
+        self.assertEqual(self.subject.hvac_mode, HVAC_MODE_COOL)
+
         self.dps[HVACMODE_DPS] = False
         self.assertEqual(self.subject.hvac_mode, HVAC_MODE_OFF)
 
@@ -88,63 +85,28 @@ class TestPoolexSilverlineHeatpump(
         self.assertEqual(self.subject.hvac_mode, STATE_UNAVAILABLE)
 
     def test_hvac_modes(self):
-        self.assertCountEqual(self.subject.hvac_modes, [HVAC_MODE_OFF, HVAC_MODE_HEAT])
-
-    async def test_turn_on(self):
-        async with assert_device_properties_set(
-            self.subject._device, {HVACMODE_DPS: True}
-        ):
-            await self.subject.async_set_hvac_mode(HVAC_MODE_HEAT)
-
-    async def test_turn_off(self):
-        async with assert_device_properties_set(
-            self.subject._device, {HVACMODE_DPS: False}
-        ):
-            await self.subject.async_set_hvac_mode(HVAC_MODE_OFF)
-
-    def test_preset_mode(self):
-        self.dps[PRESET_DPS] = "heating"
-        self.assertEqual(self.subject.preset_mode, "Heat")
-
-        self.dps[PRESET_DPS] = "cold"
-        self.assertEqual(self.subject.preset_mode, "Cool")
-
-        self.dps[PRESET_DPS] = "mute"
-        self.assertEqual(self.subject.preset_mode, "Silent Heat")
-
-        self.dps[PRESET_DPS] = None
-        self.assertIs(self.subject.preset_mode, None)
-
-    def test_preset_modes(self):
         self.assertCountEqual(
-            self.subject.preset_modes,
-            [
-                "Heat",
-                "Cool",
-                "Silent Heat",
-            ],
+            self.subject.hvac_modes,
+            [HVAC_MODE_OFF, HVAC_MODE_COOL, HVAC_MODE_HEAT],
         )
 
-    async def test_set_preset_mode_to_heat(self):
+    async def test_hvac_mode_heat(self):
         async with assert_device_properties_set(
-            self.subject._device,
-            {PRESET_DPS: "heating"},
+            self.subject._device, {HVACMODE_DPS: True, MODE_DPS: "heating"}
         ):
-            await self.subject.async_set_preset_mode("Heat")
+            await self.subject.async_set_hvac_mode(HVAC_MODE_HEAT)
 
-    async def test_set_preset_mode_to_cool(self):
+    async def test_hvac_mode_cool(self):
         async with assert_device_properties_set(
-            self.subject._device,
-            {PRESET_DPS: "cold"},
+            self.subject._device, {HVACMODE_DPS: True, MODE_DPS: "cold"}
         ):
-            await self.subject.async_set_preset_mode("Cool")
+            await self.subject.async_set_hvac_mode(HVAC_MODE_COOL)
 
-    async def test_set_preset_mode_to_mute(self):
+    async def test_turn_off(self):
         async with assert_device_properties_set(
-            self.subject._device,
-            {PRESET_DPS: "mute"},
+            self.subject._device, {HVACMODE_DPS: False}
         ):
-            await self.subject.async_set_preset_mode("Silent Heat")
+            await self.subject.async_set_hvac_mode(HVAC_MODE_OFF)
 
     def test_error_state(self):
         self.dps[ERROR_DPS] = 0