FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

That’s strange because it should install the dependencies automatically.

I’m not sure why, but this is the second time I’ve had to manually pip install dependencies for a custom component. The other one was for a custom alarm (bwalarm). I probably tried this deebot a dozen times(with restarts & machine reboots) and it wasn’t working. Looks like I have all of the available options now:

Would be nice to combine all these deebots into 1 component.
The official one is only for old deebots.
The Ligios one works for deboots 900-930?
Andrea_Liosi’s one works for 950 only? LOL

We have another one floating around for 900-930, soltroy?. :stuck_out_tongue:

For example, I noticed Andrea did a fix for the fan speed in the 950… I use the Ligios one on my 907 (Costco), yet it doesn’t grab the fan speed correctly after a HA restart. I assume that fix would work with the Ligios to fix the fan speed. But my 907 doesn’t work with Andrea’s one… Would be nice if they were all just in a single component, and benefit from all the bug fixes and such.

2 Likes

I agree. I’m using Ligios for my OZMO 930.

yet it doesn’t grab the fan speed correctly after a HA restart

Fan speed doesn’t even work on 930. I don’t think they have that option, unless it was added in a firmware upgrade that’s actually broken for the 930 (for the time being).

The problem is that they are all forks of the same python library. The original maintainer doesn’t use the package any more and so wants to keep it maintainable. To make things worse it appears that Ecovacs are rapidly changing between technologies so that there are at least 3 different technology platforms being used across the Ecovacs range. It’s turning into a real mess and would require a LOT of time to maintain all these.

You have to take into account that this is all unofficial work that is not supported by Ecovacs so we should be very grateful to all the people who spent the time working out how to even communicate with these devices.

1 Like

Based on the nice work from @Ligio, here is my deebot 930 card !! thought of sharing in case some one is interested, it is really handy to pick different rooms to clean!

cards:
  - buttons:
      locate: false
      pause: false
      return: false
      spot: false
      start: false
      stop: false
    entity: vacuum.e0001057017609560622_2
    image: /local/deebot.png
    name: Deebot
    type: 'custom:xiaomi-vacuum-card'
    vendor: ecovacs
  - color: auto
    entity: null
    icon: null
    name: Deebot Control
    styles:
      card:
        - font-size: 16px
      name:
        - justify-self: start
        - padding-left: 16px
    type: 'custom:button-card'
  - cards:
      - color: auto
        entity: null
        icon: 'mdi:map-marker-radius'
        name: Find my Deebot
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.locate
          service_data:
            entity_id: vacuum.e0001057017609560622_2
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:home'
        name: Auto
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options:
              - '0'
              - '1'
              - '2'
              - '3'
              - '4'
              - '5'
              - '6'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:robot-vacuum'
        name: Recharge
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: vacuum.return_to_base
          service_data:
            entity_id: vacuum.e0001057017609560622_2
        type: 'custom:button-card'
    type: horizontal-stack
  - color: auto
    entity: null
    icon: null
    name: Area to clean
    styles:
      card:
        - font-size: 16px
      name:
        - justify-self: start
        - padding-left: 16px
    type: 'custom:button-card'
  - cards:
      - color: auto
        entity: null
        icon: 'mdi:toaster-oven'
        name: Kitchen
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options: '0'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:bed-empty'
        name: Bedroom
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options:
              - '5'
              - '6'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:sofa'
        name: Livingroom
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options: '1'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:shower'
        name: Bathroom
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options: '4'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:road-variant'
        name: Hallway
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options: '2'
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:bed-empty'
        name: 2nd Room
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.room_clean
            options: '3'
        type: 'custom:button-card'
    type: horizontal-stack
  - color: auto
    entity: null
    icon: null
    name: Amount of water for mopping
    styles:
      card:
        - font-size: 16px
      name:
        - justify-self: start
        - padding-left: 16px
    type: 'custom:button-card'
  - cards:
      - color: auto
        entity: null
        icon: 'mdi:flask-empty-outline'
        name: Low
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.water_level
            options: low
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:flask-outline'
        name: Medium
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.water_level
            options: medium
        type: 'custom:button-card'
      - color: auto
        entity: null
        icon: 'mdi:flask-empty'
        name: High
        styles:
          card:
            - font-size: 12px
        tap_action:
          action: call-service
          service: input_select.set_options
          service_data:
            entity_id: input_select.water_level
            options: high
        type: 'custom:button-card'
    type: horizontal-stack
type: vertical-stack

and here is the automation behind it, just created the

input_select.water_level with options high, medium, low
input_select.room_clean with the number of rooms/zones you are interested in. Note that EVOVACS app names the room [A,B,C,D,…] corresponds to [0,1,2,3,4,…] on the home assistant integration from Ligios. Also you select multiple rooms in one call.

#################################################################
#                                                               #
#             Deebot Room Selection and Water Level             #
#                                                               #
################################################################# 
    
    - id: '1584099444108'
      alias: DeebotWater
      description: ''
      trigger:
      - entity_id: input_select.water_level
        platform: state
      condition: []
      action:
      - service: vacuum.send_command
        data_template:
          command: set_water_level
          entity_id: vacuum.e0001057017609560622_2
          params: {"level": "{{states.input_select.water_level.state}}"}

    - id: '1584099444109'
      alias: DeebotWater
      description: ''
      trigger:
      - entity_id: input_select.room_clean
        platform: state
      condition: []
      action:
      - service: vacuum.send_command
        data_template:
          entity_id: vacuum.e0001057017609560622_2
          command: spot_area
          params: {"area": "{{states.input_select.room_clean.state}}"}

My next steps are:

  • make the automation to wait for the room being clean to be finished then start to process the next command. For this I need to utilise the status sensor of Deebot.

  • Set scheduled cleaning actions for all house or for certain rooms

  • Optimally I like to use the floorplan library to press on the room to be cleaned but I am lazy to create an SVG file. Hopefully with the quartinate mode nowadays I can pick this up.

8 Likes

Hi, I have hassio on my Synology NAS and works very good.
The only device that i’m not able to connet is my new Ecovacs Deebot 930 Pro.
It works fine with the app (of course) but Home Assistant always see it in “unkwonws” status.
Someone can help me please?

Sorry for my English.

Hello…Is there something for deebot 920?

@Megane73, I’m using Ligio with my 930 without any issues: https://github.com/Ligio/hacc-ozmo. Give that a shot.

1 Like

deebot:
username: YOUR_ECOVACS_USERNAME
password: YOUR_ECOVACS_PASSWORD
country: it
continent: eu

This in my configuration, but i have no link with 930…
I have just try to add the " supported_features" but the result was an error when i analize the configuration befoure restart.

Thanks so much for this. Works great. Also wasted A LOT of time because I was typing “deepbot” instead of “deebot”. I need to pay more attention.

Confirmed working with the N79S

Hi all,

Just picked up two Deebot 907s. I set one up so far and am trying to integrate into HA. I can’t get anything to work. So far I tried the “official” integration. Then I tried the Deebot 950 HACS integration. Both just return errors. Can someone tell me which config in this thread works with the 907?

Thanks,
Mike

Got it. This post was very helpful in figuring out what’s going on in this thread.

How can I use your integration in order to clean an area? Thanks

first of all you have to allow your ecovacs to scan your home, it will automatically store the map and name the zone A,B,C,D,…

then check my reply FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

My robot has already stored the map and labels (ozmo 920). But I’m able to use return_to_base,start and locate…instead send_command does not work with set_water_level and spot_area.

For spot cleaning and water level, what do you get when sending the following services:

      - service: vacuum.send_command
       data:
          entity_id: vacuum.yourvacuum
          command: spot_area
          params: {"area": "0"}
      - service: vacuum.send_command
        data_template:
          command: set_water_level
          entity_id: vacuum.yourvacuum
          params: {'level": "low"}

image

I tried in this way and I don’t receive any response (where can I check it to be sure?).

In HA log I found: [deebotozmo] call to iotdevmanager failed with {‘ret’: ‘fail’, ‘errno’: 500, ‘debug’: ‘wait for response timed out’}

Are you sure you are using the integration from @Ligio

Yes. Otherwise without that integration I’m not able to start and stop the cleaning.