core icon indicating copy to clipboard operation
core copied to clipboard

Ecovacs Intergrations doesn't update

Open craigmate opened this issue 1 year ago • 19 comments

The problem

HI. I have a DEEBOT OZMO T8 AIVI which is integrated into HA fine without issue. However I noticed that after a couple of days of not running a clean, if I start a vacuum, it won't update its sensors in the integration unless I reload it.

It does seem to response to services because I use an automation to start it, however it doesn't update its sensors unless I reload the integration. Once its reloaded, it works find and the sensors update regularly.

What version of Home Assistant Core has the issue?

2024.10.4

What was the last working version of Home Assistant Core?

2024.10.4

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Ecovacs

Link to integration documentation on our website

https://www.home-assistant.io/integrations/ecovacs

Diagnostics information

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.10.4",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.4",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Australia/Sydney",
    "os_name": "Linux",
    "os_version": "6.6.54-haos",
    "supervisor": "2024.11.2",
    "host_os": "Home Assistant OS 13.2",
    "docker_version": "27.2.0",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "pyscript": {
      "documentation": "https://github.com/custom-components/pyscript",
      "version": "1.6.1",
      "requirements": [
        "croniter==2.0.2",
        "watchdog==2.3.1"
      ]
    },
    "bureau_of_meteorology": {
      "documentation": "https://github.com/bremor/bureau_of_meteorology",
      "version": "1.3.3",
      "requirements": [
        "iso8601"
      ]
    },
    "openplantbook": {
      "documentation": "https://github.com/Olen/home-assistant-openplantbook/",
      "version": "1.3.0",
      "requirements": [
        "json-timeseries==0.1.7",
        "openplantbook-sdk==0.4.7"
      ]
    },
    "localtuya": {
      "documentation": "https://github.com/rospogrigio/localtuya/",
      "version": "5.2.1",
      "requirements": []
    },
    "sun2": {
      "documentation": "https://github.com/pnbruckner/ha-sun2/blob/3.3.4/README.md",
      "version": "3.3.4",
      "requirements": []
    },
    "spook_inverse": {
      "documentation": "https://spook.boo",
      "version": "3.1.0",
      "requirements": []
    },
    "life360": {
      "documentation": "https://github.com/pnbruckner/ha-life360/blob/new-api/README.md",
      "version": "0.4.0.dev11",
      "requirements": [
        "life360==7.0.0b6"
      ]
    },
    "multiscrape": {
      "documentation": "https://github.com/danieldotnl/ha-multiscrape",
      "version": "8.0.2",
      "requirements": [
        "lxml>=4.9.1",
        "beautifulsoup4>=4.12.2"
      ]
    },
    "anniversaries": {
      "documentation": "https://github.com/pinkywafer/Anniversaries",
      "version": "6.0.0",
      "requirements": [
        "python-dateutil>=2.8.1",
        "integrationhelper>=0.2.2",
        "voluptuous>=0.12.1"
      ]
    },
    "hacs": {
      "documentation": "https://hacs.xyz/docs/configuration/start",
      "version": "2.0.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "simpleicons": {
      "documentation": "https://github.com/vigonotion/hass-simpleicons",
      "version": "v2.2.1",
      "requirements": [
        "simpleicons==7.14.0"
      ]
    },
    "plant": {
      "documentation": "https://github.com/Olen/homeassistant-plant/",
      "version": "2024.7.0",
      "requirements": [
        "async-timeout>=4.0.2"
      ]
    },
    "public_transport_victoria": {
      "documentation": "https://github.com/bremor/public_transport_victoria",
      "version": "0.3.2",
      "requirements": []
    },
    "average": {
      "documentation": "https://github.com/Limych/ha-average",
      "version": "2.4.0",
      "requirements": [
        "pip>=21.3.1"
      ]
    },
    "whatsapp": {
      "documentation": null,
      "version": "1.0.2",
      "requirements": [
        "url-normalize==1.4.3"
      ]
    },
    "uptime_kuma": {
      "documentation": "https://github.com/meichthys/uptime_kuma/blob/main/README.md",
      "version": "2.1.0",
      "requirements": [
        "pyuptimekuma-hass"
      ]
    },
    "tapo": {
      "documentation": "https://github.com/petretiandrea/home-assistant-tapo-p100",
      "version": "3.1.2",
      "requirements": [
        "plugp100==5.1.3"
      ]
    },
    "spook": {
      "documentation": "https://spook.boo",
      "version": "3.1.0",
      "requirements": []
    },
    "opennem": {
      "documentation": "https://github.com/bacco007/sensor.opennem",
      "version": "2022.09.1",
      "requirements": []
    },
    "watchman": {
      "documentation": "https://github.com/dummylabs/thewatchman",
      "version": "0.6.3",
      "requirements": [
        "prettytable==3.10.0"
      ]
    },
    "thermal_comfort": {
      "documentation": "https://github.com/dolezsa/thermal_comfort/blob/master/README.md",
      "version": "2.2.2",
      "requirements": []
    },
    "browser_mod": {
      "documentation": "https://github.com/thomasloven/hass-browser_mod/blob/master/README.md",
      "version": "2.3.1",
      "requirements": []
    },
    "powercalc": {
      "documentation": "https://docs.powercalc.nl",
      "version": "v1.15.0",
      "requirements": [
        "numpy>=1.21.1"
      ]
    },
    "mass": {
      "documentation": "https://music-assistant.io",
      "version": "2024.10.1",
      "requirements": [
        "music-assistant==2.2.4"
      ]
    },
    "aus_fuel": {
      "documentation": "https://github.com/tonymyatt/homeassistant-custom-components",
      "version": "0.0.1",
      "requirements": []
    },
    "blitzortung": {
      "documentation": "https://github.com/mrk-its/homeassistant-blitzortung",
      "version": "1.3.8",
      "requirements": [
        "paho-mqtt>=1.5.0"
      ]
    },
    "battery_notes": {
      "documentation": "https://andrew-codechimp.github.io/HA-Battery-Notes/",
      "version": "2.5.4",
      "requirements": []
    },
    "flightradar24": {
      "documentation": "https://github.com/AlexandrErohin/home-assistant-flightradar24",
      "version": "v1.22.0",
      "requirements": [
        "FlightRadarAPI==1.3.34",
        "pycountry==23.12.11"
      ]
    },
    "webrtc": {
      "documentation": "https://github.com/AlexxIT/WebRTC",
      "version": "v3.6.0",
      "requirements": []
    },
    "worlds_air_quality_index": {
      "documentation": "https://github.com/pawkakol1/worlds-air-quality-index",
      "version": "1.1.0",
      "requirements": []
    },
    "teamtracker": {
      "documentation": "https://github.com/vasqued2/ha-teamtracker",
      "version": "0.1",
      "requirements": [
        "arrow",
        "aiofiles"
      ]
    },
    "frigate": {
      "documentation": "https://github.com/blakeblackshear/frigate",
      "version": "5.4.0",
      "requirements": [
        "pytz"
      ]
    },
    "alarmo": {
      "documentation": "https://github.com/nielsfaber/alarmo",
      "version": "v1.10.6",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "ecovacs",
    "name": "Ecovacs",
    "codeowners": [
      "mib1185",
      "edenhaus",
      "Augar"
    ],
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/ecovacs",
    "iot_class": "cloud_push",
    "loggers": [
      "sleekxmppfs",
      "sucks",
      "deebot_client"
    ],
    "requirements": [
      "py-sucks==0.9.10",
      "deebot-client==8.4.0"
    ],
    "is_built_in": true
  },
  "setup_times": {
    "null": {
      "setup": 1.870701089501381e-05
    },
    "01JC9TA5PP4HCVE3QDQMFYAQSK": {
      "wait_import_platforms": -1.4116013019811362,
      "wait_base_component": -0.0005606301128864288,
      "config_entry_setup": 6.744018283905461
    }
  },
  "data": {
    "config": {
      "created_at": "2024-11-10T01:16:46.678891+00:00",
      "data": {
        "username": "**REDACTED**",
        "password": "**REDACTED**",
        "country": "AU"
      },
      "discovery_keys": {},
      "disabled_by": null,
      "domain": "ecovacs",
      "entry_id": "01JC9TA5PP4HCVE3QDQMFYAQSK",
      "minor_version": 1,
      "modified_at": "2024-11-10T01:16:46.678898+00:00",
      "options": {},
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "user",
      "title": "**REDACTED**",
      "unique_id": null,
      "version": 1
    },
    "devices": [
      {
        "did": "**REDACTED**",
        "name": "**REDACTED**",
        "class": "x5d34r",
        "resource": "Kr4N",
        "company": "eco-ng",
        "bindTs": 1730590666207,
        "service": {
          "jmq": "jmq-ngiot-na.dc.ww.ecouser.net",
          "mqs": "api-ngiot.dc-na.ww.ecouser.net"
        },
        "deviceName": "DEEBOT OZMO T8 AIVI",
        "icon": "https://portal-ww.ecouser.net/api/pim/file/get/605053e7fc527c00087fda1e",
        "ota": true,
        "UILogicId": "DX_AIG",
        "materialNo": "110-1913-0101",
        "pid": "5de0d86ed88546000195239a",
        "product_category": "DEEBOT",
        "model": "DXAI_INTL",
        "updateInfo": {
          "needUpdate": false,
          "changeLog": ""
        },
        "nick": "O'Brien vac",
        "homeId": "**REDACTED**",
        "homeSort": 1,
        "status": 0,
        "offmap": true,
        "otaUpgrade": {}
      }
    ],
    "legacy_devices": []
  }
}

Example YAML snippet

NA

Anything in the logs that might be useful for us?

NA

Additional information

No response

craigmate avatar Nov 20 '24 23:11 craigmate

Hey there @mib1185, @edenhaus, @augar, mind taking a look at this issue as it has been labeled with an integration (ecovacs) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of ecovacs can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign ecovacs Removes the current integration label and assignees on the issue, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


ecovacs documentation ecovacs source (message by IssueLinks)

home-assistant[bot] avatar Nov 20 '24 23:11 home-assistant[bot]

For me (Deebot T30 Omni) the following sensors do not seem to update after cleaning ompleted:

  • Area cleaned
  • Cleaning duration

The following do update:

  • Map
  • Total area cleaned
  • Total cleaning duration
  • Total cleanings

Furthermore, I do not get the "Last job" events, which I'd guess is related.

kbjorklid avatar Nov 23 '24 18:11 kbjorklid

I did notice that as well. the map works fine and updates every second or two, but you are correct, some of the sensors which should update at the conclusion of a clean don't unless you do an integration re-load

craigmate avatar Nov 24 '24 03:11 craigmate

+1. I have a T30 Omni as well and sometimes every sensor just stops being updated until I reload the integration

Samywamy10 avatar Nov 24 '24 05:11 Samywamy10

Can you please enable debug logs and post them here when the error occurs the next time? My assumption is that either the connection gets stuck or the vacuum stops sending events after a certain time, and we need to resubscribe. Nevertheless, I need logs first to verify it.

edenhaus avatar Nov 25 '24 09:11 edenhaus

HI. Thanks for the update, I just did a test with the debug logs enabled, but of course it worked now. I only did a vacuum yesterday, so I might wait a couple of days and try it again,

craigmate avatar Nov 25 '24 10:11 craigmate

HI. Ok, so I have some logs, first my wife started the vacuum, and it seems to be ok, however it wasn't updating the map. So, I started debug, and did a reload of the integration. The map started updating, however some of the other sensors, (i.e areas cleaned cleaning duration) weren't updating (battery was) . That is the first logs i have, So I started debug again and reloaded, it and now some of the sensors are stuck on "unknown" (second logs)
ecovac.txt ecovac2.txt

Finally, I lost connect to it via the app as well as HA, so here is the final logs

ecovac3.txt

craigmate avatar Nov 26 '24 04:11 craigmate

Ok, having fun at work instead of working. my wife power cycled it, and it connected again in the app and HA, however it seems it would load the image for about 10 seconds, then stop. so here are the logs from that, its back in the doc charging now, so should be all for today.

Uploading ecovac4.txt…

craigmate avatar Nov 26 '24 04:11 craigmate

Can you confirm that your wifi is stable and the bot always has a stable connection at any position in your house/flat? The integration doesn't poll (except on the first load) and than relies on the events send by the bot

edenhaus avatar Nov 26 '24 09:11 edenhaus

I have the same issue. Mine is a X1 Omni. I loaded the integration a few days ago. Suddenly the map started flickering and later all the sensors was unavailable however the map still worked. Now nothing works and even the APP doesnt work.

Havent tried to reboot it yet

plaiddk avatar Nov 28 '24 15:11 plaiddk

Ok, SO I did a ping test for about 1 hour whilst the robot was running. The average ping time was 62ms and it lost 1.1% This was pinging from my laptop wirelessly to the BOT. The bot stayed in the app the whole time, didn't lose connection. But I did have to some reloading/readding of the integration.

craigmate avatar Nov 29 '24 01:11 craigmate

I can confirm I also have this exact issues on OZMO 950 series. Everything working fine except 'Area cleaned' and 'Cleaning duration' sensors are not updated after a cleaning job completes.

Reloading the integration immediately updates the sensors to the correct value.

Can confirm this behaviour only seemed to have started once I moved to the core integration and stopped using the old HACS integration. So my assumption is that my vacuum did not develop an issue reporting statistics at the same time and that it is instead an integration issue.

Nanganator avatar Dec 05 '24 09:12 Nanganator

For anyone needing a workaround for knowing the 'area cleaned' I made one by creating a counter helper which stores the 'previous' total area cleaned and then I subtracts that from the new total area cleaned to know what the delta was and add's that delta to other counter helpers to track the daily & running total. I use this to know when to top up water, empty dust and to avoid vacuum jobs running multiples times a day if they've already run.

Here is what my action in the automation looks like:

action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - totalcleaned
        sequence:
          - data:
              value: >-
                {{ states( 'counter.vacuum1_cleaned_today_counter')|int +
                (states('sensor.vacuum1_total_area_cleaned')|int -
                states('counter.vacuum1_previous_total_cleaned')|int)}}
            target:
              entity_id: counter.vacuum1_cleaned_today_counter
            action: counter.set_value
          - data:
              value: "{{ states('sensor.vacuum1_total_area_cleaned')|int}}"
            target:
              entity_id: counter.vacuum1_previous_total_cleaned
            action: counter.set_value

Nanganator avatar Dec 05 '24 14:12 Nanganator

I can confirm I also have this exact issues on OZMO 950 series. Everything working fine except 'Area cleaned' and 'Cleaning duration' sensors are not updated after a cleaning job completes.

Reloading the integration immediately updates the sensors to the correct value.

I have a DEEBOT N8 PRO CARE (s1f8g7) and a DEEBOT OZMO 920 Series (vi829v), both with the same issues. It used to work before, but I can't say when they stopped. I have temporarily added a reload of the integration when the status is reported to "docked" after "cleaning". It seems to me that StatsEvent is only updated when the integration is loaded. I could provide logs, but they are like what's reported here. Thanks for the hard work with this integration: much appreciated!

dbochicchio avatar Jan 02 '25 10:01 dbochicchio

portainer---Container---homeassistant(console)---/bin/bash(connect)--- cd /usr/local/lib/python3.13/site-packages/deebot_client/hardware/deebot 3.13 maybe different ln -svfT ucn2xe.py dj8zpr.py dj8zpr is old ucn2xe is mapping dev deebot t9 https://github.com/DeebotUniverse/client.py/tree/dev/deebot_client/hardware/deebot

yuhuanfan avatar Feb 06 '25 05:02 yuhuanfan

Ecovacs has changed the api again... It looks like they don't send out this information anymore. Will need to do some further tests

edenhaus avatar Feb 07 '25 18:02 edenhaus

are there any updates to this issue? Have two devices. The t20 omni works perfect. The map e.g. is always up to date. The t10 have the update issue. Found out that when I open the Ecovacs native App the Update of the map in HA works again.

🧐

PiperNigrum avatar Feb 10 '25 20:02 PiperNigrum

I have similar issues on my T30 Omni - It seems to be getting the wrong room ID's in attributed. The only errors I see in my logs are:

Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:112
First occurred: 4:20:17 PM (4 occurrences)
Last logged: 4:45:31 PM

Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/deebot_client/map.py", line 141, in on_map_trace
    self._map_data.add_trace_points(event.data)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/deebot_client/map.py", line 223, in add_trace_points
    self._data.add_trace_points(value)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
ValueError: Invalid 7z compressed data

Even after a restart of the vac or reloading the device I get the same issue.

tsposato avatar May 08 '25 12:05 tsposato

@tsposato Please open a new issue for new bug and provide debug logs and co. There bot is sending invalid data and we need to verify why

edenhaus avatar May 12 '25 07:05 edenhaus

Same om mower. Batterie etc works. I've been at 17 mowing runs since this morning, but in Home Assistant it still shows 16.

Image Image

Messa1 avatar Jun 09 '25 11:06 Messa1

Hi everyone,

I can confirm I am also experiencing this issue on the latest Home Assistant version with my Goat G1-800.

The symptoms are exactly the same as described in this thread:

  • The device status does not update automatically when it starts a task on its own schedule. It gets stuck on docked or paused.
  • The status only updates correctly if I send a command (e.g., start) directly from the Home Assistant UI.

This seems to be a long-standing regression of the problem originally reported in the closed issue #115162. Let me know if I can provide any debug logs to help solve this.

walczak71 avatar Aug 13 '25 10:08 walczak71

Please provide debug logs when the issue occurs. I need to see if the bot is sending an update.

edenhaus avatar Aug 14 '25 09:08 edenhaus

Im kinda new to HA, so im not sure if this is what are you need :)

home-assistant_2025-08-14T13-34-25.287Z.txt

walczak71 avatar Aug 14 '25 13:08 walczak71

You need to go to Ecovacs config page and enable there debug logs first. Than do all steps to reproduce the issue. Afterwards go back to the Ecovacs config page, by clicking stop debug logs it will automatically download the logs

edenhaus avatar Aug 21 '25 08:08 edenhaus

Ok, done. If this is important im using older firmware version, not the latest because of few errors while mowing so I've downgraded firmware. Now I've got 1.36.160.

home-assistant_ecovacs_2025-08-21T10-31-36.735Z.txt

walczak71 avatar Aug 21 '25 10:08 walczak71

I did not even know that you can downgrade to an older firmware. Is that directly possible via the app?

edenhaus avatar Aug 21 '25 11:08 edenhaus

Unfortunately not. I did this with seller, he found out some way how to do this via usb A connected do mower. Im don't know how he did this because he said - quote " I've spent too much money on this to share this with you" so I'm relaying on him if it comes to downgrade fw again :)

walczak71 avatar Aug 21 '25 11:08 walczak71

I'm having the same issue with my GOAT G1-1600. The diagnostic info (including battery %) update just fine, but the activity state does not update anymore after a while. I have not yet found a consistent cause but it seems to resolve with reloading the integration (at least for a while).

wstoettinger avatar Oct 19 '25 13:10 wstoettinger