name: Robot vacuum
products:
  - id: 1bgkj0zbhbw7fppy
    name: Kogan LX8
primary_entity:
  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: clean_mode
          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: clean_mode
      type: string
      optional: 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: standard
          value: standard
    - 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: 122
      name: error  # robot_fault
      type: bitfield
      mapping:
        - 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
    - 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
secondary_entities:
  - 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
        unit: s
  - entity: sensor
    name: Current clean area
    category: diagnostic
    icon: "mdi:map-marker-distance"
    dps:
      - id: 108
        name: sensor
        type: integer
        unit: m²
        optional: true
  - entity: select
    translation_key: mopping
    category: config
    dps:
      - id: 110
        name: option
        type: string
        mapping:
          - dps_val: 'off'
            value: 'off'
          - dps_val: quiet
            value: low
          - dps_val: auto
            value: auto
          - dps_val: strong
            value: high
        optional: true
  - entity: switch
    name: Disturb switch
    category: config
    icon: "mdi:bell-ring"
    dps:
      - id: 113
        name: switch
        type: boolean
        optional: true
  - entity: number
    name: Volume
    category: config
    icon: "mdi:volume-high"
    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
    name: Reset filter
    category: config
    icon: "mdi:clock-outline"
    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
        optional: true
  - entity: sensor
    name: Total clean area
    category: diagnostic
    icon: "mdi:map-marker-distance"
    dps:
      - id: 117
        name: sensor
        type: integer
        unit: m²
        optional: true
  - 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
    name: Filter time
    category: diagnostic
    class: duration
    icon: "mdi:clock-outline"
    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
