FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

Hello, I still don’t understand how to use the clean area command…

cards:
  - color: auto
    entity: null
    icon: 'mdi:toaster-oven'
    name: Cucina
    styles:
      card:
        - font-size: 12px
    tap_action:
      entity_id: vacuum.aspirapolvere
      command: clean
      params:
        act: start
        content: 1,
        count: 1
        type: spotArea
    type: 'custom:button-card'

Is this correct?

No, if you want to use it in card directly:

      - color: auto
        entity: null
        icon: 'mdi:bed-empty'
        name: Camera
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.send_command
          service_data:
            entity_id: vacuum.robi
            command: clean
            params:
              act: start
              content: '10,14'
              count: 1
              type: spotArea

I just tried it… but doesn’t seem to work… :frowning:

cards:
  - color: auto
    entity: null
    icon: 'mdi:toaster-oven'
    name: Cucina
    styles:
      card:
        - font-size: 12px
      tap_action:
        action: call-service
        service: vacuum.send_command
        service_data:
          entity_id: vacuum.aspirapolvere
          command: clean
          params:
            act: start
            content: '1,'
            count: 1
            type: spotArea

Fixed, tap_action was not properly indented!!!

Now it works… great!!!

Any idea on if the water level will be supported?

No, for now I will ignore it… this is my result:

image

Great result

That’s my result… would you mind sending me the code of your card and the image for the robot? I like more the way you did it :slight_smile: and your icons… :slight_smile:

Is there a way to transform the rooms into a checkboxs (like ON/OFF) and then click a button to clean all the selected rooms? Moreover, also a once/twice dropdown list would be great :slight_smile:

That is:

cards:
  - aspect_ratio: 0%
    entities:
      - entity: input_select.fan_speed
        show_state: true
      - entity: sensor.deebot_battery_level
        show_state: true
    entity: vacuum.robi
    image: >-
      https://www.smartcleaningtips.com/wp-content/uploads/2019/08/ECOVACS-DEEBOT-OZMO-920-3-1000x400.jpg
    title: Deebot
    type: picture-glance
  - cards:
      - color: auto
        entity: null
        icon: 'mdi:map-marker-radius'
        name: Localizza
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.locate
          service_data:
            entity_id: vacuum.robi
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:robot-vacuum-variant'
        name: Pulisci
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.start
          service_data:
            entity_id: vacuum.robi
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:robot-vacuum'
        name: Dock
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.return_to_base
          service_data:
            entity_id: vacuum.robi
        type: 'custom:button-card'
    type: horizontal-stack
  - cards:
      - color: auto
    entity: null
    icon: null
    name: Pulizia Stanze
    styles:
      card:
        - font-size: 16px
      name:
        - justify-self: start
        - padding-left: 16px
    type: 'custom:button-card'
  - cards:
      - cards:
          - color: auto
            entity: null
            icon: 'mdi:toaster-oven'
            name: Cucina
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '0'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:sofa'
            name: Soggiorno
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '2'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:silverware-fork-knife'
            name: Pranzo
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '10'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:broom'
            name: Disimpegno
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '3'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
        type: horizontal-stack
    type: vertical-stack
  - cards:
      - cards:
          - color: auto
            entity: null
            icon: 'mdi:shower-head'
            name: Bagnetto
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '5'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:shower'
            name: Bagno
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '4'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:bed-empty'
            name: Camera
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '6'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
          - color: auto
            entity: null
            icon: 'mdi:bed-empty'
            name: Cameretta
            styles:
              card:
                - font-size: 12px
            tap_action:
              action: call-service
              service: vacuum.send_command
              service_data:
                entity_id: vacuum.robi
                command: clean
                params:
                  act: start
                  content: '9'
                  count: 1
                  type: spotArea
            type: 'custom:button-card'
        type: horizontal-stack
    type: vertical-stack
type: vertical-stack

I would upgrade to multi select… but I don’t know which HA component I can use…

Done!!! Thanks

My open points are now:

  • Use multi select room/number of times --> If you manage to do it, please let me know
  • Read/Set the water level
  • Read the status of the deebot --> I use xiaomi-vacuum-card. Do you know how to read the status?
buttons:
  locate: false
  pause: false
  return: false
  spot: false
  start: false
  stop: false
entity: vacuum.aspirapolvere
image: /local/deebot.jpg
name: Aspirapolvere
type: 'custom:xiaomi-vacuum-card'
vendor: deebot

Big Update!

  • Added water level info / Set
  • Last Clean Image (it just grab image from clean logs)
  • Simple send command syntax (check readme, please dont hate me for changing syntax, im trying to make things easier)
  • FIxed single room clean area
  • Use multi select room/number of times from the Card/UI with checkboxs --> If you manage to do it, please let me know
  • Read/Set the water level --> Working now!! Great
  • Read the status of the deebot --> I use xiaomi-vacuum-card. Do you know how to read the status?
  • Last image: I opened a bug :slight_smile:

This is how last cleaned room looks like :confused:

Moreover, I cannot read the status: I tried with “state”, “vacuum_status” and “status”…

I’m trying to use input_boolean :slight_smile:

UI is ready… now I need to understand how to format the action accordingly

  - cards:
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_cucina
        icon: 'mdi:toaster-oven'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_sala
        icon: 'mdi:sofa'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_camera
        icon: 'mdi:bed-king'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_bagno_grande
        icon: 'mdi:shower'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
    type: horizontal-stack
  - cards:
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_bagno_piccolo
        icon: 'mdi:shower-head'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_corridoio
        icon: 'mdi:road-variant'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_aurora
        icon: 'mdi:bed-empty'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(255, 0, 0)'
        entity: input_boolean.deebot_giovanni
        icon: 'mdi:bed-empty'
        state:
          - color: 'rgb(100, 100, 100)'
            value: 'off'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
      - color: 'rgb(0, 255, 0)'
        entity: input_boolean.deebot_times
        icon: 'mdi:numeric-2'
        state:
          - color: 'rgb(255, 0, 0)'
            value: 'off'
            icon: 'mdi:numeric-1'
        styles:
          card:
            - font-size: 12px
            - background-color: black
            - color: white
        type: 'custom:button-card'
    type: horizontal-stack

This code doesn’t seem to work…

  - color: white
    entity: null
    icon: 'mdi:view-dashboard-outline'
    name: Stanze
    styles:
      card:
        - font-size: 12px
        - background-color: black
        - color: white
    tap_action:
      action: call-service
      service: vacuum.send_command
      service_data:
        command: spot_area
        entity_id: vacuum.aspirapolvere
        params:
          cleanings: |-
            {% if ('input_boolean.deebot_times', 'on') %}
              2
            {% else %}
              1
            {% endif %}
          rooms: |-
            {% if ('input_boolean.deebot_cucina', 'on') %}
              1,
            {% endif %}  
            {% if ('input_boolean.deebot_sala', 'on') %}
              0,
            {% endif %}
            {% if ('input_boolean.deebot_camera', 'on') %}
              3,
            {% endif %}
            {% if ('input_boolean.deebot_bagno_grande', 'on') %}
              5,
            {% endif %}
            {% if ('input_boolean.deebot_bagno_piccolo', 'on') %}
              8,
            {% endif %}
            {% if ('input_boolean.deebot_corridoio', 'on') %}
              2,
            {% endif %}
            {% if ('input_boolean.deebot_aurora', 'on') %}
              7,
            {% endif %}            
            {% if ('input_boolean.eebot_giovanni', 'on') %}
              6,
            {% endif %}
    type: 'custom:button-card'

How did you get that map of your place off the bot? :open_mouth:

I have a 930 … it’s using the old firmware. I think the Firmware Update URL for this model is broken. I’ve had a bit of a circling with support over this. :frowning:

last_clean_image :wink:

Thanks for all the great work guys. I am still kinda learning the whole HA and yaml thing and naturally I am confused. I got the HACS integration to work and also the card to display something but I am not able to control but maybe can somebody post everything he/she wrote? What belongs in the cards and what in the config, automation files? I am a little bit confused and maybe I could use that as a start. Thanks in advance!

@Gabriele_Mandalari any idea on how to fix it?

Hi Stefano,
sorry I missed something…what are you referring to?

UI is ready to manage selection of multiple rooms and number of times with buttons and input_booleans…

I also have the code to feed rooms and cleanings parameters… but it doesn’t seem to work… :frowning:

                      cleanings: >
                        {%- if is_state('input_boolean.deebot_times', 'on')
                        -%}2{%- else -%}1{%- endif -%}
                      rooms: >
                        {%- if is_state('input_boolean.deebot_cucina', 'on')
                        -%}1,{% endif %}{%- if
                        is_state('input_boolean.deebot_sala', 'on')-%}0,{% endif
                        %}{%- if is_state('input_boolean.deebot_camera',
                        'on')-%}3,{% endif %}{%- if
                        is_state('input_boolean.deebot_bagno_grande','on')
                        -%}5,{% endif %}  {%- if
                        is_state('input_boolean.deebot_bagno_piccolo','on')
                        -%}8,{% endif %}{%- if
                        is_state('input_boolean.deebot_corridoio', 'on')-%}2,{%
                        endif %}  {%- if is_state('input_boolean.deebot_aurora',
                        'on')-%}7,{% endif %}{%- if
                        is_state('input_boolean.deebot_giovanni', 'on') -%}6,{%
                        endif %}

In general… it seems that I’m not able to transform parametric values, code included in {{, % or whatever else… into the final result value inside the lovelace.yaml…

Am I missing something?

I’m very close to the solution…

With notify.notify I can read the value of x, and it’s correct… but it doesn’t work with rooms… :frowning:

              - type: 'custom:config-template-card'    
                entities:
                  - input_boolean.deebot_times
                  - input_boolean.deebot_cucina
                  - input_boolean.deebot_sala
                  - input_boolean.deebot_camera
                  - input_boolean.deebot_bagno_grande
                  - input_boolean.deebot_bagno_piccolo
                  - input_boolean.deebot_corridoio
                  - input_boolean.deebot_aurora
                  - input_boolean.deebot_giovanni
                card:
                    type: 'custom:button-card'
                    color: white
                    entity: null
                    icon: 'mdi:view-dashboard-outline'
                    name: Stanze
                    styles:
                      card:
                        - font-size: 12px
                        - background-color: black
                        - color: white
                    tap_action:
                      action: call-service
                      service: vacuum.send_command
                      #service: notify.notify
                      service_data:
                        command: spot_area
                        entity_id: vacuum.aspirapolvere
                        params:
                          cleanings: >-
                              {%- if is_state('input_boolean.deebot_times', 'on') -%}2{%- else
                              -%}1{%- endif -%}
                          rooms: >-
                              {%- set x = "" %}
                              {% if is_state('input_boolean.deebot_cucina', 'on') %}
                                {% set x = x + "1," %}
                              {% endif %}
                              {% if is_state('input_boolean.deebot_sala', 'on') %}
                                {% set x = x + "0," %}
                              {% endif %}
                              {% if is_state('input_boolean.deebot_camera', 'on') %}
                                {% set x = x + "3," %}
                              {% endif %}
                              {% if is_state('input_boolean.deebot_bagno_grande','on') %}
                                {% set x = x + "5," %}
                              {% endif %}  
                              {% if is_state('input_boolean.deebot_bagno_piccolo','on') %}
                                {% set x = x + "8," %}
                              {% endif %}
                              {% if is_state('input_boolean.deebot_corridoio', 'on') %}
                                {% set x = x + "2," %}
                              {% endif %}  
                              {% if is_state('input_boolean.deebot_aurora', 'on') %}
                                {% set x = x + "7," %}
                              {% endif %}
                              {% if is_state('input_boolean.deebot_giovanni', 'on') %}
                                {% set x = x + "6," %}
                              {% endif %}
                                {{x[:-1]}}