Przeglądaj źródła

feat(devices): add Rowenta X-plorer 75S vacuum

Issue #4593
Jason Rumney 2 miesięcy temu
rodzic
commit
e2f70e7ce3

+ 2 - 1
DEVICES.md

@@ -1003,8 +1003,9 @@ of device.
 - OPK K2 vacuum cleaner
 - Parkside PPWD 30 A1 workshop vacuum
 - Proscenic M9, 850T vacuum cleaners
-- Realme TechLife robot vacuum cleaner
+- Realme TechLife vacuum cleaner
 - Rinkmo D2 vacuum cleaner
+- Rowenta X-plorer 75 S vacuum cleaner
 - Tefal X-plorer serie 75 animal vacuum
 - Tesvor S6 vacuum cleaner with mop
 - TTEC Robi Pro vacuum cleaner

+ 480 - 0
custom_components/tuya_local/devices/rowenta_xplorer75s_vacuum.yaml

@@ -0,0 +1,480 @@
+name: Robot vacuum
+products:
+  - id: UNKNOWN
+    manufacturer: Rowenta
+    model: X-Plorer 75S
+entities:
+  - entity: vacuum
+    dps:
+      - id: 1
+        type: boolean
+        name: activate
+        mapping:
+          - dps_val: false
+            constraint: pause
+            conditions:
+              - dps_val: true
+                value: false
+              - dps_val: true
+                value: false
+                hidden: true
+          - dps_val: true
+            constraint: pause
+            conditions:
+              - dps_val: false
+                value: true
+              - dps_val: true
+                value: true
+                hidden: true
+      - id: 2
+        type: boolean
+        name: pause
+        hidden: true
+      - id: 4
+        type: string
+        name: command
+        mapping:
+          - dps_val: smart
+            value: smart
+          - dps_val: zone
+            value: zone
+          - dps_val: pose
+            value: clean_spot
+          - dps_val: part
+            value: partial
+          - dps_val: chargego
+            value: return_to_base
+          - dps_val: wallfollow
+            value: wall_follow
+          - dps_val: selectroom
+            value: select_room
+      - id: 5
+        type: string
+        name: status
+        mapping:
+          - dps_val: standby
+            value: standby
+          - dps_val: smart
+            value: smart
+          - dps_val: zone_clean
+            value: zone
+          - dps_val: part_clean
+            value: partial
+          - dps_val: cleaning
+            value: cleaning
+          - dps_val: paused
+            value: paused
+          - dps_val: goto_pos
+            value: seeking_spot
+          - dps_val: pos_arrived
+            value: located spot
+          - dps_val: pos_unarrive
+            value: left_spot
+          - dps_val: goto_charge
+            value: returning
+          - dps_val: charging
+            value: charging
+          - dps_val: charge_done
+            value: charged
+          - dps_val: sleep
+            value: sleep
+          - dps_val: fault
+            value: error
+          - dps_val: wall_follow
+            value: wall_following
+          - dps_val: direction_control
+            value: manual_positioning
+          - dps_val: select_room
+            value: selecting_room
+          - dps_val: repositing
+            value: repositioning
+      - id: 9
+        type: string
+        name: fan_speed
+        mapping:
+          - dps_val: gentle
+            value: low
+          - dps_val: normal
+            value: medium
+          - dps_val: strong
+            value: high
+          - dps_val: max
+            value: turbo
+      - id: 11
+        type: boolean
+        optional: true
+        name: locate
+      - id: 12
+        type: string
+        optional: true
+        name: direction_control
+        mapping:
+          - dps_val: forward
+            value: forward
+          - dps_val: backward
+            value: backward
+          - dps_val: turn_left
+            value: left
+          - dps_val: turn_right
+            value: right
+          - dps_val: stop
+            value: stop
+  - entity: sensor
+    class: battery
+    dps:
+      - id: 8
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: select
+    translation_key: mopping
+    category: config
+    dps:
+      - id: 10
+        type: string
+        name: option
+        mapping:
+          - dps_val: closed
+            value: "off"
+          - dps_val: low
+            value: low
+          - dps_val: middle
+            value: medium
+          - dps_val: high
+            value: high
+  - entity: number
+    translation_key: volume
+    category: config
+    dps:
+      - id: 26
+        type: integer
+        name: value
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 28
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 28
+        type: bitfield
+        name: fault_code
+  - entity: switch
+    name: Custom mode
+    category: config
+    dps:
+      - id: 105
+        type: boolean
+        name: switch
+
+  - entity: sensor
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 6
+        type: integer
+        optional: true
+        name: sensor
+        unit: min
+        class: measurement
+  - entity: sensor
+    class: area
+    category: diagnostic
+    dps:
+      - id: 7
+        type: integer
+        optional: true
+        name: sensor
+        unit: m2
+        class: measurement
+  - entity: sensor
+    name: Edge brush life
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 17
+        type: integer
+        optional: true
+        name: sensor
+        unit: min
+        class: measurement
+  - entity: sensor
+    name: Roll brush life
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 19
+        type: integer
+        optional: true
+        name: sensor
+        unit: min
+        class: measurement
+  - entity: sensor
+    translation_key: filter_life
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 21
+        type: integer
+        optional: true
+        name: sensor
+        unit: min
+        class: measurement
+  - entity: switch
+    translation_key: do_not_disturb
+    category: config
+    dps:
+      - id: 25
+        type: boolean
+        optional: true
+        name: switch
+  - entity: switch
+    name: Break clean
+    category: config
+    dps:
+      - id: 27
+        type: boolean
+        optional: true
+        name: switch
+  - entity: sensor
+    name: Total clean area
+    class: area
+    category: diagnostic
+    dps:
+      - id: 29
+        type: integer
+        optional: true
+        name: sensor
+        unit: m2
+        class: total_increasing
+  - entity: sensor
+    name: Number of cleans
+    category: diagnostic
+    dps:
+      - id: 30
+        type: integer
+        optional: true
+        name: sensor
+        unit: times
+        class: total_increasing
+  - entity: sensor
+    name: Total cleaning time
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 31
+        type: integer
+        optional: true
+        name: sensor
+        unit: min
+        class: total_increasing
+  - entity: switch
+    name: Charge
+    icon: "mdi:battery-charging"
+    category: config
+    dps:
+      - id: 3
+        type: boolean
+        optional: true
+        name: switch
+  - entity: button
+    name: Reset map
+    category: config
+    hidden: true
+    dps:
+      - id: 13
+        type: boolean
+        optional: true
+        name: button
+  - entity: text
+    name: Path data
+    category: config
+    icon: "mdi:floor-plan"
+    hidden: true
+    dps:
+      - id: 14
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Command
+    category: config
+    icon: "mdi:cogs"
+    hidden: true
+    dps:
+      - id: 15
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    name: Request
+    icon: "mdi:cogs"
+    category: config
+    hidden: true
+    dps:
+      - id: 16
+        type: string
+        optional: true
+        name: option
+        mapping:
+          - dps_val: get_map
+            value: Map
+          - dps_val: get_path
+            value: Path
+          - dps_val: get_both
+            value: Both
+  - entity: button
+    name: Edge brush reset
+    icon: "mdi:history"
+    category: config
+    dps:
+      - id: 18
+        type: boolean
+        optional: true
+        name: button
+  - entity: button
+    name: Roller brush reset
+    icon: "mdi:history"
+    category: config
+    dps:
+      - id: 20
+        type: boolean
+        optional: true
+        name: button
+  - entity: button
+    translation_key: filter_reset
+    icon: "mdi:history"
+    category: config
+    dps:
+      - id: 22
+        type: boolean
+        optional: true
+        name: button
+  - entity: text
+    translation_key: schedule
+    category: config
+    hidden: true
+    dps:
+      - id: 32
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Do not disturb schedule
+    category: config
+    icon: "mdi:sleep"
+    hidden: true
+    dps:
+      - id: 33
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Voice data
+    category: config
+    icon: "mdi:account-voice"
+    hidden: true
+    dps:
+      - id: 35
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    translation_key: language
+    category: config
+    dps:
+      - id: 36
+        type: string
+        name: option
+        optional: true
+        mapping:
+          - dps_val: chinese_simplified
+            value: chinese
+          - dps_val: english
+            value: english
+          - dps_val: french
+            value: french
+          - dps_val: spanish
+            value: spanish
+          - dps_val: portuguese
+            value: portuguese
+  - entity: select
+    name: Smart rooms
+    icon: "mdi:floor-plan"
+    category: config
+    hidden: true
+    dps:
+      - id: 101
+        type: string
+        optional: true
+        name: option
+        mapping:
+          - dps_val: cur_rooms
+            value: Current
+          - dps_val: edit_rooms
+            value: Edit
+          - dps_val: segment
+            value: Split
+          - dps_val: clear_rooms
+            value: Clear
+          - dps_val: save_rooms
+            value: Save
+  - entity: event
+    name: Rooms
+    dps:
+      - id: 102
+        type: bitfield
+        optional: true
+        name: event
+        mapping:
+          - dps_val: 0
+            value: null
+          - dps_val: 1
+            value: Splitting
+          - dps_val: 2
+            value: Merging
+          - dps_val: 4
+            value: Mapping
+          - dps_val: 8
+            value: Cleaning
+          - dps_val: 16
+            value: Active split
+          - dps_val: 32
+            value: Automatic
+          - dps_val: 64
+            value: Failed to save
+          - dps_val: 128
+            value: Split succeeded
+          - dps_val: 256
+            value: Merge succeeded
+          - dps_val: 512
+            value: Not found
+          - dps_val: 1024
+            value: Out of range
+          - dps_val: 2048
+            value: Set OK
+  - entity: event
+    name: Room notification
+    dps:
+      - id: 199
+        type: string
+        name: event
+        optional: true
+        mapping:
+          - dps_val: null
+            value: null
+          - value: message
+      - id: 199
+        type: string
+        optional: true
+        name: message
+        # "0" - "25", may be room number? Or duplicate of above info?