Parcourir la source

feat: add support for Madimack Elite V4 heatpump

Seems similar to the updated V3 version, but has some temperatures
with 0.1 degree precision, and a few extra flags and sensors.

Issue #3412
Jason Rumney il y a 6 mois
Parent
commit
fe13fa78ff

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -991,3 +991,4 @@ Further device support has been made with the assistance of users. Please consid
 - [stepheninuk](https://github.com/stepheninuk) for assisting with support for MeacoCool MC Series Pro portable air conditioners.
 - [damru](https://github.com/damru) for contributing improvements to Windcalm fans.
 - [sam7567](https://github.com/sam7567) for assisting with support for Roomratv ceiling fan with light.
+- [mikeblackk](https://github.com/mikeblackk) for assisting with support for Madimack Elite V4 pool heat pump.

+ 1 - 1
DEVICES.md

@@ -134,7 +134,7 @@
 - Evotherm ETI series heat pump
 - Fairland IPHCR15, RMIC06, X20 pool heat pumps (also Pool Systems and other brands)
 - Garden PAC pool heat pump (also works with Summerwave Si Series)
-- Madimack Eco, Elite V2 and other model pool heat pumps
+- Madimack Eco, Elite V2,V3,V4 and other model pool heat pumps
 - Poolex Silverline, Q-7, Q-line, Arctic, Vertigo, and Ice Spa heat pumps
 - Poolsana InverPower Next pool heat pump
 - Pool Systems IPS Pro pool heat pump (also Fairland Inver-X)

+ 16 - 0
custom_components/tuya_local/devices/madimack_elite_v3_heatpump_updated.yaml

@@ -195,7 +195,23 @@ entities:
         type: integer
         unit: P
         class: measurement
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 107
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 107
+        type: bitfield
+        name: fault_code
   - entity: sensor
+    # 2025-07-22
+    deprecated: binary_sensor.problem
     category: diagnostic
     name: Fault code
     dps:

+ 265 - 0
custom_components/tuya_local/devices/madimack_elitev4_heatpump.yaml

@@ -0,0 +1,265 @@
+name: Pool heatpump
+products:
+  - id: 5xe6dkfmdafvrasa
+    manufacturer: Madimack
+    model: Elite V4
+entities:
+  - entity: climate
+    translation_key: pool_heatpump
+    dps:
+      - id: 101
+        name: hvac_mode
+        type: boolean
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            constraint: mode
+            conditions:
+              - dps_val: auto
+                value: auto
+              - dps_val: cold
+                value: cool
+                available: supports_cool
+              - dps_val: heating
+                value: heat
+      - id: 102
+        name: mode
+        type: string
+        hidden: true
+      - id: 104
+        name: temperature
+        type: integer
+        range:
+          min: -22
+          max: 104
+      - id: 105
+        name: preset_mode
+        type: string
+        mapping:
+          - dps_val: silence
+            value: sleep
+          - dps_val: perfect
+            value: comfort
+          - dps_val: power
+            value: quick
+          - dps_val: boost
+            value: boost
+      - id: 106
+        name: temperature_unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+      - id: 107
+        type: integer
+        optional: true
+        name: current_temperature
+        mapping:
+          - dps_val: null
+            value_redirect: inflow_temperature
+      - id: 110
+        type: integer
+        name: max_temperature
+      - id: 111
+        type: integer
+        name: min_temperature
+      - id: 117
+        name: inflow_temperature
+        type: integer
+        mapping:
+          - scale: 10
+      - id: 123
+        type: boolean
+        name: supports_cool
+  - entity: sensor
+    category: diagnostic
+    name: Power level
+    class: power_factor
+    dps:
+      - id: 109
+        type: integer
+        name: sensor
+        unit: "%"
+  - entity: sensor
+    category: diagnostic
+    name: External coil temperature
+    class: temperature
+    dps:
+      - id: 112
+        type: integer
+        name: sensor
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Exhaust temperature
+    class: temperature
+    dps:
+      - id: 113
+        name: sensor
+        type: integer
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Outlet water temperature
+    class: temperature
+    dps:
+      - id: 114
+        name: sensor
+        type: integer
+        mapping:
+          - scale: 10
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Ambient temperature
+    class: temperature
+    dps:
+      - id: 115
+        name: sensor
+        type: integer
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Return air temperature
+    class: temperature
+    dps:
+      - id: 118
+        name: sensor
+        type: integer
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Inner coil temperature
+    class: temperature
+    dps:
+      - id: 119
+        name: sensor
+        type: integer
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: Cooling plate temperature
+    class: temperature
+    dps:
+      - id: 120
+        name: sensor
+        type: integer
+      - id: 106
+        name: unit
+        type: string
+        mapping:
+          - dps_val: f
+            value: F
+          - dps_val: c
+            value: C
+  - entity: sensor
+    category: diagnostic
+    name: EEV opening
+    dps:
+      - id: 121
+        name: sensor
+        type: integer
+        unit: P
+        class: measurement
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 107
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: true
+            constraint: fault_code_2
+            conditions:
+              - dps_val: 0
+                value: false
+          - value: true
+      - id: 107
+        type: bitfield
+        name: fault_code
+      - id: 116
+        type: bitfield
+        name: fault_code_2
+      - id: 124
+        type: string
+        name: overclock_mode
+  - entity: sensor
+    class: power
+    hidden: unavailable
+    category: diagnostic
+    dps:
+      - id: 125
+        type: integer
+        name: sensor
+        unit: kW
+        class: measurement
+        optional: true
+        mapping:
+          - scale: 1000
+      - id: 122
+        type: boolean
+        name: available
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 103
+        type: boolean
+        optional: true
+        name: lock
+      - id: 103
+        type: boolean
+        optional: true
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+          - value: true