Procházet zdrojové kódy

Add support for Lumary A1 ceiling fan with light

Issue #3023
Jason Rumney před 9 měsíci
rodič
revize
c61cbdcf50

+ 1 - 2
ACKNOWLEDGEMENTS.md

@@ -895,5 +895,4 @@ Further device support has been made with the assistance of users. Please consid
 - [Airey001](https://github.com/Airey001) for contributing support for Neo-A Duoqu cat litter box.
 - [Akira97One](https://github.com/Akira97One) for assisting with support for SMCM DDV-207 Doorbell Pro camera.
 - [hemersonfds](https://github.com/hemersonfds) for assisting with support for EARU EAEMP3C energy monitoring breaker.
-
-
+- [jldg](https://github.com/jldg) for assisting with support for Lumary A1 ceiling fan with light.

+ 1 - 0
DEVICES.md

@@ -292,6 +292,7 @@
 - Ledkia fan and light controller
 - Lexy F501 fan
 - Lucci Connect Wi-Fi fan remote
+- Lumary A1 ceiling fan with light
 - KCvents VT501-W heat recovery ventilation
 - Keyun MKCFE002 RGB chandelier fan
 - Kogan bladeless fans

+ 356 - 0
custom_components/tuya_local/devices/lumary_a1_ceilingfanlight.yaml

@@ -0,0 +1,356 @@
+name: Ceiling fan light
+products:
+  - id: ujya7f5twjovh1kf
+    manufacturer: Lumary
+    model: A1
+    model_id: L-CFL18A1
+entities:
+  - entity: light
+    icon: "mdi:ceiling-fan-light"
+    dps:
+      - id: 20
+        type: boolean
+        name: switch
+      - id: 21
+        name: color_mode
+        type: string
+        mapping:
+          - dps_val: white
+            value: color_temp
+          - dps_val: colour
+            value: hs
+          - dps_val: scene
+            value: Scene
+          - dps_val: music
+            value: Music
+      - id: 22
+        name: brightness
+        type: integer
+        range:
+          min: 10
+          max: 1000
+      - id: 23
+        name: color_temp
+        type: integer
+        range:
+          min: 0
+          max: 1000
+        mapping:
+          - target_range:
+              min: 2700
+              max: 6500
+      - id: 24
+        name: rgbhsv
+        type: hex
+        format:
+          - name: h
+            bytes: 2
+            range:
+              min: 0
+              max: 360
+          - name: s
+            bytes: 2
+            range:
+              min: 0
+              max: 1000
+          - name: v
+            bytes: 2
+            range:
+              min: 0
+              max: 1000
+      - id: 119
+        type: boolean
+        name: available
+  - entity: number
+    translation_key: timer
+    name: Light timer
+    category: config
+    class: duration
+    dps:
+      - id: 26
+        type: integer
+        name: value
+        unit: s
+        range:
+          min: 0
+          max: 86400
+      - id: 119
+        type: boolean
+        name: available
+  - entity: text
+    name: Music data
+    category: config
+    icon: "mdi:music"
+    hidden: true
+    dps:
+      - id: 27
+        type: string
+        optional: true
+        name: value
+  - entity: text
+    name: Control data
+    category: config
+    icon: "mdi:tune"
+    hidden: true
+    dps:
+      - id: 28
+        type: string
+        optional: true
+        name: value
+  - entity: text
+    name: Power memory
+    category: config
+    icon: "mdi:content-save"
+    hidden: true
+    dps:
+      - id: 33
+        type: base64
+        optional: true
+        name: value
+  - entity: switch
+    name: Do not disturb
+    category: config
+    icon: "mdi:sleep"
+    dps:
+      - id: 34
+        type: boolean
+        name: switch
+        mapping:
+          - dps_val: false
+            icon: "mdi:sleep-off"
+            icon_priority: 1
+  - entity: text
+    name: Fading
+    category: config
+    icon: "mdi:gradient-horizontal"
+    hidden: true
+    dps:
+      - id: 35
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Mix RGBCW
+    category: config
+    icon: "mdi:palette"
+    hidden: true
+    dps:
+      - id: 51
+        type: base64
+        optional: true
+        name: value
+  - entity: fan
+    translation_only_key: fan_with_presets
+    dps:
+      - id: 60
+        type: boolean
+        name: switch
+      - id: 61
+        type: string
+        name: preset_mode
+        mapping:
+          - dps_val: fresh
+            value: fresh
+          - dps_val: nature
+            value: nature
+      - id: 62
+        type: integer
+        name: speed
+        range:
+          min: 1
+          max: 100
+      - id: 63
+        type: string
+        name: direction
+      - id: 106
+        type: boolean
+        name: oscillate
+      - id: 119
+        type: boolean
+        name: available
+  - entity: number
+    name: Fan timer
+    translation_key: timer
+    class: duration
+    category: config
+    dps:
+      - id: 64
+        type: integer
+        name: value
+        unit: min
+        range:
+          min: 0
+          max: 540
+      - id: 119
+        type: boolean
+        name: available
+  - entity: switch
+    name: Beep
+    category: config
+    icon: "mdi:volume-high"
+    dps:
+      - id: 66
+        type: boolean
+        optional: true
+        name: switch
+        mapping:
+          - dps_val: false
+            icon: "mdi:volume-off"
+            icon_priority: 1
+          - dps_val: true
+            icon: "mdi:volume-high"
+            icon_priority: 1
+          - dps_val: null
+            value_redirect: alt
+      - id: 103
+        type: boolean
+        name: alt
+        mapping:
+          - dps_val: false
+            icon: "mdi:volume-off"
+            icon_priority: 2
+  - entity: text
+    name: Segment dimming
+    category: config
+    icon: "mdi:chart-pie"
+    hidden: true
+    dps:
+      - id: 101
+        type: base64
+        optional: true
+        name: value
+  - entity: light
+    name: White
+    category: config
+    dps:
+      - id: 107
+        type: boolean
+        name: switch
+      - id: 22
+        name: brightness
+        type: integer
+        range:
+          min: 10
+          max: 1000
+      - id: 23
+        name: color_temp
+        type: integer
+        range:
+          min: 0
+          max: 1000
+        mapping:
+          - target_range:
+              min: 2700
+              max: 6500
+      - id: 20
+        name: available
+        type: boolean
+        mapping:
+          - dps_val: true
+            constraint: main_switch
+            conditions:
+              - dps_val: false
+                value: false
+      - id: 119
+        type: boolean
+        name: main_switch
+  - entity: light
+    name: Color
+    category: config
+    dps:
+      - id: 108
+        type: boolean
+        name: switch
+      - id: 24
+        name: rgbhsv
+        type: hex
+        format:
+          - name: h
+            bytes: 2
+            range:
+              min: 0
+              max: 360
+          - name: s
+            bytes: 2
+            range:
+              min: 0
+              max: 1000
+          - name: v
+            bytes: 2
+            range:
+              min: 0
+              max: 1000
+      - id: 20
+        name: available
+        type: boolean
+        mapping:
+          - dps_val: true
+            constraint: main_switch
+            conditions:
+              - dps_val: false
+                value: false
+      - id: 119
+        type: boolean
+        name: main_switch
+  - entity: text
+    name: Scene
+    category: config
+    icon: "mdi:palette"
+    hidden: true
+    dps:
+      - id: 109
+        type: base64
+        optional: true
+        name: value
+  - entity: number
+    name: Light sequence adjust
+    category: config
+    icon: "mdi:rotate-left"
+    dps:
+      - id: 110
+        type: integer
+        name: value
+        range:
+          min: 0
+          max: 5
+        mapping:
+          - scale: 10
+  - entity: number
+    name: Pixels
+    category: config
+    icon: "mdi:led-strip"
+    dps:
+      - id: 111
+        type: integer
+        name: value
+        range:
+          min: 10
+          max: 130
+  - entity: number
+    translation_key: timer
+    category: config
+    dps:
+      - id: 112
+        type: integer
+        name: value
+        optional: true
+        unit: s
+        range:
+          min: 0
+          max: 86400
+  - entity: switch
+    category: config
+    dps:
+      - id: 119
+        type: boolean
+        name: switch
+  - entity: text
+    name: Music data1
+    category: config
+    icon: "mdi:music"
+    hidden: true
+    dps:
+      - id: 121
+        type: base64
+        optional: true
+        name: value