浏览代码

Add support for RT-70 (Beok TCB38/TCW38) thermostat

Issue #2442
Jason Rumney 1 年之前
父节点
当前提交
09e53bc5b0
共有 3 个文件被更改,包括 227 次插入0 次删除
  1. 1 0
      ACKNOWLEDGEMENTS.md
  2. 1 0
      DEVICES.md
  3. 225 0
      custom_components/tuya_local/devices/beok_tcb38_thermostat.yaml

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -736,3 +736,4 @@ Further device support has been made with the assistance of users. Please consid
 - [SimonAnnetts](https://github.com/SimonAnnetts) for contributing support for Solar Grid/Smart GTB series solar inverters.
 - [yurkiv](https://github.com/yurkiv) for contributing support for Moes WHT-009 thermostat.
 - [norfolkmustard](https://github.com/norfolkmustard) for contributing support for ESP Fort EC-SPSP USB smartplug.
+- [alexsperling](https://github.com/alexsperling) for assisting with support for Beok TCB/W38 (RT-70) thermostat.

+ 1 - 0
DEVICES.md

@@ -172,6 +172,7 @@
 - Beca BHT-002/3000 floor heating thermostat (with external temp sensor)
 - Beca BHP-6000 room heat pump control thermostat
 - Beca BHT-6000/8000 floor heating thermostat
+- Beok TCB/W38 thermostat (also sold as RT-70 under other brands)
 - Beok TGM50 thermostat
 - Beok TGR81 thermostat (also reported working with Myuet ME98, Avatto WT81/ME81)
 - Beok TOL47 thermostat

+ 225 - 0
custom_components/tuya_local/devices/beok_tcb38_thermostat.yaml

@@ -0,0 +1,225 @@
+name: Thermostat
+# rebadged as RT-70
+primary_entity:
+  entity: climate
+  translation_key: thermostat
+  dps:
+    - id: 1
+      type: boolean
+      name: hvac_mode
+      mapping:
+        - dps_val: false
+          value: "off"
+        - dps_val: true
+          constraint: mode
+          conditions:
+            - dps_val: manual
+              value: heat
+            - dps_val: auto
+              value: auto
+    - id: 2
+      type: integer
+      name: temperature
+      range:
+        min: 50
+        max: 990
+      mapping:
+        - scale: 10
+          step: 5
+      unit: C
+    - id: 3
+      type: integer
+      name: current_temperature
+      mapping:
+        - scale: 10
+    - id: 4
+      type: string
+      name: mode
+      hidden: true
+    - id: 21
+      type: integer
+      name: max_temperature
+    - id: 22
+      type: integer
+      name: min_temperature
+    - id: 35
+      type: string
+      name: hvac_action
+      mapping:
+        - dps_val: open
+          value: heating
+        - dps_val: close
+          value: idle
+secondary_entities:
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    dps:
+      - id: 8
+        type: boolean
+        name: lock
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 16
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 16
+        type: bitfield
+        name: fault_code
+  - entity: number
+    name: Temperature calibration
+    category: config
+    icon: "mdi:thermometer-check"
+    dps:
+      - id: 20
+        type: integer
+        name: value
+        unit: ⁰
+        range:
+          min: -95
+          max: 95
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: number
+    name: Maximum temperature
+    category: config
+    icon: "mdi:themometer-chevron-up"
+    dps:
+      - id: 21
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 5
+          max: 99
+  - entity: number
+    name: Minimum temperature
+    category: config
+    icon: "mdi:thermometer-chevron-down"
+    dps:
+      - id: 22
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 5
+          max: 99
+  - entity: select
+    name: Temperature probe
+    icon: "mdi:thermometer"
+    category: config
+    dps:
+      - id: 25
+        type: string
+        name: option
+        mapping:
+          - dps_val: "0"
+            value: Air
+          - dps_val: "1"
+            value: Floor
+          - dps_val: "2"
+            value: Both
+  - entity: switch
+    translation_key: anti_frost
+    category: config
+    dps:
+      - id: 26
+        type: boolean
+        name: switch
+  - entity: button
+    name: Factory reset
+    class: restart
+    category: config
+    dps:
+      - id: 31
+        type: boolean
+        name: button
+  - entity: select
+    name: Schedule
+    icon: "mdi:calendar"
+    category: config
+    dps:
+      - id: 42
+        type: string
+        name: option
+        mapping:
+          - dps_val: "1"
+            value: "Weekdays+Weekend"
+          - dps_val: "2"
+            value: "Mon-Sat+Sun"
+          - dps_val: "3"
+            value: "Daily"
+      - id: 43
+        type: string
+        optional: true
+        name: program
+  - entity: number
+    name: Floor temperature
+    category: config
+    icon: "mdi:thermometer"
+    dps:
+      - id: 101
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 5
+          max: 99
+  - entity: sensor
+    name: Floor temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 102
+        type: integer
+        name: sensor
+        unit: C
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: number
+    name: Room temperature hysteresis
+    category: config
+    icon: "mdi:thermometer-lines"
+    dps:
+      - id: 103
+        type: integer
+        name: value
+        unit: ⁰
+        range:
+          min: 5
+          max: 30
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: number
+    name: Floor temperature hysteresis
+    category: config
+    icon: "mdi:thermometer-lines"
+    dps:
+      - id: 104
+        type: integer
+        name: value
+        unit: ⁰
+        range:
+          min: 1
+          max: 9
+  - entity: select
+    translation_key: initial_state
+    category: config
+    dps:
+      - id: 105
+        type: string
+        name: option
+        mapping:
+          - dps_val: "0"
+            value: "off"
+          - dps_val: "1"
+            value: memory