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

Inventor dehumidifier: further changes based on manual

- Separate humidifier switch from fan switch.
  Fan switch is off/on as before, humidifier switch is "operation", which switches between air_purifier and "dehumi_air"
- increase range of humidity - according to manual, range is 40-80 in 5% steps.
  assume these all map to the equivalent string, and use 0 for "CO" since this
  can also be set when in manual mode.  Rely on mapping snap handling rather
  than steps.
- remap fan speed to dp 112 when in air_purifier mode
- add Clothes drying mode from manual.  Guess that "drying" is that, and add
  "auto" (guess) for Auto mode.
- add select entities for light, assuming "1", "2", "3" mapping as per the order in the manual, and for air_purifier mode on dp 105
- move air quality from attribute to sensor to make it easier to surface in the UI

Issue #263
Jason Rumney 3 лет назад
Родитель
Сommit
516cb784e0

+ 103 - 24
custom_components/tuya_local/devices/inventor_atmospherexl_dehumidifier.yaml

@@ -3,8 +3,20 @@ primary_entity:
   entity: humidifier
   class: dehumidifier
   dps:
-    - id: 1
+    - id: 110
+      type: string
       name: switch
+      mapping:
+        - dps_val: "air_purifier"
+          value: false
+        - dps_val: "dehumi_air"
+          value: true
+          constraint: main_switch
+          conditions:
+            - dps_val: false
+              invalid: true
+    - id: 1
+      name: main_switch
       type: boolean
       mapping:
         - dps_val: false
@@ -17,28 +29,41 @@ primary_entity:
       type: string
       name: humidity
       range:
-        min: 40
-        max: 50
+        min: 0
+        max: 80
       mapping:
         - dps_val: "CO"
-          value: 30
-          step: 10
+          value: 0
         - dps_val: "40"
           value: 40
-          step: 10
+        - dps_val: "45"
+          value: 45
         - dps_val: "50"
           value: 50
-          step: 10
+        - dps_val: "55"
+          value: 55
+        - dps_val: "60"
+          value: 60
+        - dps_val: "65"
+          value: 65
+        - dps_val: "70"
+          value: 70
+        - dps_val: "75"
+          value: 75
+        - dps_val: "80"
+          value: 80
     - id: 5
       type: string
       name: mode
       mapping:
+        - dps_val: auto
+          value: Auto
+        - dps_val: manual
+          value: Manual
         - dps_val: drying
-          value: Dehumidify
+          value: Clothes
         - dps_val: night
           value: Sleep
-        - dps_val: manual
-          value: Manual
     - id: 19
       type: bitfield
       name: error_code
@@ -54,18 +79,6 @@ primary_entity:
     - id: 107
       type: integer
       name: lo
-    - id: 108
-      type: string
-      name: air_quality
-    - id: 110
-      type: string
-      name: operation
-    - id: 111
-      type: string
-      name: light
-    - id: 112
-      type: string
-      name: fan_speed_purifier
 secondary_entities:
   - entity: fan
     dps:
@@ -77,12 +90,41 @@ secondary_entities:
         type: string
         mapping:
           - dps_val: low
-            value: 50
+            value: 33
+            constraint: dehumid_mode
+            conditions:
+              - dps_val: air_purifier
+                value_redirect: fan_speed_purifier
+          - dps_val: middle
+            value: 66
+            constraint: dehumid_mode
+            conditions:
+              - dps_val: air_purifier
+                value_redirect: fan_speed_purifier
           - dps_val: high
             value: 100
+            constraint: dehumid_mode
+            conditions:
+              - dps_val: air_purifier
+                value_redirect: fan_speed_purifier
       - id: 8
         name: oscillate
         type: boolean
+      - id: 110
+        type: string
+        name: dehumid_mode
+        hidden: true
+      - id: 112
+        type: string
+        name: fan_speed_purifier
+        hidden: true
+        mapping:
+          - dps_val: low
+            value: 33
+          - dps_val: middle
+            value: 66
+          - dps_val: high
+            value: 100
   - entity: sensor
     class: humidity
     name: Room humidity
@@ -187,4 +229,41 @@ secondary_entities:
           - dps_val: 0
             value: false
           - value: true
-    
+  - entity: select
+    category: config
+    name: Purifier mode
+    icon: "mdi:cog"
+    dps:
+      - id: 105
+        type: string
+        name: option
+        mapping:
+        - dps_val: auto
+          value: Auto
+        - dps_val: manual
+          value: Manual
+        - dps_val: night
+          value: Sleep
+  - entity: select
+    category: config
+    name: Lighting
+    icon: "mdi:lightbulb"
+    dps:
+      - id: 111
+        type: string
+        name: option
+        mapping:
+          - dps_val: "1"
+            value: Display only
+          - dps_val: "2"
+            value: "Off"
+          - dps_val: "3"
+            value: "On"
+  - entity: sensor
+    category: diagnostic
+    name: Air quality
+    icon: "mdi:weather-dust"
+    dps:
+      - id: 108
+        type: string
+        name: sensor