Selaa lähdekoodia

Convert some reset switches to buttons:

- catit_pet_feeder
- catit_pixi_smart_fountain
- essentials_purifier
- himox_h05_purifier
- himox_h06_purifier
- kyvol_e30_vacuum
- nashone_mts700wb_thermostat
- poiema_one_purifier
- smartmcb_smt006_energymeter
- t5e_wf_thermostat
- vork_vk6067aw_purifier
Jason Rumney 3 vuotta sitten
vanhempi
commit
6458c9db63

+ 9 - 0
custom_components/tuya_local/devices/catit_pet_feeder.yaml

@@ -26,7 +26,16 @@ secondary_entities:
         name: sensor
         type: integer
     type: integer
+  - entity: button
+    class: restart
+    name: Factory reset
+    category: config
+    dps:
+      - id: 103
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     icon: "mdi:cog-refresh"
     name: Factory reset
     category: config

+ 10 - 0
custom_components/tuya_local/devices/catit_pixi_smart_fountain.yaml

@@ -9,7 +9,17 @@ primary_entity:
       type: boolean
       name: switch
 secondary_entities:
+  - entity: button
+    name: Filter replaced
+    class: restart
+    category: config
+    dps:
+      - id: 7
+        type: boolean
+        name: button
+
   - entity: switch
+    deprecated: button
     name: Filter replaced
     icon: "mdi:air-filter"
     category: config

+ 9 - 0
custom_components/tuya_local/devices/essentials_purifier.yaml

@@ -58,7 +58,16 @@ secondary_entities:
             icon: "mdi:lightbulb"
           - dps_val: false
             icon: "mdi:lightbulb-outline"
+  - entity: button
+    name: Filter reset
+    class: restart
+    category: config
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     icon: "mdi:refresh"

+ 9 - 0
custom_components/tuya_local/devices/himox_h05_purifier.yaml

@@ -50,7 +50,16 @@ secondary_entities:
             icon: "mdi:hand-back-right-off"
           - dps_val: false
             icon: "mdi:hand-back-right"
+  - entity: button
+    name: Filter reset
+    class: restart
+    category: config
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     dps:

+ 9 - 0
custom_components/tuya_local/devices/himox_h06_purifier.yaml

@@ -33,7 +33,16 @@ secondary_entities:
       - id: 8
         type: boolean
         name: switch
+  - entity: button
+    name: Filter reset
+    category: config
+    class: restart
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     dps:

+ 27 - 0
custom_components/tuya_local/devices/kyvol_e30_vacuum.yaml

@@ -141,7 +141,16 @@ secondary_entities:
         unit: m2
         mapping:
           - scale: 10
+  - entity: button
+    name: Edge brush reset
+    class: restart
+    category: config
+    dps:
+      - id: 10
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Edge brush reset
     category: config
     icon: "mdi:arrow-expand-all"
@@ -149,7 +158,16 @@ secondary_entities:
       - id: 10
         type: boolean
         name: switch
+  - entity: button
+    name: Roll brush reset
+    class: restart
+    category: config
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Roll brush reset
     icon: "mdi:refresh-circle"
     category: config
@@ -157,7 +175,16 @@ secondary_entities:
       - id: 11
         type: boolean
         name: switch
+  - entity: button
+    name: Filter reset
+    category: config
+    class: restart
+    dps:
+      - id: 12
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     icon: "mdi:air-filter"

+ 9 - 0
custom_components/tuya_local/devices/nashone_mts700wb_thermostat.yaml

@@ -75,7 +75,16 @@ secondary_entities:
         range:
           min: -5
           max: 5
+  - entity: button
+    name: Factory reset
+    category: config
+    class: restart
+    dps:
+      - id: 39
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     category: config
     name: Factory reset
     icon: "mdi:cog-refresh"

+ 9 - 0
custom_components/tuya_local/devices/poiema_one_purifier.yaml

@@ -52,7 +52,16 @@ secondary_entities:
             icon: "mdi:hand-back-right-off"
           - dps_val: false
             icon: "mdi:hand-back-right"
+  - entity: button
+    name: Filter reset
+    category: config
+    class: restart
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     icon: "mdi:refresh"

+ 9 - 0
custom_components/tuya_local/devices/smartmcb_smt006_energymeter.yaml

@@ -252,7 +252,16 @@ secondary_entities:
       - id: 11
         type: boolean
         name: switch
+  - entity: button
+    name: Energy reset
+    category: config
+    class: restart
+    dps:
+      - id: 12
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Energy reset
     category: config
     icon: "mdi:cog-refresh"

+ 9 - 0
custom_components/tuya_local/devices/t5e_wf_thermostat.yaml

@@ -344,7 +344,16 @@ secondary_entities:
             value: 5 + 2
           - dps_val: 6_1
             value: 6 + 1
+  - entity: button
+    name: Factory reset
+    category: config
+    class: restart
+    dps:
+      - id: 39
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Factory reset
     category: config
     icon: "mdi:store-cog"

+ 9 - 0
custom_components/tuya_local/devices/vork_vk6067aw_purifier.yaml

@@ -46,7 +46,16 @@ secondary_entities:
               icon: "mdi:led-on"
             - dps_val: false
               icon: "mdi:led-off"
+  - entity: button
+    name: Filter reset
+    category: config
+    class: restart
+    dps:
+      - id: 11
+        type: boolean
+        name: button
   - entity: switch
+    deprecated: button
     name: Filter reset
     category: config
     icon: "mdi:refresh"

+ 9 - 0
tests/devices/test_essentials_purifier.py

@@ -1,4 +1,5 @@
 """Tests for the essentials air purifier."""
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.sensor import SensorDeviceClass
 from homeassistant.const import (
     CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
@@ -7,6 +8,7 @@ from homeassistant.const import (
 )
 
 from ..const import ESSENTIALS_PURIFIER_PAYLOAD
+from ..mixins.button import BasicButtonTests
 from ..mixins.lock import BasicLockTests
 from ..mixins.select import MultiSelectTests
 from ..mixins.sensor import MultiSensorTests
@@ -27,6 +29,7 @@ LIGHT_DP = "101"
 
 
 class TestEssentialsPurifier(
+    BasicButtonTests,
     BasicLockTests,
     MultiSelectTests,
     MultiSensorTests,
@@ -37,6 +40,11 @@ class TestEssentialsPurifier(
 
     def setUp(self):
         self.setUpForConfig("essentials_purifier.yaml", ESSENTIALS_PURIFIER_PAYLOAD)
+        self.setUpBasicButton(
+            RESET_DP,
+            self.entities.get("button_filter_reset"),
+            ButtonDeviceClass.RESTART,
+        )
         self.setUpBasicLock(LOCK_DP, self.entities.get("lock_child_lock"))
         self.setUpMultiSelect(
             [
@@ -114,6 +122,7 @@ class TestEssentialsPurifier(
         )
         self.mark_secondary(
             [
+                "button_filter_reset",
                 "sensor_active_filter_life",
                 "lock_child_lock",
                 "select_light",

+ 9 - 0
tests/devices/test_himox_h05_purifier.py

@@ -1,3 +1,4 @@
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.fan import FanEntityFeature
 from homeassistant.components.sensor import (
     SensorDeviceClass,
@@ -11,6 +12,7 @@ from homeassistant.const import (
 
 from ..const import HIMOX_H05_PURIFIER_PAYLOAD
 from ..helpers import assert_device_properties_set
+from ..mixins.button import BasicButtonTests
 from ..mixins.lock import BasicLockTests
 from ..mixins.select import BasicSelectTests
 from ..mixins.sensor import MultiSensorTests
@@ -28,6 +30,7 @@ AQI_DPS = "21"
 
 
 class TestHimoxH05Purifier(
+    BasicButtonTests,
     BasicLockTests,
     BasicSwitchTests,
     BasicSelectTests,
@@ -41,6 +44,11 @@ class TestHimoxH05Purifier(
         self.setUpForConfig("himox_h05_purifier.yaml", HIMOX_H05_PURIFIER_PAYLOAD)
         self.subject = self.entities["fan"]
         self.setUpSwitchable(SWITCH_DPS, self.subject)
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_filter_reset"),
+            ButtonDeviceClass.RESTART,
+        )
         self.setUpBasicLock(LOCK_DPS, self.entities.get("lock_child_lock"))
         self.setUpBasicSelect(
             TIMER_DPS,
@@ -76,6 +84,7 @@ class TestHimoxH05Purifier(
         )
         self.mark_secondary(
             [
+                "button_filter_reset",
                 "lock_child_lock",
                 "switch_filter_reset",
                 "sensor_active_filter_life",

+ 9 - 0
tests/devices/test_himox_h06_purifier.py

@@ -1,3 +1,4 @@
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.fan import FanEntityFeature
 from homeassistant.const import (
     PERCENTAGE,
@@ -6,6 +7,7 @@ from homeassistant.const import (
 
 from ..const import HIMOX_H06_PURIFIER_PAYLOAD
 from ..helpers import assert_device_properties_set
+from ..mixins.button import BasicButtonTests
 from ..mixins.light import BasicLightTests
 from ..mixins.select import MultiSelectTests
 from ..mixins.sensor import MultiSensorTests
@@ -24,6 +26,7 @@ MODE_DPS = "101"
 
 
 class TestHimoxH06Purifier(
+    BasicButtonTests,
     BasicLightTests,
     BasicSwitchTests,
     MultiSelectTests,
@@ -37,6 +40,11 @@ class TestHimoxH06Purifier(
         self.setUpForConfig("himox_h06_purifier.yaml", HIMOX_H06_PURIFIER_PAYLOAD)
         self.subject = self.entities["fan"]
         self.setUpSwitchable(SWITCH_DPS, self.subject)
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_filter_reset"),
+            ButtonDeviceClass.RESTART,
+        )
         self.setUpBasicLight(LIGHT_DPS, self.entities.get("light_aq_indicator"))
         self.setUpMultiSelect(
             [
@@ -81,6 +89,7 @@ class TestHimoxH06Purifier(
         )
         self.mark_secondary(
             [
+                "button_filter_reset",
                 "light_aq_indicator",
                 "switch_filter_reset",
                 "sensor_active_filter_life",

+ 27 - 1
tests/devices/test_kyvol_e30_vacuum.py

@@ -1,3 +1,4 @@
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.vacuum import (
     STATE_CLEANING,
     STATE_DOCKED,
@@ -13,6 +14,7 @@ from homeassistant.const import (
 
 from ..const import KYVOL_E30_VACUUM_PAYLOAD
 from ..helpers import assert_device_properties_set
+from ..mixins.button import MultiButtonTests
 from ..mixins.sensor import MultiSensorTests
 from ..mixins.switch import MultiSwitchTests
 from .base_device_tests import TuyaDeviceTestCase
@@ -40,12 +42,33 @@ MODE_DPS = "104"
 CARPET_DPS = "107"
 
 
-class TestKyvolE30Vacuum(MultiSensorTests, MultiSwitchTests, TuyaDeviceTestCase):
+class TestKyvolE30Vacuum(
+    MultiButtonTests, MultiSensorTests, MultiSwitchTests, TuyaDeviceTestCase
+):
     __test__ = True
 
     def setUp(self):
         self.setUpForConfig("kyvol_e30_vacuum.yaml", KYVOL_E30_VACUUM_PAYLOAD)
         self.subject = self.entities.get("vacuum")
+        self.setUpMultiButtons(
+            [
+                {
+                    "dps": RSTEDGE_DPS,
+                    "name": "button_edge_brush_reset",
+                    "device_class": ButtonDeviceClass.RESTART,
+                },
+                {
+                    "dps": RSTROLL_DPS,
+                    "name": "button_roll_brush_reset",
+                    "device_class": ButtonDeviceClass.RESTART,
+                },
+                {
+                    "dps": RSTFILTER_DPS,
+                    "name": "button_filter_reset",
+                    "device_class": ButtonDeviceClass.RESTART,
+                },
+            ]
+        )
         self.setUpMultiSensors(
             [
                 {
@@ -98,6 +121,9 @@ class TestKyvolE30Vacuum(MultiSensorTests, MultiSwitchTests, TuyaDeviceTestCase)
         )
         self.mark_secondary(
             [
+                "button_edge_brush_reset",
+                "button_roll_brush_reset",
+                "button_filter_reset",
                 "sensor_clean_area",
                 "sensor_clean_time",
                 "sensor_edge_brush",

+ 9 - 0
tests/devices/test_nashone_mts700wb_thermostat.py

@@ -1,3 +1,4 @@
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.climate.const import (
     ClimateEntityFeature,
     HVACMode,
@@ -8,6 +9,7 @@ from homeassistant.const import (
 
 from ..const import NASHONE_MTS700WB_THERMOSTAT_PAYLOAD
 from ..helpers import assert_device_properties_set
+from ..mixins.button import BasicButtonTests
 from ..mixins.climate import TargetTemperatureTests
 from ..mixins.number import BasicNumberTests
 from ..mixins.select import BasicSelectTests
@@ -30,6 +32,7 @@ COUNTDOWN_DPS = "42"
 
 
 class TestNashoneMTS700WBThermostat(
+    BasicButtonTests,
     BasicNumberTests,
     BasicSelectTests,
     BasicSensorTests,
@@ -51,6 +54,11 @@ class TestNashoneMTS700WBThermostat(
             min=-20,
             max=105,
         )
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_factory_reset"),
+            device_class=ButtonDeviceClass.RESTART,
+        )
         self.setUpBasicNumber(
             CALIBOFFSET_DPS,
             self.entities.get("number_calibration_offset"),
@@ -77,6 +85,7 @@ class TestNashoneMTS700WBThermostat(
         )
         self.mark_secondary(
             [
+                "button_factory_reset",
                 "number_calibration_offset",
                 "select_timer",
                 "sensor_timer",

+ 9 - 0
tests/devices/test_poiema_one_purifier.py

@@ -1,3 +1,4 @@
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.fan import FanEntityFeature
 from homeassistant.components.sensor import SensorDeviceClass
 from homeassistant.const import (
@@ -7,6 +8,7 @@ from homeassistant.const import (
 
 from ..const import POIEMA_ONE_PURIFIER_PAYLOAD
 from ..helpers import assert_device_properties_set
+from ..mixins.button import BasicButtonTests
 from ..mixins.lock import BasicLockTests
 from ..mixins.select import BasicSelectTests
 from ..mixins.sensor import MultiSensorTests
@@ -24,6 +26,7 @@ COUNTDOWN_DPS = "19"
 
 
 class TestPoeimaOnePurifier(
+    BasicButtonTests,
     BasicLockTests,
     BasicSelectTests,
     BasicSwitchTests,
@@ -37,6 +40,11 @@ class TestPoeimaOnePurifier(
         self.setUpForConfig("poiema_one_purifier.yaml", POIEMA_ONE_PURIFIER_PAYLOAD)
         self.subject = self.entities["fan"]
         self.setUpSwitchable(SWITCH_DPS, self.subject)
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_filter_reset"),
+            ButtonDeviceClass.RESTART,
+        )
         self.setUpBasicLock(LOCK_DPS, self.entities.get("lock_child_lock"))
         self.setUpBasicSelect(
             TIMER_DPS,
@@ -69,6 +77,7 @@ class TestPoeimaOnePurifier(
         )
         self.mark_secondary(
             [
+                "button_filter_reset",
                 "lock_child_lock",
                 "switch_filter_reset",
                 "select_timer",

+ 9 - 0
tests/devices/test_smartmcb_smt006_energymeter.py

@@ -1,5 +1,6 @@
 """Tests for the SmartMCB SMT006 Energy Meter"""
 from homeassistant.components.binary_sensor import BinarySensorDeviceClass
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.sensor import (
     SensorDeviceClass,
     STATE_CLASS_TOTAL,
@@ -9,6 +10,7 @@ from homeassistant.const import UnitOfEnergy
 
 from ..const import SMARTMCB_SMT006_METER_PAYLOAD
 from ..mixins.binary_sensor import MultiBinarySensorTests
+from ..mixins.button import BasicButtonTests
 from ..mixins.sensor import MultiSensorTests
 from ..mixins.switch import MultiSwitchTests
 from .base_device_tests import TuyaDeviceTestCase
@@ -29,6 +31,7 @@ UNKNOWN106_DPS = "106"
 
 
 class TestSmartMcbSMT006EnergyMeter(
+    BasicButtonTests,
     MultiBinarySensorTests,
     MultiSensorTests,
     MultiSwitchTests,
@@ -42,6 +45,11 @@ class TestSmartMcbSMT006EnergyMeter(
             SMARTMCB_SMT006_METER_PAYLOAD,
         )
 
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_energy_reset"),
+            ButtonDeviceClass.RESTART,
+        )
         self.setUpMultiSwitch(
             [
                 {
@@ -204,6 +212,7 @@ class TestSmartMcbSMT006EnergyMeter(
                 "binary_sensor_surge",
                 "binary_sensor_unbalanced",
                 "binary_sensor_undervoltage",
+                "button_energy_reset",
                 "sensor_balance_energy",
                 "switch_energy_reset",
                 "switch_prepay",

+ 9 - 0
tests/devices/test_vork_vk6067aw_purifier.py

@@ -1,4 +1,5 @@
 from homeassistant.components.binary_sensor import BinarySensorDeviceClass
+from homeassistant.components.button import ButtonDeviceClass
 from homeassistant.components.fan import FanEntityFeature
 from homeassistant.const import (
     PERCENTAGE,
@@ -8,6 +9,7 @@ from homeassistant.const import (
 from ..const import VORK_VK6067_PURIFIER_PAYLOAD
 from ..helpers import assert_device_properties_set
 from ..mixins.binary_sensor import BasicBinarySensorTests
+from ..mixins.button import BasicButtonTests
 from ..mixins.light import BasicLightTests
 from ..mixins.select import BasicSelectTests
 from ..mixins.sensor import MultiSensorTests
@@ -27,6 +29,7 @@ ERROR_DPS = "22"
 
 class TestVorkVK6267AWPurifier(
     BasicBinarySensorTests,
+    BasicButtonTests,
     BasicLightTests,
     BasicSelectTests,
     BasicSwitchTests,
@@ -57,6 +60,11 @@ class TestVorkVK6267AWPurifier(
             },
         )
         self.setUpBasicSwitch(RESET_DPS, self.entities.get("switch_filter_reset"))
+        self.setUpBasicButton(
+            RESET_DPS,
+            self.entities.get("button_filter_reset"),
+            device_class=ButtonDeviceClass.RESTART,
+        )
         self.setUpMultiSensors(
             [
                 {
@@ -79,6 +87,7 @@ class TestVorkVK6267AWPurifier(
         self.mark_secondary(
             [
                 "binary_sensor_error",
+                "button_filter_reset",
                 "light",
                 "select_timer",
                 "sensor_air_quality",