home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.98k stars 31.02k forks source link

DEEBOT NEO 2.0 (eyfj07) Not working in Ecovacs #125447

Open Kanga-Who opened 2 months ago

Kanga-Who commented 2 months ago

The problem

Newly purchased DEEBOT NEO 2.0 (eyfj07) in AU, not controllable in HA via the Ecovacs Integrations

What version of Home Assistant Core has the issue?

2024.8.3

What was the last working version of Home Assistant Core?

No response

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

AttributeError: 'NoneType' object has no attribute 'state'
2024-09-07 14:47:35.528 WARNING (MainThread) [deebot_client.message] Could not parse getStats: {'code': 0, 'data': None, 'msg': 'ok'}
2024-09-07 14:47:35.529 WARNING (MainThread) [deebot_client.message] Could not parse getStats: {'body': {'code': 0, 'data': None, 'msg': 'ok'}, 'header': {'fwVer': '10.0.6', 'm': 'response', 'ts': 1725684454, 'tzm': 480, 'ver': '0.0.9'}}
2024-09-07 14:47:35.529 WARNING (MainThread) [deebot_client.command] Could not parse getStats: {'ret': 'ok', 'resp': {'body': {'code': 0, 'data': None, 'msg': 'ok'}, 'header': {'fwVer': '10.0.6', 'm': 'response', 'ts': 1725684454, 'tzm': 480, 'ver': '0.0.9'}}, 'id': 'wy3Q', 'payloadType': 'j'}
2024-09-07 14:47:35.912 WARNING (MainThread) [deebot_client.message] Could not parse getChargeState: None
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/deebot_client/message.py", line 191, in __handle_body_data
    if response.state == HandlingState.ANALYSE:
       ^^^^^^^^^^^^^^
  "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.3.0"
    ],
    "is_built_in": true
  },
  "setup_times": {
    "null": {
      "setup": 4.188506864011288e-05
    },
    "01J75CH3V1Y1GJ22CP1FGCWBGN": {
      "wait_import_platforms": -0.032025085063651204,
      "wait_base_component": -0.0005921220872551203,
      "config_entry_setup": 4.403451323974878
    }
  },
  "data": {
    "config": {
      "created_at": "2024-09-07T05:10:30.733795+00:00",
      "data": {
        "username": "**REDACTED**",
        "password": "**REDACTED**",
        "country": "AU"
      },
      "disabled_by": null,
      "domain": "ecovacs",
      "entry_id": "01J75E852DXFRXRMH5BHNFBG6Y",
      "minor_version": 1,
      "modified_at": "2024-09-07T05:10:30.733802+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": "eyfj07",
        "resource": "NwqXQLmb",
        "company": "eco-ng",
        "bindTs": 1725683868589,
        "service": {
          "jmq": "jmq-ngiot-na.dc.ww.ecouser.net",
          "mqs": "api-ngiot.dc-na.ww.ecouser.net"
        },
        "deviceName": "DEEBOT NEO 2.0",
        "icon": "https://portal-ww.ecouser.net/api/pim/file/get/659bbcce900d8c43b81f610f",
        "ota": false,
        "UILogicId": "y30_ww_h_y30h5",
        "materialNo": "722-0001-4100",
        "pid": "65e674b0a16bb4907c9e8029",
        "product_category": "DEEBOT",
        "model": "CARTESIAN-BLACK-INT-STANDARD",
        "updateInfo": {
          "needUpdate": false,
          "changeLog": ""
        },
        "nick": "deebot",
        "homeId": "**REDACTED**",
        "homeSort": 1,
        "status": 1,
        "offmap": true,
        "otaUpgrade": {}
      }
    ],
    "legacy_devices": []
  }
}

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

home-assistant[bot] commented 2 months ago

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)

thomotron commented 2 months ago

This looks like it's the same issue as #120557. There simply isn't any data being returned by Ecovacs' API.

I've recently picked one up as well so this is a bit of a disappointment.

Kanga-Who commented 2 months ago

I've submitted a ticket to Ecovacs AU asking for API info to support it.

Being the second version of the Neo, perhaps the existing Neo config would work with the new model number added?

thomotron commented 2 months ago

I've tried with the existing Neo config today with no luck. I'm in the process of pulling the app apart to see how the Neo's process works. From my brief dive it seems that the Neo 2.0, Neo 2.0 Plus, Y1, Y1 Plus, etc. are all using some different API endpoint. It might be related to some recent troubles with the X2?

I'll continue digging over the coming days and report back if I find anything useful. If it's enough to go on, I might put either an issue or a PR together in the deebot-client repo (no promises though!)

edenhaus commented 2 months ago

@thomotron If you have enough data, we can of course extend the lib to supports these models :)

Kanga-Who commented 2 months ago

After a number of emails back and forth with Ecovacs AU support, they will not provide any API information, unfortunately.

madchuska commented 1 month ago

@edenhaus I also have the Neo 2.0 and have taken a look with mitmproxy. Happy to share some data if it will help, is there anything in particular you require?

nmcdaines commented 3 weeks ago

I'm experiencing the same issues as well for the Deebot NEO 2.0 and would love to get it working with homeassistant. Wondering if anyone has had any luck with this as yet? Otherwise I'd be happy to have a go at fixing this integration but would appreciate some pointers for getting started 🙏

thomotron commented 3 weeks ago

Sorry for the silence here, I was overseas for a bit but I'm back on deck now.

So far I haven't managed to do anything useful with the API after MITMing it. It looks like they sign/sum their requests. My next step was going to be poking into the existing lib to see how it handles it and hopefully use it as a jig to play around with this other endpoint that they seem to be using.