Selaa lähdekoodia

Add support for ETOP CH7100 thermostat

Issue #305
Jason Rumney 3 vuotta sitten
vanhempi
commit
70ecff6f4c

+ 3 - 3
ACKNOWLEDGEMENTS.md

@@ -30,7 +30,7 @@ Further device support has been made with the assistance of users.  Please consi
  - [jorgenDK](https://github.com/jorgenDK) for assistance in supporting TroniTechnik Air Conditioner, and thanks for the coffee!
  - [Fannangir](https://github.com/Fannangir) for assistance in supporting Tadiran Wind Air Conditioner, Zemismart curtain rail and Somgam 1, 2, 3 and 4 gang switches.
  - [marrold](https://github.com/marrold) for contributing support for ElectriQ CD20PRO dehumidifiers.
- - [Uaeguy](https://github.com/Uaeguy) for assistance in supporting Beca BHP-6000, Saswell T29UTK and Owon PCT513 thermostats, and thanks for the coffee!
+ - [Uaeguy](https://github.com/Uaeguy) for assistance in supporting Beca BHP-6000, Saswell T29UTK, Owon PCT513 and E-TOP CH7100 thermostats, and thanks for the coffee!
  - [Johnnybyzhang](https://github.com/Johnnybyzhang) for assistance in supporting Lexy F501 fans.
  - [domgrimm](https://github.com/domgrimm) for assistance in supporting newer models of Kogan heater.
  - [EKCJ](https://github.com/EKCJ) for contributing support for ElectriQ DESD9LW dehumidifiers.
@@ -80,7 +80,7 @@ Further device support has been made with the assistance of users.  Please consi
 - [dieantu](https://github.com/dieantu) for contributing support for Himox H06 purifiers.
 - [pgistrand](https://github.com/pgistrand) for contributing support for Vork VK6067AW purifiers, and assistance with Parkside smart charger.
 - [markbvdh](https://github.com/markbvdh) for assistance with Kogan garage openers and confirmation of Summerwave Si pool heatpumps.
-- [tavicu](https://github.com/tavicu) for contributing support for Starlight Heatpumps, Simple Blinds and for the idea to support inverted values.
+- [tavicu](https://github.com/tavicu) for contributing support for Starlight Heatpumps, Simple Blinds and for the idea to support inverted values, and thanks for the coffee!
 - [Chris061290](https://github.com/Chris061290) for contributing support for IPS Pro pool heatpumps, complete with unit tests.
 - [MartinCarbol](https://github.com/MartinCarbol) for contributing support for two models of Tesla Air Purifier.
 - [gschmidl](https://github.com/gschmidl) for assistance with Himox H05 purifier.
@@ -118,7 +118,7 @@ Further device support has been made with the assistance of users.  Please consi
 - [bedtiming](https://github.com/bedtiming) for assisting with support for Ledkia fan and light controllers.
 - [timlaing](https://github.com/timlaing) for contributing support for ElectriQ EcoSilent 14HPW air conditioners.
 - [Svellem](https://github.com/Svellem) for assisting with support for T5E-WF thermostats.
-- [Aptul9](https://github.com/Aptul9) for assisting with support for Sendo air conditioners.
+- [Aptul9](https://github.com/Aptul9) for assisting with support for Sendo air conditioners, and thanks for the coffee!
 - [dilorenzo1987](https://github.com/dilorenzo1987) for contributing support for Stadler Form Roger purifiers.
 - [fsevilla3](https://github.com/fsevilla3) for contributing support for water_heater entities and Hydrotherm Dynamix/X8 water heaters.
 - [allistermaguire](https://github.com/allistermaguire) for contributing improvements to Saswell C16 thermostats.

+ 1 - 0
DEVICES.md

@@ -69,6 +69,7 @@
 - Beok TGR81 thermostat
 - Beok TOL47 thermostat
 - Beok TR9B thermostat _(rebadged as Vancoo and perhaps others)_
+- ETOP-HP thermostat (CH7100)
 - ETOP-HT thermostat
 - Hysen HY08WE-2 thermostat
 - Inkbird ITC306A thermostat smartplug

+ 328 - 0
custom_components/tuya_local/devices/etop_ch7100_thermostat.yaml

@@ -0,0 +1,328 @@
+name: ETOP CH7100 thermostat
+products:
+  - id: evklbfoqwp4dygts
+primary_entity:
+  entity: climate
+  dps:
+    - id: 1
+      name: hvac_mode
+      type: boolean
+      mapping:
+        - dps_val: false
+          value: "off"
+        - dps_val: true
+          constraint: preset_mode
+          conditions:
+            - dps_val: cold
+              value: cool
+            - dps_val: hot
+              value: heat
+            - dps_val: aux
+              value: heat
+            - dps_val: auto
+              value: heat_cool
+    - id: 2
+      name: preset_mode
+      type: string
+      mapping:
+        - dps_val: cold
+          value: Cool
+        - dps_val: hot
+          value: Heat
+        - dps_val: aux
+          value: Auxiliary Heat
+        - dps_val: auto
+          value: Auto
+    - id: 3
+      name: hvac_action
+      type: string
+      mapping:
+        - dps_val: cooling
+          constraint: hvac_mode
+          conditions:
+            - dps_val: false
+              value: "off"
+            - dps_val: true
+              value: cooling
+        - dps_val: heating
+          constraint: hvac_mode
+          conditions:
+            - dps_val: false
+              value: "off"
+            - dps_val: true
+              value: heating
+        - dps_val: idle
+          constraint: hvac_mode
+          conditions:
+            - dps_val: false
+              value: "off"
+            - dps_val: true
+              value: idle
+    - id: 16
+      name: thermostat_set_temp
+      type: integer
+      mapping:
+        - constraint: temperature_unit
+          conditions:
+            - dps_val: f
+              value_redirect: thermostat_set_temp_f
+    - id: 17
+      name: thermostat_set_temp_f
+      type: integer
+      hidden: true
+    - id: 23
+      name: temperature_unit
+      type: string
+      mapping:
+        - dps_val: c
+          value: C
+        - dps_val: f
+          value: F
+    - id: 24
+      name: current_temperature
+      type: integer
+      mapping:
+        - constraint: temperature_unit
+          conditions:
+            - dps_val: f
+              value_redirect: current_temp_f
+    - id: 28
+      name: fan_mode
+      type: string
+      mapping:
+        - dps_val: auto
+          value: Auto
+        - dps_val: "on"
+          value: "On"
+    - id: 29
+      name: current_temp_f
+      type: integer
+      hidden: true
+    - id: 45
+      name: unknown_45
+      type: integer
+    - id: 101
+      name: unknown_101
+      type: boolean
+    - id: 104
+      name: temperature
+      type: integer
+      range:
+        min: 5
+        max: 40
+      mapping:
+        - constraint: temperature_unit
+          conditions:
+            - dps_val: f
+              value_redirect: temp_f
+              range:
+                min: 32
+                max: 104
+    - id: 106
+      name: temp_f
+      type: integer
+      range:
+        min: 32
+        max: 104
+      hidden: true
+secondary_entities:
+  - entity: select
+    name: Temperature unit
+    category: config
+    dps:
+      - id: 23
+        type: string
+        name: option
+        mapping:
+          - dps_val: c
+            value: Celsius 
+            icon: "mdi:temperature-celsius"
+          - dps_val: f
+            value: Fahrenheit
+            icon: "mdi:temperature-fahrenheit"
+  - entity: number
+    name: Temperature calibration
+    category: config
+    dps:
+      - id: 27
+        type: integer
+        name: value
+        range:
+          min: -3
+          max: 3
+  - entity: sensor
+    name: Current humidity
+    class: humidity
+    dps:
+      - id: 49
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: lock
+    name: Child lock
+    icon: "mdi:hand-back-right-off"
+    category: config
+    dps:
+      - id: 40
+        type: boolean
+        name: lock
+  - entity: switch
+    name: Schedule
+    icon: "mdi:calendar-clock"
+    category: config
+    dps:
+      - id: 102
+        type: boolean
+        name: switch
+  - entity: number
+    name: Temporary hold time
+    icon: "mdi:timer"
+    category: config
+    dps:
+      - id: 103
+        type: integer
+        name: value
+        unit: min
+        range:
+          min: 0
+          max: 1440
+  - entity: climate
+    name: Temporary hold
+    category: config
+    dps:
+      - id: 1
+        name: power
+        type: boolean
+        hidden: true
+      - id: 103
+        name: hvac_mode
+        type: integer
+        mapping:
+          - dps_val: 0
+            value: "off"
+          - constraint: power
+            conditions:
+              - dps_val: true
+                value: heat_cool
+              - dps_val: false
+                value: "off"
+      - id: 111
+        name: temperature
+        type: integer
+        range:
+          min: 5
+          max: 40
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: temp_f
+      - id: 112
+        name: temp_f
+        type: integer
+        range:
+          min: 32
+          max: 104
+        hidden: true
+      - id: 23
+        name: temperature_unit
+        type: string
+        mapping:
+          - dps_val: c
+            value: C
+          - dps_val: f
+            value: F
+      - id: 24
+        name: current_temperature
+        type: integer
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: current_temp_f
+      - id: 29
+        name: current_temp_f
+        type: integer
+        hidden: true
+  - entity: climate
+    name: Auto range
+    category: config
+    dps:
+      - id: 1
+        name: power
+        type: boolean
+        hidden: true
+      - id: 2
+        name: hvac_mode
+        type: string
+        mapping:
+          - dps_val: auto
+            constraint: power
+            conditions:
+              - dps_val: false
+                value: "off"
+              - dps_val: true
+                value: heat_cool
+      - id: 104
+        name: target_temp_high
+        type: integer
+        range:
+          min: 6
+          max: 40
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: temp_high_f
+                range:
+                  min: 33
+                  max: 104
+      - id: 106
+        name: temp_high_f
+        type: integer
+        range:
+          min: 33
+          max: 104
+        hidden: true
+      - id: 105
+        name: target_temp_low
+        type: integer
+        range:
+          min: 5
+          max: 39
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: temp_low_f
+                range:
+                  min: 32
+                  max: 103
+      - id: 107
+        name: temp_low_f
+        type: integer
+        range:
+          min: 32
+          max: 103
+        hidden: true
+      - id: 23
+        name: temperature_unit
+        type: string
+        mapping:
+          - dps_val: c
+            value: C
+          - dps_val: f
+            value: F
+      - id: 24
+        name: current_temperature
+        type: integer
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: current_temp_f
+      - id: 29
+        name: current_temp_f
+        type: integer
+        hidden: true