name: Robot vacuum
products:
  - id: ldb9ygikft5awhlu
    manufacturer: Kogan
    model: LX10
entities:
  - entity: vacuum
    dps:
      - id: 101
        name: activate  # clean_switch
        type: boolean
      - id: 102
        name: command  # pause_switch
        type: boolean
        mapping:
          - dps_val: true
            value: pause
          - dps_val: false
            constraint: actual_command
            conditions:
              - dps_val: smart
                value: smart
              - dps_val: pose
                value: clean_spot
              - dps_val: zone
                value: zone
              - dps_val: backcharge
                value: return_to_base
      - id: 104
        name: actual_command  # clean_mode
        type: string
        hidden: true
      - id: 105
        name: status  # robot_state
        type: string
        mapping:
          - dps_val: idle
            value: standby
          - dps_val: pointing\areaing
            value: pointing_areaing
          - dps_val: totaling
            value: cleaning
          - dps_val: sweep
            value: sweep
          - dps_val: mop
            value: mop
          - dps_val: fault
            value: error
          - dps_val: pause
            value: paused
          - dps_val: chargring
            value: charging
          - dps_val: tocharge
            value: returning
          - dps_val: fullcharge
            value: charged
          - dps_val: remotectl
            value: remotectl
      - id: 109
        name: fan_speed  # fan_mode
        type: string
        mapping:
          - dps_val: quiet
            value: quiet
          - dps_val: strong
            value: strong
          - dps_val: auto
            value: auto
      - id: 111
        name: direction_control  # remote_ctrl
        optional: true
        type: string
        mapping:
          - dps_val: forward
            value: forward
          - dps_val: backward
            value: backward
          - dps_val: left
            value: left
          - dps_val: right
            value: right
          - dps_val: stop
            value: stop
      - id: 112
        name: locate  # seek_robot
        optional: true
        type: boolean
      - id: 123
        name: path_comm
        optional: true
        type: string
      - id: 124
        name: cmd_comm
        optional: true
        type: string
      - id: 125
        name: request_data
        optional: true
        type: string
      - id: 126
        name: comm_flag
        optional: true
        type: string
      - id: 127
        name: comm_raw
        optional: true
        type: string
      - id: 128
        name: message_report
        optional: true
        type: string
      - id: 130
        name: sn
        optional: true
        type: string
      - id: 131
        name: uuid
        optional: true
        type: string
      - id: 132
        name: device_info
        optional: true
        type: string
  - entity: switch
    name: Charge switch
    category: config
    icon: "mdi:power-plug"
    dps:
      - id: 103
        name: switch
        type: boolean
  - entity: sensor
    class: battery
    dps:
      - id: 106
        type: integer
        name: sensor
        unit: "%"
        class: measurement
  - entity: sensor
    name: Current clean time
    category: diagnostic
    class: duration
    icon: "mdi:clock-outline"
    dps:
      - id: 107
        name: sensor
        type: integer
        optional: true
        unit: s
  - entity: sensor
    name: Current clean area
    class: area
    category: diagnostic
    dps:
      - id: 108
        name: sensor
        type: integer
        optional: true
        unit: m2
  - entity: select
    translation_key: mopping
    category: config
    dps:
      - id: 110
        name: option
        type: string
        optional: true
        mapping:
          - dps_val: 'off'
            value: 'off'
          - dps_val: quiet
            value: low
          - dps_val: auto
            value: auto
          - dps_val: strong
            value: high
  - entity: switch
    translation_key: do_not_disturb
    category: config
    dps:
      - id: 113
        name: switch
        type: boolean
        optional: true
  - entity: number
    translation_key: volume
    category: config
    dps:
      - id: 114
        type: integer
        name: value
        range:
          min: 0
          max: 10
  - entity: button
    name: Get time
    category: config
    icon: "mdi:clock-outline"
    dps:
      - id: 115
        type: string
        name: button
        optional: true
        mapping:
          - dps_val: gettime
            value: true
  - entity: button
    name: Reset side brush
    category: config
    icon: "mdi:clock-outline"
    dps:
      - id: 115
        type: string
        name: button
        optional: true
        mapping:
          - dps_val: resetsidebrush
            value: true
  - entity: button
    name: Reset main brush
    category: config
    icon: "mdi:clock-outline"
    dps:
      - id: 115
        type: string
        name: button
        optional: true
        mapping:
          - dps_val: resetmainbrush
            value: true
  - entity: button
    translation_key: filter_reset
    category: config
    dps:
      - id: 115
        type: string
        name: button
        optional: true
        mapping:
          - dps_val: resetfilter
            value: true
  - entity: sensor
    name: Total clean time
    category: diagnostic
    class: duration
    icon: "mdi:clock-outline"
    dps:
      - id: 116
        name: sensor
        type: integer
        unit: s
  - entity: sensor
    name: Total clean area
    class: area
    category: diagnostic
    dps:
      - id: 117
        name: sensor
        type: integer
        optional: true
        unit: m2
  - entity: sensor
    name: Total clean count
    category: diagnostic
    icon: "mdi:counter"
    dps:
      - id: 118
        name: sensor
        type: integer
        optional: true
  - entity: sensor
    name: Side brush time
    category: diagnostic
    class: duration
    icon: "mdi:clock-outline"
    dps:
      - id: 119
        name: sensor
        optional: true
        type: integer
        unit: s
  - entity: sensor
    name: Main brush time
    category: diagnostic
    class: duration
    icon: "mdi:clock-outline"
    dps:
      - id: 120
        name: sensor
        optional: true
        type: integer
        unit: s
  - entity: sensor
    translation_key: filter_life
    category: diagnostic
    class: duration
    dps:
      - id: 121
        name: sensor
        optional: true
        type: integer
        unit: s
  - entity: button
    name: Reset map
    category: config
    icon: "mdi:map-marker-remove"
    dps:
      - id: 129
        name: button
        optional: true
        type: boolean
  - entity: binary_sensor
    class: problem
    category: diagnostic
    dps:
      - id: 122
        type: bitfield
        name: sensor
        mapping:
          - dps_val: 0
            value: false
          - value: true
      - id: 122
        type: bitfield
        name: fault_code
      - id: 122
        name: description
        type: bitfield
        mapping:
          - dps_val: 0
            value: ok
          - dps_val: 2
            value: Battery low
          - dps_val: 32
            value: Drop sensor abnormal
          - dps_val: 4096
            value: Abnormal main brush
          - dps_val: 524288
            value: Machine trapped
          - dps_val: 1048576
            value: Was picked up at work
          - dps_val: 33554432
            value: Recharge failed
