FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

Under robot settings

1 Like

Now available on HACS!

1 Like

Cool! Under which name? Was not able to find it under “deebot” or “ecovacs”

Reload HACS data if you can’t see it

Ah, I see it now. Thanks again for all the work and quick replies! :slight_smile:

PS: for those on the 930, I figured out a problem with DEEBOT OZMO 930 vacuums: their firmware checks are broken. This could be a reason why these vacuums are still behind the 950.

Using a proxy dump on the phone, I was able to discover the 930 is making a 404 call to firmware updates:

This is pretty bad. I’ve emailed US Customer Support about this. Hopefully they’ll be able to get this to their engineers so they can update their servers to catch this URL.

But for now: firmware updates for the 930 are dead in the water. :frowning:

PPS: Also, as you can see from the URL, the firmware version is 1.9.9. According to their site, 900 series is on 2.x and uses the “new” ECOVACS Home app. While the 930 does use the ECOVACS Home app, it’s not on 2.x. This 2.x firmware is most likely the JSON change people are seeing here.

So I have managed to changed the files as per the posts higher up, I can now find the entity in my HA but I can`t operate the bot for some reason I get the bellow

9:25 PM custom_components/deebot/vacuum.py (ERROR)

Ping did not reach VacBot. Will retry.

9:25 PM /usr/local/lib/python3.7/site-packages/ozmo/init.py (WARNING)

You do find those kinds of “errors” quite a bit in HA. It could just mean that it’s not connected to the vac yet. Leave it for an hour or two and see if it fixes itself. You could also try manually telling the vac to do some cleaning & then charging. Sometimes it seems the device needs to operate before HA can get the initial status from it.

I struggled to get this working for my 907(900 series Deebot, I think from Costco, white).
Anyway, I kept getting an error ‘Crypto.PublicKey.RSA’ has no attribute ‘import_key’
Turns out I had to install or upgrade Crypto. At the terminal I used: pip3 install crypto. For good measure, I also did pip install crypto. At the same time I also used pip3 install pycrypto and pip install pycrypto.
Again, I’m fairly noob to this but that’s what finally ended up working for me after I followed the above instructions for the custom component.

I haven’t been able to check for the other sensors/commands but at least Deebot loaded and I can see and activate my vacuum.

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