Jelajahi Sumber

Add support for Create Warm Towel Advance bathroom heater

Issue #2423
Jason Rumney 1 tahun lalu
induk
melakukan
bbd4179057

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -729,3 +729,4 @@ Further device support has been made with the assistance of users. Please consid
 - [IamGimli](https://github.com/IamGimli) for contributing support for CE Smart Home LQ-2-W3 wall outlet.
 - [Thommav](https://github.com/Thommav) for assisting with support for ZPmeter 214C water meter.
 - [Esp32-zapper](https://github.com/Esp32-zapper) for assisting with support for HunterTBK video doorbell.
+- [masfernandez](https://github.com/masfernandez) for assisting with support for Create Warm Towel Advance bathroom heater.

+ 1 - 0
DEVICES.md

@@ -13,6 +13,7 @@
 - Caldo Up T fan heater
 - Calex Smart Convector heater
 - Cleverio AR10/AR20 panel heaters
+- Create Warm Towel Advance bathroom heater
 - Cronos GPH-D-DA heater
 - Devola patio heater
 - Dynasty BTX fireplace

+ 239 - 0
custom_components/tuya_local/devices/create_warmtoweladvance_heater.yaml

@@ -0,0 +1,239 @@
+name: Heater
+products:
+  - id: cior1o59zipid8xo
+    name: Create Warm Towel Advance
+primary_entity:
+  entity: climate
+  translation_only_key: heater
+  dps:
+    - id: 1
+      type: boolean
+      name: hvac_mode
+      mapping:
+        - dps_val: false
+          value: "off"
+        - dps_val: true
+          constraint: preset_mode
+          conditions:
+            - dps_val: P1
+              value: auto
+            - dps_val: [P2, P3]
+              value: auto
+              hidden: true
+            - dps_val: CF
+              value: heat
+            - dps_val: [EC, AF]
+              value: heat
+              hidden: true
+            - dps_val: ST
+              value: "off"
+              hidden: true
+            - dps_val: D2
+              value: dry
+            - dps_val: [D3, D4]
+              value: dry
+              hidden: true
+    - id: 2
+      type: integer
+      name: temperature
+      range:
+        min: 5
+        max: 35
+      unit: C
+      mapping:
+        - constraint: preset_mode
+          conditions:
+            - dps_val: EC
+              range:
+                min: 1
+                max: 31
+            - dps_val: AF
+              invalid: true
+    - id: 3
+      type: integer
+      name: current_temperature
+    - id: 4
+      type: string
+      name: preset_mode
+      mapping:
+        - dps_val: CF
+          value: comfort
+        - dps_val: EC
+          value: eco
+        - dps_val: P1
+          value: Daytime
+        - dps_val: P2
+          value: Morning+Evening
+        - dps_val: P3
+          value: Program
+        - dps_val: AF
+          value: away
+        - dps_val: ST
+          value: ST
+          hidden: true
+        - dps_val: D2
+          value: Dry 2
+        - dps_val: D3
+          value: Dry 3
+        - dps_val: D4
+          value: Dry 4
+    - id: 11
+      type: string
+      name: hvac_action
+      mapping:
+        - dps_val: standby
+          value: idle
+        - dps_val: working
+          value: heating
+          constraint: preset_mode
+          conditions:
+            - dps_val: [D2, D3, D4]
+              value: drying
+    - id: 26
+      type: string
+      optional: true
+      name: custom_program
+    - id: 109
+      type: boolean
+      name: fan_mode
+      mapping:
+        - dps_val: true
+          value: "on"
+        - dps_val: false
+          value: "off"
+secondary_entities:
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    dps:
+      - id: 7
+        type: boolean
+        name: lock
+  - entity: select
+    translation_key: timer
+    category: config
+    dps:
+      - id: 19
+        type: string
+        name: option
+        mapping:
+          - dps_val: cancel
+            value: cancel
+          - dps_val: 1h
+            value: 1h
+          - dps_val: 2h
+            value: 2h
+          - dps_val: 3h
+            value: 3h
+          - dps_val: 4h
+            value: 4h
+          - dps_val: 5h
+            value: 5h
+          - dps_val: 6h
+            value: 6h
+          - dps_val: 7h
+            value: 7h
+          - dps_val: 8h
+            value: 8h
+          - dps_val: 9h
+            value: 9h
+          - dps_val: 10h
+            value: 10h
+          - dps_val: 11h
+            value: 11h
+          - dps_val: 12h
+            value: 12h
+          - dps_val: 13h
+            value: 13h
+          - dps_val: 14h
+            value: 14h
+          - dps_val: 15h
+            value: 15h
+          - dps_val: 16h
+            value: 16h
+          - dps_val: 17h
+            value: 17h
+          - dps_val: 18h
+            value: 18h
+          - dps_val: 19h
+            value: 19h
+          - dps_val: 20h
+            value: 20h
+          - dps_val: 21h
+            value: 21h
+          - dps_val: 22h
+            value: 22h
+          - dps_val: 23h
+            value: 23h
+          - dps_val: 24h
+            value: 24h
+  - entity: sensor
+    translation_key: time_remaining
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 20
+        type: integer
+        name: sensor
+        unit: min
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 21
+        type: bitfield
+        optional: true
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - dps_val: null
+            value: false
+          - value: true
+      - id: 21
+        type: bitfield
+        name: fault_code
+        optional: true
+  - entity: switch
+    name: Night mode
+    icon: "mdi:weather-night"
+    category: config
+    dps:
+      - id: 103
+        type: boolean
+        name: switch
+  - entity: switch
+    name: Window check
+    icon: "mdi:window-open-variant"
+    category: config
+    dps:
+      - id: 104
+        type: boolean
+        name: switch
+  - entity: binary_sensor
+    class: window
+    category: diagnostic
+    dps:
+      - id: 105
+        type: boolean
+        name: sensor
+  - entity: number
+    name: Temperature calibration
+    category: config
+    icon: "mdi:thermometer-check"
+    dps:
+      - id: 106
+        type: integer
+        optional: true
+        name: value
+        unit: C
+        range:
+          min: 0
+          max: 40
+        mapping:
+          - dps_val: null
+            value_mirror: current_temperature
+      - id: 3
+        type: integer
+        name: current_temperature
+        hidden: true