Răsfoiți Sursa

feat (devices): add V Jules.V SK17 galaxy projector

Issue #4505
Jason Rumney 2 zile în urmă
părinte
comite
202b88b3f4

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -1314,3 +1314,4 @@ Further device support has been made with the assistance of users. Please consid
 - [jonno-m](https://github.com/jonno-m) for contributing support for ILife A12 Pro vacuum.
 - [lfrlucas](https://github.com/lfrlucas) for contributing support for Emini 16A Public EV charger.
 - [tfmm](https://github.com/tfmm) for assisting with support for ComfortZone AP100 air purifier.
+- [subpanel0576](https://github.com/subpanel0576) for assisting with support for V Jules.V SK17 galaxy projector.

+ 1 - 0
DEVICES.md

@@ -892,6 +892,7 @@ of device.
 - Treatlife outdoor dimmer with dual outlets
 - TV-TYA238-AK-2MP ambient TV sync backlight
 - Ustellar UT99911 RGB monitor light bar
+- V Jules.V SK17 galaxy projector
 - Xinled XLD-CL002 RGBCW lightbulb
 - WF520D dual dimmer touchpanel
 

+ 332 - 0
custom_components/tuya_local/devices/vjulesv_sk17_galaxyprojector.yaml

@@ -0,0 +1,332 @@
+name: Galaxy projector
+products:
+  - id:
+    manufacturer: V Jules.V
+    model: SK17
+entities:
+  - entity: switch
+    name: Main
+    dps:
+      - id: 20
+        type: boolean
+        name: switch
+      - id: 21
+        name: work_mode
+        type: string
+        optional: true
+  - entity: light
+    name: White
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 63
+        type: boolean
+        name: switch
+      - id: 22
+        name: brightness
+        type: integer
+        range:
+          min: 10
+          max: 1000
+  - entity: time
+    name: Light timer
+    translation_key: timer
+    category: config
+    dps:
+      - id: 26
+        type: integer
+        optional: true
+        name: second
+        range:
+          min: 0
+          max: 86399
+  - entity: text
+    name: Control
+    category: config
+    icon: "mdi:tools"
+    hidden: true
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 28
+        type: string
+        optional: true
+        name: value
+  - entity: text
+    name: Music
+    category: config
+    icon: "mdi:music"
+    hidden: true
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 42
+        type: string
+        optional: true
+        name: value
+  - entity: light
+    name: Color
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 52
+        type: boolean
+        name: switch
+      - id: 24
+        name: rgbhsv
+        type: hex
+        optional: true
+        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
+  - entity: light
+    name: Laser
+    icon: "mdi:laser-pointer"
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 53
+        type: boolean
+        name: switch
+      - id: 64
+        type: string
+        optional: true
+        name: effect
+        mapping:
+          - dps_val: "0"
+            value: Mode 1
+          - dps_val: "1"
+            value: Mode 2
+  - entity: fan
+    dps:
+      - id: 60
+        type: boolean
+        optional: true
+        name: switch
+        mapping:
+          - dps_val: null
+            value: false
+            hidden: true
+      - id: 62
+        type: integer
+        name: speed
+        range:
+          min: 1
+          max: 100
+  - entity: text
+    name: Star scene
+    category: config
+    icon: "mdi:creation"
+    hidden: true
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+      - id: 65
+        type: base64
+        optional: true
+        name: value
+  - entity: button
+    name: Play
+    icon: "mdi:play"
+    dps:
+      - id: 66
+        type: boolean
+        optional: true
+        name: button
+  - entity: button
+    name: Previous
+    icon: "mdi:skip-previous"
+    dps:
+      - id: 67
+        type: string
+        optional: true
+        name: button
+        mapping:
+          - dps_val: previous
+            value: true
+  - entity: button
+    name: Next
+    icon: "mdi:skip-next"
+    dps:
+      - id: 67
+        type: boolean
+        optional: true
+        name: button
+        mapping:
+          - dps_val: next
+            value: true
+  - entity: number
+    translation_key: volume
+    dps:
+      - id: 68
+        type: integer
+        name: value
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+  - entity: time
+    translation_key: timer
+    name: Music timer
+    category: config
+    dps:
+      - id: 69
+        type: integer
+        optional: true
+        name: seconds
+        range:
+          min: 0
+          max: 86399
+  - entity: select
+    name: Playback mode
+    icon: "mdi:play-box-multiple"
+    dps:
+      - id: 70
+        type: string
+        optional: true
+        name: option
+        mapping:
+          - dps_val: order
+            value: Normal
+            icon: "mdi:shuffle-disabled"
+          - dps_val: repeat_one
+            value: Track repeat
+            icon: "mdi:repeat-once"
+          - dps_val: random
+            value: Random
+            icon: "mdi:shuffle-variant"
+  - entity: select
+    name: Source
+    icon: "mdi:import"
+    dps:
+      - id: 71
+        type: string
+        optional: true
+        name: option
+        mapping:
+          - dps_val: "0"
+            value: White noise
+          - dps_val: "1"
+            value: Bluetooth
+            icon: "mdi:bluetooth-audio"
+  - entity: select
+    name: Effect
+    icon: "mdi:surround-sound"
+    category: config
+    dps:
+      - id: 72
+        type: string
+        name: option
+        mapping:
+          - dps_val: normal
+            value: Normal
+          - dps_val: classical
+            value: Classical
+          - dps_val: jazz
+            value: Jazz
+          - dps_val: rock
+            value: Rock
+          - dps_val: electronic
+            value: Electronic
+          - dps_val: reverb
+            value: Reverb
+          - dps_val: vocal
+            value: Vocal
+          - dps_val: heavy_bass
+            value: Heavy bass
+          - dps_val: concert_hall
+            value: Concert hall
+          - dps_val: stereo
+            value: Wide stereo
+  - entity: number
+    name: Track
+    icon: "mdi:playlist-music"
+    dps:
+      - id: 101
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 0
+          max: 100
+  - entity: select
+    name: Bluetooth
+    icon: "mdi:bluetooth"
+    category: config
+    dps:
+      - id: 102
+        type: string
+        name: option
+        mapping:
+          - dps_val: connect
+            value: Connect
+          - dps_val: disconnect
+            value: Disconnect
+  - entity: switch
+    name: Laser breathe
+    icon: "mdi:laser-pointer"
+    category: config
+    dps:
+      - id: 20
+        type: boolean
+        name: available
+        mapping:
+          - dps_val: true
+            value_redirect: laser_on
+      - id: 53
+        type: boolean
+        name: laser_on
+        hidden: true
+      - id: 103
+        type: boolean
+        optional: true
+        name: switch
+  - entity: number
+    name: Laser breathe speed
+    category: config
+    icon: "mdi:laser-pointer"
+    dps:
+      - id: 103
+        type: boolean
+        optional: true
+        hidden: true
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+      - id: 104
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 1
+          max: 100
+  - entity: text
+    name: Alarm clock
+    category: config
+    icon: "mdi:alarm"
+    hidden: true
+    dps:
+      - id: 105
+        type: string
+        optional: true
+        name: value