Browse Source

feat(devices): add Computherm Q20 thermostat

Issue #4766
Jason Rumney 2 months ago
parent
commit
11ec317aa9
2 changed files with 263 additions and 0 deletions
  1. 1 0
      DEVICES.md
  2. 262 0
      custom_components/tuya_local/devices/computherm_q20_thermostat.yaml

+ 1 - 0
DEVICES.md

@@ -250,6 +250,7 @@
 - Beok TR9B _(rebadged as Vancoo and perhaps others)_, TR9B-AC2 thermostats
 - BHT-002-GALW and GABW thermostats _(rebadged as many different brands)_
 - Brade MC6 thermostat _(rebadged as many different brands)_
+- Computherm Q20 thermostat
 - Dr Heater DR-008 electric radiant floor thermostat
 - Drexma WiStat ET7AW thermostat
 - DunWore F60 floor heating thermostat

+ 262 - 0
custom_components/tuya_local/devices/computherm_q20_thermostat.yaml

@@ -0,0 +1,262 @@
+name: Thermostat
+products:
+  - id: ajiidg1xj03fdut3
+    manufacturer: Computherm
+    model: Q20
+entities:
+  - entity: climate
+    translation_key: thermostat
+    dps:
+      - id: 1
+        type: boolean
+        optional: true
+        name: hvac_mode
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            constraint: function_mode
+            conditions:
+              - dps_val: heat
+                value: heat
+              - dps_val: cool
+                value: cool
+              - dps_val: hum
+                value: fan_only
+              - dps_val: deh
+                value: dry
+          - value: "off"
+            hidden: true
+      - id: 103
+        type: string
+        name: preset_mode
+        mapping:
+          - dps_val: auto
+            value: program
+          - dps_val: manual
+            value: manual
+          - dps_val: temporary
+            value: temp_override
+          - dps_val: boost
+            value: boost
+          - dps_val: holiday
+            value: away
+          - dps_val: comfort
+            value: comfort
+          - dps_val: economy
+            value: eco
+      - id: 104
+        type: string
+        name: hvac_action
+        mapping:
+          - dps_val: "off"
+            value: idle
+          - dps_val: "on"
+            constraint: function_mode
+            conditions:
+              - dps_val: heat
+                value: heating
+              - dps_val: cool
+                value: cooling
+              - dps_val: deh
+                value: drying
+              - dps_val: hum
+                value: null
+      - id: 105
+        type: integer
+        optional: true
+        name: humidity
+        range:
+          min: 0
+          max: 1000
+        mapping:
+          - scale: 10
+      - id: 125
+        type: string
+        name: function_mode
+        hidden: true
+      - id: 126
+        type: integer
+        name: temperature
+        range:
+          min: -200
+          max: 3000
+        mapping:
+          - scale: 10
+            step: 5
+            constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                range:
+                  min: 410
+                  max: 970
+              - dps_val: c
+                range:
+                  min: 50
+                  max: 450
+      - id: 127
+        type: string
+        name: temperature_unit
+        mapping:
+          - dps_val: f
+            value: F
+          - value: C
+      - id: 128
+        type: integer
+        name: current_temperature
+        mapping:
+          - scale: 10
+      - id: 129
+        type: integer
+        name: current_humidity
+        mapping:
+          - scale: 10
+  - entity: button
+    translation_key: factory_reset
+    category: config
+    hidden: true
+    dps:
+      - id: 39
+        type: boolean
+        optional: true
+        name: button
+  - entity: text
+    name: Data package
+    category: config
+    icon: "mdi:cogs"
+    hidden: true
+    dps:
+      - id: 101
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Temperature weekly schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 106
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Temperature work week schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 107
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Temperature daily schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 108
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Humidity weekly schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 109
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Humidity work week schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 110
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Humidity daily schedule
+    category: config
+    translation_key: schedule
+    hidden: true
+    dps:
+      - id: 111
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Copy schedule
+    category: config
+    icon: "mdi:content-copy"
+    hidden: true
+    dps:
+      - id: 112
+        type: base64
+        optional: true
+        name: value
+  - entity: sensor
+    translation_key: time_remaining
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 113
+        type: integer
+        name: sensor
+        unit: min
+        class: measurement
+  - entity: text
+    name: Time electric
+    category: config
+    icon: "mdi:clock"
+    hidden: true
+    dps:
+      - id: 114
+        type: base64
+        optional: true
+        name: value
+  - entity: sensor
+    name: Floor temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 117
+        type: integer
+        optional: true
+        name: sensor
+        class: measurement
+        mapping:
+          - scale: 10
+      - id: 127
+        type: string
+        name: unit
+        mapping:
+          - dps_val: f
+            value: F
+          - value: C
+  - entity: number
+    name: App state
+    category: config
+    icon: "mdi:cellphone"
+    hidden: true
+    dps:
+      - id: 186
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 0
+          max: 100
+
+  - entity: sensor
+    name: Total time
+    category: diagnostic
+    dps:
+      - id: 187
+        type: integer
+        name: sensor