FIXED: Ecovacs Deebot 2019 & OZMO Series - Working Library

@SolTroy,

Thanks for your GIST. I used it to install your custom component. To my amazement, it finally pulled in the Deebot 900 into my HA config which I have not been able to do for months!! Thank you!

With that said, I’m now seeing this error in my config:

INFO:homeassistant.util.package:Attempting install of ozmo==1.0
2020-03-19 20:48:44 INFO (SyncWorker_16) [homeassistant.util.package] Attempting install of ozmo==1.0
2020-03-19 20:49:10 ERROR (SyncWorker_16) [homeassistant.util.package] Unable to install package ozmo==1.0: ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/usr/local/lib/python3.7/site-packages/ozmo-1.0.dist-info/INSTALLER.pip'
2020-03-19 20:49:10 ERROR (MainThread) [homeassistant.config] Package vacuum setup failed. Integration deebot Requirements for deebot not found: ['ozmo==1.0']. (See /config/packages/vacuum.yaml:1).

These are the only occurrences of ozmo in my config:

Is there an easy fix for this or do I just ignore it?

Sorry… the @Ligio integration does not work with my 930. With that I cannot do anything, for example I cannot retrieve battery and brash status.

The only one that partially works for me is the one provided with @And3rsL and avavilable on HACS

Thank you for your suggestion.
I uninstalled the component present in the costom component and installed that of Ligio and now it works correctly!

1 Like

I’m on Windows installation.

I copied the files into: C:\Users–username–\AppData\Roaming.homeassistant\custom_component\deebot

I get the following error in the log:
2020-03-26 19:04:59 ERROR (MainThread) [homeassistant.setup] Setup failed for deebot: Integration not found.

I fixed the issue… I missed the “s” in “custom_components” :frowning:
I have a Deebot 920… do I need to use “deebot” or “ecovacs” plugin?

I’m now using “deebot” but I cannot see the vacuum sensors (brush/filter) status… I see 0%…

I also tried the @KEM_Hass configuration… I can’t see status, battery and mode… moreover, where shall I put the second part of the configuration “Deebot Room Selection and Water Level” ?

Hi Stefano,
I was able to integrate my deebot 920 only with this component:

image

But I can locate, auto clean and recharge the deebot and monitoring battery and brush.

image

At the moment the vacum.send_command does not work with my 920.

Could you help me a little bit more?

I’m a newby with Home Assistant… I started like 2 days ago :slight_smile:

@Gabriele_Mandalari can you please share your configuration with me?

Hi Stefano,
you should add that integration via HACS:

image

After that you have to follow the instruction provided with the readme

I already did it… but I can’t see the brush/filter % status (I see 0%) and I cannot start the clean…

Can you please share your yaml configuration?

First:
image

Second:

  • platform: template
    sensors:
    deebot_battery_level:
    friendly_name: “Deebot 920 Batteria”
    unit_of_measurement: ‘%’
    value_template: “{{ state_attr(‘vacuum.robi’, ‘battery_level’) }}”

  • platform: template
    sensors:
    deebot_brush_level:
    friendly_name: “Deebot 920 Spazzola”
    unit_of_measurement: ‘%’
    value_template: “{{ state_attr(‘vacuum.robi’, ‘component_brush’) }}”

Thanks. I’m now able to read my battery level and brush usage %.

How can I locate, auto clean and recharge ?

Risolto così:

cards:
  - color: auto
    entity: null
    icon: 'mdi:map-marker-radius'
    name: Trova
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.locate
      service_data:
        entity_id: vacuum.aspirapolvere
    type: 'custom:button-card'
  - color: auto
    entity: null
    icon: 'mdi:play'
    name: Inizia
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.start
      service_data:
        entity_id: vacuum.aspirapolvere
    type: 'custom:button-card'
  - color: auto
    entity: null
    icon: 'mdi:pause'
    name: Pausa
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.pause
      service_data:
        entity_id: vacuum.aspirapolvere
    type: 'custom:button-card'
  - color: auto
    entity: null
    icon: 'mdi:robot-vacuum'
    name: Ricarica
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.return_to_base
      service_data:
        entity_id: vacuum.aspirapolvere
    type: 'custom:button-card'
type: horizontal-stack

set_fan_speed

cards:
  - color: auto
    entity: null
    icon: 'mdi:fan'
    name: Basso
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.aspirapolvere
        fan_speed: quiet
    type: 'custom:button-card'
  - color: auto
    entity: null
    icon: 'mdi:fan'
    name: Medio
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.aspirapolvere
        fan_speed: normal
    type: 'custom:button-card'
  - color: auto
    entity: null
    icon: 'mdi:fan'
    name: Alto
    styles:
      card:
        - font-size: 12px
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.aspirapolvere
        fan_speed: max
    type: 'custom:button-card'
type: horizontal-stack

Does anyone get the below in your config check with the @SolTroy GIST? This is the only error I get:

INFO:homeassistant.util.package:Attempting install of ozmo==1.0
2020-03-27 23:58:12 INFO (SyncWorker_9) [homeassistant.util.package] Attempting install of ozmo==1.0
ERROR:homeassistant.util.package:Unable to install package ozmo==1.0: ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/usr/local/lib/python3.7/site-packages/ozmo-1.0.dist-info/INSTALLER.pip'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 350, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 342, in main
    exit_code = asyncio.run(setup_and_run_hass(config_dir, args))
  File "/usr/local/lib/python3.7/asyncio/runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "/usr/local/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
    return future.result()
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 249, in setup_and_run_hass
    safe_mode=args.safe_mode,
  File "/usr/src/homeassistant/homeassistant/bootstrap.py", line 83, in async_setup_hass
    config_dict = await conf_util.async_hass_config_yaml(hass)
  File "/usr/src/homeassistant/homeassistant/config.py", line 308, in async_hass_config_yaml
    await merge_packages_config(hass, config, core_config.get(CONF_PACKAGES, {}))
  File "/usr/src/homeassistant/homeassistant/config.py", line 637, in merge_packages_config
    hass, domain
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 55, in async_get_integration_with_requirements
    hass, integration.domain, integration.requirements
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 102, in async_process_requirements
    ret = await hass.async_add_executor_job(_install, hass, req, kwargs)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 115, in _install
    progress_path.unlink()
  File "/usr/local/lib/python3.7/pathlib.py", line 1304, in unlink
    self._accessor.unlink(self)
FileNotFoundError: [Errno 2] No such file or directory: '/config/.pip_progress'

I have problems with the send_command…

If I try:

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
      data_template:
        entity_id: vacuum.aspirapolvere
        command: spot_area
        params:
          area: '1'
    type: 'custom:button-card'

I get the following error:

2020-03-28 08:42:10 WARNING (SyncWorker_5) [deebotozmo] call to iotdevmanager failed with {'ret': 'fail', 'errno': 500, 'debug': 'wait for response timed out'}
2020-03-28 08:42:27 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.2543796085712] required key not provided @ data['command']
Traceback (most recent call last):
  File "C:\Python38\lib\site-packages\homeassistant\components\websocket_api\commands.py", line 129, in handle_call_service
    await hass.services.async_call(
  File "C:\Python38\lib\site-packages\homeassistant\core.py", line 1212, in async_call
    processed_data = handler.schema(service_data)
  File "C:\Python38\lib\site-packages\voluptuous\validators.py", line 208, in __call__
    return self._exec((Schema(val) for val in self.validators), v)
  File "C:\Python38\lib\site-packages\voluptuous\validators.py", line 287, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "C:\Python38\lib\site-packages\voluptuous\validators.py", line 283, in _exec
    v = func(v)
  File "C:\Python38\lib\site-packages\voluptuous\schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "C:\Python38\lib\site-packages\voluptuous\schema_builder.py", line 817, in validate_callable
    return schema(data)
  File "C:\Python38\lib\site-packages\voluptuous\schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "C:\Python38\lib\site-packages\voluptuous\schema_builder.py", line 594, in validate_dict
    return base_validate(path, iteritems(data), out)
  File "C:\Python38\lib\site-packages\voluptuous\schema_builder.py", line 432, in validate_mapping
    raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: required key not provided @ data['command']

Same for me… deebot 920

Any idea on how to fix the send_command issue for deebot 920?

What is the script/code to be fixed?

Ecovacs keeps changing their api’s

I have only deebot 950 and i cant test others, someone used my component with succes with any other deebot?

Anyway, i updated the plugin and library. PLEASE BEFORE UPDATE GO TO READ THE “README” ON GITHUB, many breaking changes, you have to update your configuration.yaml

Now support for send command and clean area

Hi Andrea,
amazing update, it works properly with my 920.

Just one thing: If I try to clean just one room I should specify the room number followed by comma

image

Is it a bug? No issues with multiple numbers.

Last thing: how can I convert it in automation? I have some problems with params…

image