ソースを参照

Add Airton Aircon device (#4469)

* Add Airton Aircon device

* Add known but unused DPS for better matching

* Set DPS 5 (Fan) to optional

Sometimes missing when the AC is off, which can mess up with the auto
detect

* Update based on feedback

* Change the contraint on the temp range

* Use APISpec and testing to improve the settings

* Self-clean doesn't seem to work

* Anti-freeze doesn't seem to be supported either

* Another round of fix

* fix (airton_aircon): merge problem sensors, expose extra attributes

- merge the 2 problem sensors into a single binary_sensor with 2
  attributes, which signals a problem if either dp indicates one[
- change hidden to optional for extra attributes that are not used in conditional logic. Having these exposed lets them be studied to figure out if they are ever useful. If "they are not showing up", then they need to be optional rather than hidden.

PR #4469

---------

Co-authored-by: Julien <julien@vallee.me>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
Finwë 17 時間 前
コミット
9c61c86919
1 ファイル変更215 行追加0 行削除
  1. 215 0
      custom_components/tuya_local/devices/airton_aircon.yaml

+ 215 - 0
custom_components/tuya_local/devices/airton_aircon.yaml

@@ -0,0 +1,215 @@
+name: Air conditioner
+products:
+  - id: keyquxnsj75xc8se
+    model: Reversible 2500W (409730)
+    manufacturer: Airton
+entities:
+  - entity: climate
+    translation_key: aircon_extra
+    dps:
+      - id: 1
+        name: hvac_mode
+        type: boolean
+        mapping:
+          - dps_val: false
+            value: "off"
+          - dps_val: true
+            constraint: hvac_mode_switch
+            conditions:
+              - dps_val: auto
+                value: heat_cool
+              - dps_val: cold
+                value: cool
+              - dps_val: heat
+                value: heat
+              - dps_val: wet
+                value: dry
+              - dps_val: fan
+                value: fan_only
+      - id: 4
+        name: hvac_mode_switch
+        type: string
+        hidden: true
+      - id: 2
+        name: temperature
+        type: integer
+        range:
+          min: 160
+          max: 310
+        unit: C
+        mapping:
+          - scale: 10
+            step: 10
+            constraint: hvac_mode_switch
+            conditions:
+              - dps_val: fan
+                invalid: true
+      - id: 3
+        name: current_temperature
+        type: integer
+        mapping:
+          - scale: 10
+      - id: 5
+        name: fan_mode
+        type: string
+        optional: true
+        mapping:
+          - dps_val: auto
+            value: auto
+          - dps_val: mute
+            value: quiet
+          - dps_val: low
+            value: low
+          - dps_val: low_mid
+            value: medlow
+          - dps_val: mid
+            value: medium
+          - dps_val: mid_high
+            value: medhigh
+          - dps_val: high
+            value: high
+          - dps_val: turbo
+            value: strong
+      - id: 8
+        name: preset_mode
+        type: boolean
+        mapping:
+          - dps_val: false
+            constraint: preset_mode_sleep
+            conditions:
+              - dps_val: false
+                value: none
+              - dps_val: true
+                value: sleep
+          - dps_val: true
+            value: eco
+            constraint: hvac_mode_switch
+            conditions:
+              - dps_val: [auto, heat, wet, fan]
+                invalid: true
+      - id: 109
+        name: preset_mode_sleep
+        type: boolean
+        hidden: true
+      - id: 114
+        name: active_mode
+        type: string
+        optional: true
+      - id: 101
+        name: use_number
+        type: integer
+        optional: true
+      - id: 103
+        name: electricity
+        type: integer
+        optional: true
+      - id: 104
+        name: electricity_number
+        type: integer
+        optional: true
+      - id: 112
+        name: unit_type
+        type: string
+        optional: true
+      - id: 106
+        name: horizontal_swing
+        type: string
+        optional: true
+      - id: 107
+        name: swing_mode
+        type: string
+        mapping:
+          - dps_val: "off"
+            value: "off"
+          - dps_val: "15"
+            value: Swing
+          - dps_val: "1"
+            value: Position 1
+          - dps_val: "2"
+            value: Position 2
+          - dps_val: "3"
+            value: Position 3
+          - dps_val: "4"
+            value: Position 4
+          - dps_val: "5"
+            value: Position 5
+      - id: 108
+        name: swing3d
+        type: boolean
+        optional: true
+      - id: 111
+        name: clean
+        type: boolean
+        optional: true
+      - id: 115
+        name: heat8
+        type: boolean
+        optional: true
+      - id: 21
+        name: countdown
+        type: string
+        optional: true
+      - id: 22
+        name: countdown_left
+        type: integer
+        optional: true
+  - entity: light
+    translation_key: display
+    category: config
+    dps:
+      - id: 13
+        name: switch
+        type: boolean
+  - entity: switch
+    translation_key: ionizer
+    category: config
+    dps:
+      - id: 110
+        name: switch
+        type: boolean
+  - entity: switch
+    name: Anti-mould
+    icon: "mdi:water-off"
+    category: config
+    dps:
+      - id: 9
+        name: switch
+        type: boolean
+  - entity: switch
+    name: Auxiliary heat
+    icon: "mdi:fire"
+    category: config
+    dps:
+      - id: 12
+        name: switch
+        type: boolean
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 20
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: true
+            constraint: fault_code_2
+            conditions:
+              - dps_val: 0
+                value: false
+          - value: true
+      - id: 20
+        type: bitfield
+        name: fault_code
+      - id: 113
+        type: bitfield
+        name: fault_code_2
+  - entity: sensor
+    name: Total usage time
+    icon: "mdi:clock-outline"
+    category: diagnostic
+    dps:
+      - id: 102
+        type: integer
+        name: sensor
+        unit: h