Selaa lähdekoodia

Korex AXWF306N: use water_heater entity

- convert to use water heater entity
- temperature_unit made into a select (assuming it effects units displayed on unit, otherwise it seems pointless as an indicator only when units are fixed to F in the sensor).

PR #3301
Jason Rumney 9 kuukautta sitten
vanhempi
commit
dfb324e263

+ 98 - 42
custom_components/tuya_local/devices/korex_axwf306n_smart_kettle.yaml

@@ -1,45 +1,103 @@
-name: Korex smart kettle
+name: Kettle
 products:
   - id: 2vuvtw0cj8wmjrpc
     manufacturer: Korex
-    model: "AX-WF306N"
+    model: AX-WF306N
 entities:
-  - entity: switch
-    name: Power
+  - entity: water_heater
+    translation_key: kettle
     dps:
       - id: 1
         type: boolean
-        name: switch
+        name: operation_mode
         mapping:
           - dps_val: false
-            icon: "mdi:kettle-off"
+            value: "off"
           - dps_val: true
-            icon: "mdi:kettle"
-  - entity: sensor
-    name: Current water temperature
-    category: diagnostic
-    icon: "mdi:thermometer-check"
-    dps:
+            constraint: keep_warm
+            conditions:
+              - dps_val: false
+                value: heat
+              - dps_val: true
+                value: keep_warm
       - id: 5
         type: integer
-        name: sensor
+        name: current_temperature
+      - id: 101
+        type: string
+        name: temperature
         unit: F
-        class: measurement
-  - entity: switch
-    name: Keep temp
-    dps:
+        mapping:
+          - constraint: keep_warm
+            conditions:
+              - dps_val: false
+                range:
+                  min: 113
+                  max: 212
+                mapping:
+                  - dps_val: "0"
+                    value: 113  # actually off, but this avoids disjointed values
+                  - dps_val: "11"
+                    value: 122
+                  - dps_val: "10"
+                    value: 131
+                  - dps_val: "9"
+                    value: 140
+                  - dps_val: "8"
+                    value: 149
+                  - dps_val: "7"
+                    value: 158
+                  - dps_val: "6"
+                    value: 167
+                  - dps_val: "5"
+                    value: 176
+                  - dps_val: "4"
+                    value: 185
+                  - dps_val: "3"
+                    value: 194
+                  - dps_val: "2"
+                    value: 203
+                  - dps_val: "1"
+                    value: 212
+              - dps_val: true
+                range:
+                  min: 113
+                  max: 203
+                mapping:
+                  - dps_val: "0"
+                    value: 113  # actually off
+                  - dps_val: "10"
+                    value: 122
+                  - dps_val: "9"
+                    value: 131
+                  - dps_val: "8"
+                    value: 140
+                  - dps_val: "7"
+                    value: 149
+                  - dps_val: "6"
+                    value: 158
+                  - dps_val: "5"
+                    value: 167
+                  - dps_val: "4"
+                    value: 176
+                  - dps_val: "3"
+                    value: 185
+                  - dps_val: "2"
+                    value: 194
+                  - dps_val: "1"
+                    value: 203
       - id: 103
         type: boolean
-        name: switch
-        mapping:
-          - dps_val: false
-            icon: "mdi:fire-off"
-          - dps_val: true
-            icon: "mdi:fire"
-  - entity: sensor
-    name: Temperature unit
-    class: enum
-    category: diagnostic
+        name: keep_warm
+        hidden: true
+      # data model says 104 can be: 0, 1, 2, 3, 4, 5
+      # but i don't know what this corresponds to.
+      - id: 104
+        type: string
+        name: status_reach
+  - entity: select
+    translation_key: temperature_unit
+    category: config
     dps:
       - id: 105
         type: string
@@ -49,31 +107,29 @@ entities:
             value: celcius
           - dps_val: f
             value: fahrenheit
-  - entity: sensor
-    name: Status reach
-    class: integer
-    category: diagnostic
-    dps:
-      # data model says 104 can be: 0, 1, 2, 3, 4, 5
-      # but i don't know what this corresponds to.
-      - id: 104
-        type: string
-        name: sensor
-  - entity: sensor
-    name: Fault
-    class: enum
+  - entity: binary_sensor
+    class: problem
     category: diagnostic
     dps:
       - id: 10
         type: bitfield
         name: sensor
         mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 10
+        type: bitfield
+        name: fault_code
+      - id: 10
+        type: bitfield
+        name: description
           - dps_val: 0
             value: "On base"
           - dps_val: 1
             value: "Off base"
   - entity: select
-    name: Boil to temperature
+    name: Heat to temperature
     translation_key: temperature
     dps:
       - id: 101
@@ -105,7 +161,7 @@ entities:
           - dps_val: "11"
             value: "50 C / 122 F"
   - entity: select
-    name: Boil and cool
+    name: Keep warm temperature
     translation_key: temperature
     dps:
       - id: 102