Ver código fonte

Add water chiller (fre1l4) (#5655)

Adds a device config for a Tuya-based water chiller (product id
tmwafkxho3xaqhzt, model fre1l4, category wk).

Exposes: climate (power, cool/heat/auto, target and current
temperature),
plus diagnostic sensors for the refrigeration circuit (fault code,
ambient/
return/outlet/suction/discharge/coil temperatures, expansion valve,
compressor
current) and running-state binary sensors (compressor, fan, pump,
defrost,
anti-freeze, aux heat). Defrost/refrigeration tuning parameters are
included as
config numbers, hidden by default. An ozone/oxygenation control is
exposed on
dp 125.

DP map obtained from the Tuya "query things data model" API and verified
against a live device. dps 126-129 are present in the data model but
inert in
this unit's firmware, so they are omitted.

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
Heinrich Klobuczek 10 horas atrás
pai
commit
b64e549f56

+ 354 - 0
custom_components/tuya_local/devices/water_chiller_fre1l4.yaml

@@ -0,0 +1,354 @@
+# Water chiller (fre1l4). dp 125 ozone auto-offs after 1h and interlocks on
+# the circulation pump (dp 120). dps 126-129 are inert on this unit.
+name: Water chiller
+products:
+  - id: tmwafkxho3xaqhzt
+    model: fre1l4
+entities:
+  - entity: climate
+    translation_key: cold_water
+    dps:
+      - id: 1
+        type: boolean
+        name: hvac_mode
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            constraint: mode
+            conditions:
+              - dps_val: cold
+                value: cool
+              - dps_val: hot
+                value: heat
+              - dps_val: auto
+                value: heat_cool
+      - id: 2
+        type: string
+        name: mode
+        hidden: true
+      - id: 3
+        type: integer
+        name: temperature
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                range:
+                  min: 32
+                  max: 105
+        range:
+          min: 0
+          max: 41
+      - id: 23
+        type: string
+        name: temperature_unit
+        mapping:
+          - dps_val: f
+            value: F
+          - value: C
+      - id: 24
+        type: integer
+        name: current_temperature
+  - entity: switch
+    translation_key: uv_sterilization
+    category: config
+    dps:
+      - id: 125
+        type: boolean
+        name: switch
+  - entity: binary_sensor
+    name: Sterilization
+    class: running
+    category: diagnostic
+    dps:
+      - id: 124
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Compressor
+    class: running
+    category: diagnostic
+    dps:
+      - id: 118
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Fan
+    class: running
+    category: diagnostic
+    dps:
+      - id: 119
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Circulation pump
+    class: running
+    category: diagnostic
+    dps:
+      - id: 120
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    translation_key: defrost
+    category: diagnostic
+    dps:
+      - id: 121
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Anti-frost protection
+    class: cold
+    category: diagnostic
+    dps:
+      - id: 122
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Electric auxiliary heat
+    class: heat
+    category: diagnostic
+    dps:
+      - id: 123
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 109
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 109
+        type: bitfield
+        name: fault_code
+  - entity: sensor
+    translation_key: ambient_temperature
+    class: temperature
+    dps:
+      - id: 110
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Return water temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 111
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Outlet water temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 112
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Suction temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 113
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Discharge temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 114
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Evaporator coil temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 115
+        type: integer
+        name: sensor
+        class: measurement
+        unit: C
+  - entity: sensor
+    name: Expansion valve opening
+    category: diagnostic
+    dps:
+      - id: 116
+        type: integer
+        name: sensor
+  - entity: sensor
+    name: Compressor current
+    class: current
+    category: diagnostic
+    dps:
+      - id: 117
+        type: integer
+        name: sensor
+        class: measurement
+        unit: A
+  - entity: number
+    name: Defrost interval
+    category: config
+    class: duration
+    hidden: true
+    dps:
+      - id: 101
+        type: integer
+        name: value
+        unit: min
+        range:
+          min: 9
+          max: 180
+  - entity: number
+    name: Defrost duration
+    category: config
+    class: duration
+    hidden: true
+    dps:
+      - id: 102
+        type: integer
+        name: value
+        unit: min
+        range:
+          min: 1
+          max: 30
+  - entity: number
+    name: Defrost exit temperature
+    category: config
+    class: temperature
+    hidden: true
+    dps:
+      - id: 103
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 1
+          max: 60
+  - entity: number
+    name: Defrost entry ambient temperature
+    category: config
+    class: temperature
+    hidden: true
+    dps:
+      - id: 104
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 0
+          max: 60
+  - entity: number
+    name: Defrost entry differential 1
+    category: config
+    class: temperature_delta
+    hidden: true
+    dps:
+      - id: 105
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 0
+          max: 60
+  - entity: number
+    name: Defrost entry differential 2
+    category: config
+    class: temperature_delta
+    hidden: true
+    dps:
+      - id: 106
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 0
+          max: 60
+  - entity: number
+    name: Superheat compensation
+    category: config
+    hidden: true
+    dps:
+      - id: 107
+        type: integer
+        name: value
+        range:
+          min: 0
+          max: 150
+  - entity: number
+    name: Cooling discharge temperature setting
+    category: config
+    hidden: true
+    dps:
+      - id: 108
+        type: integer
+        name: value
+        range:
+          min: 0
+          max: 150
+  - entity: time
+    name: Ozone timer on
+    category: config
+    hidden: true
+    dps:
+      - id: 126
+        type: integer
+        optional: true
+        name: hour
+        range:
+          min: 0
+          max: 23
+      - id: 127
+        type: integer
+        optional: true
+        name: minute
+        range:
+          min: 0
+          max: 59
+  - entity: time
+    name: Ozone timer off
+    category: config
+    hidden: true
+    dps:
+      - id: 128
+        type: integer
+        optional: true
+        name: hour
+        range:
+          min: 0
+          max: 23
+      - id: 129
+        type: integer
+        optional: true
+        name: minute
+        range:
+          min: 0
+          max: 59
+  - entity: select
+    translation_key: temperature_unit
+    category: config
+    dps:
+      - id: 23
+        type: string
+        name: option
+        mapping:
+          - dps_val: c
+            value: celsius
+          - dps_val: f
+            value: fahrenheit