Просмотр исходного кода

Add Holtop CFA-500t ERV (#5063)

New device: Holtop CFA-500t energy recovery ventilator (product id
7788bnexpeq7j8or).

All 27 DPS mapped and confirmed via Tuya Smart Life app and local
discovery.
Two entries are educated guesses:
- dp101 (heating active): inferred by symmetry with dp111 (heating
function enable) — could not trigger during testing
- dp107 (factory reset): identified by elimination; same DPS ID used for
factory reset in swimfun_inverboost_poolheatpump

The CFA-250 and CFA-350 models (both T and C mounting variants) are
expected to share this configuration as part of the same product family,
but could not be verified.

AI-assisted (Claude) with full understanding and hands-on verification
of all confirmed DPS by the submitter.

---------

Co-authored-by: Gergely Sallai <1516628+gergely-sallai@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
Gergely Sallai 9 часов назад
Родитель
Сommit
c810307253
1 измененных файлов с 262 добавлено и 0 удалено
  1. 262 0
      custom_components/tuya_local/devices/holtop_cfa500t_erv.yaml

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

@@ -0,0 +1,262 @@
+name: Energy recovery ventilator
+products:
+  - id: 7788bnexpeq7j8or
+    manufacturer: Holtop
+    model: CFA-500t
+
+entities:
+  - entity: fan
+    translation_key: ventilation
+    dps:
+      - id: 1
+        type: boolean
+        name: switch
+      - id: 2
+        type: string
+        name: preset_mode
+        mapping:
+          - dps_val: "0"
+            value: manual
+          - dps_val: "1"
+            value: timer
+          - dps_val: "2"
+            value: sleep
+      - id: 104
+        type: integer
+        name: speed
+        range:
+          min: 1
+          max: 5
+
+  - entity: fan
+    name: Exhaust
+    category: config
+    dps:
+      - id: 103
+        type: integer
+        name: speed
+        range:
+          min: 1
+          max: 5
+
+  - entity: climate
+    translation_key: heater
+    dps:
+      - id: 111
+        type: boolean
+        name: hvac_mode
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            value: heat
+      - id: 9
+        type: integer
+        name: current_temperature
+      - id: 117
+        type: integer
+        name: temperature
+        unit: C
+        range:
+          min: 16
+          max: 30
+      - id: 101
+        type: boolean
+        name: hvac_action
+        mapping:
+          - dps_val: true
+            value: heating
+          - value: idle
+
+  - entity: humidifier
+    dps:
+      - id: 8
+        type: integer
+        name: current_humidity
+      - id: 106
+        type: integer
+        name: humidity
+        unit: "%"
+        range:
+          min: 50
+          max: 99
+
+  - entity: climate
+    name: Bypass
+    dps:
+      - id: 113
+        type: boolean
+        name: hvac_mode
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            value: fan_only
+      - id: 112
+        type: boolean
+        name: preset_mode
+        mapping:
+          - dps_val: true
+            value: automatic
+          - dps_val: false
+            value: manual
+      - id: 116
+        type: integer
+        name: temperature
+        unit: C
+        range:
+          min: 5
+          max: 30
+      - id: 22
+        type: integer
+        name: current_temperature
+      - id: 21
+        type: integer
+        name: current_humidity
+
+  - entity: sensor
+    class: carbon_dioxide
+    dps:
+      - id: 6
+        type: integer
+        name: sensor
+        unit: ppm
+        class: measurement
+
+  - entity: sensor
+    translation_key: filter_life
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 11
+        type: integer
+        name: sensor
+        unit: d
+        class: measurement
+
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 18
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 18
+        type: bitfield
+        name: fault_code
+
+  - entity: select
+    name: Filter replacement
+    translation_key: timer
+    category: config
+    dps:
+      - id: 105
+        type: string
+        name: option
+        mapping:
+          - dps_val: "0"
+            value: cancel
+          - dps_val: "1"
+            value: 60d
+          - dps_val: "2"
+            value: 80d
+          - dps_val: "3"
+            value: 100d
+          - dps_val: "4"
+            value: 120d
+
+  - entity: button
+    translation_key: factory_reset
+    category: config
+    hidden: true
+    dps:
+      - id: 107
+        type: boolean
+        name: button
+        optional: true
+
+  - entity: button
+    translation_key: filter_reset
+    category: config
+    dps:
+      - id: 108
+        type: boolean
+        name: button
+
+  - entity: number
+    translation_key: sensor_threshold
+    translation_placeholders:
+      sensor: CO2
+    category: config
+    dps:
+      - id: 109
+        type: integer
+        name: value
+        unit: ppm
+        range:
+          min: 800
+          max: 2000
+        mapping:
+          - step: 100
+
+  - entity: number
+    name: Defrost temperature
+    class: temperature
+    category: config
+    dps:
+      - id: 110
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: -10
+          max: 10
+
+  - entity: switch
+    name: High speed
+    dps:
+      - id: 114
+        type: boolean
+        name: switch
+
+  - entity: number
+    name: High speed time
+    translation_key: timer
+    class: duration
+    category: config
+    dps:
+      - id: 115
+        type: integer
+        name: value
+        unit: min
+        range:
+          min: 1
+          max: 120
+
+  - entity: number
+    name: Bypass temperature range
+    class: temperature_delta
+    category: config
+    dps:
+      - id: 118
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 2
+          max: 15
+
+  - entity: number
+    name: Balance rate
+    category: config
+    dps:
+      - id: 119
+        type: integer
+        name: value
+        range:
+          min: -50
+          max: 50