Skip to content

[X10] Development guidance for adding new devices #275

@scottgrobinson

Description

@scottgrobinson

I'm looking to try and add support for the Eufy X10 so I've started down the rabbit hole. I can see what needs doing, however, I can't yet get to the stage of mapping the codes as my device isn't listed.

I get the error

2025-12-14 12:56:06.479 DEBUG (SyncWorker_0) [custom_components.robovac.config_flow] Skipping vacuum AMP96Z0E27400392: found on Eufy but not on Tuya. Eufy details:

Adding a bit more debugging we get

2025-12-14 12:56:06.472 ERROR (SyncWorker_0) [custom_components.robovac.config_flow] Failed to get Tuya device for Eufy vacuum AMP96Z0E27400392: "No 'result' key in the response - the entire response is {'t': 1765716966410, 'success': False, 'errorCode': 'PERMISSION_DENIED', 'status': 'error', 'errorMsg': 'No access'}"
Traceback (most recent call last):
  File "/config/custom_components/robovac/config_flow.py", line 167, in get_eufy_vacuums
    device = tuya_client.get_device(item["id"])
  File "/config/custom_components/robovac/tuyawebapi.py", line 448, in get_device
    return self._request(
           ~~~~~~~~~~~~~^
        action="tuya.m.device.get", version="1.0", data={"devId": devId}
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/config/custom_components/robovac/tuyawebapi.py", line 289, in _request
    raise KeyError(
        f"No 'result' key in the response - the entire response is {response_data}"
    )
KeyError: "No 'result' key in the response - the entire response is {'t': 1765716966410, 'success': False, 'errorCode': 'PERMISSION_DENIED', 'status': 'error', 'errorMsg': 'No access'}"

I tried running tuya.m.device.my.list which returns no devices...

I've definetly got a Eufy device!

2025-12-14 12:56:06.032 DEBUG (SyncWorker_0) [custom_components.robovac.config_flow] Determined region: EU, country code: 44, time zone: Europe/London
2025-12-14 12:56:06.032 DEBUG (SyncWorker_0) [custom_components.robovac.config_flow] Tuya session info: <custom_components.robovac.tuyawebapi.TuyaAPISession object at 0x7b864558cd70>
2025-12-14 12:56:06.032 DEBUG (SyncWorker_0) [custom_components.robovac.config_flow] Eufy device found: {
  "id": "XXX",
  "sn": "",
  "name": "X10 Pro Omni",
  "alias_name": "Gertrude II",
  "bluetooth": null,
  "wifi": {
    "mac": "4C:60:BA:52:16:62",
    "wifi_ssid": "",
    "lan_ip_addr": ""
  },
  "product": {
    "id": "XXX",
    "name": "X10 Pro Omni",
    "region": "[{\"regions\":[\"ALL\"],\"date\":\"2022-09-01 20:22:49\"}]",
    "default_name": "RoboVac",
    "icon_url": "https://d3pkbgk01oouhl.cloudfront.net/eufyhome/products/T2182_addProduct.png",
    "category": "Home",
    "appliance": "Cleaning",
    "connect_type": 2,
    "description": "T2182 eufy RoboVac L80, connected via EufyHome",
    "product_code": "T2351",
    "wifi_ssid_prefix": "eufy Clean X10 Pro Omni",
    "wifi_ssid_prefix_full": "eufy Clean X10 Pro Omni-",
    "index": 2,
    "create_time": 1640585895,
    "update_time": 1755596567,
    "is_show": false,
    "tuya_pid": "eqjjicnai45fqzom",
    "app_ble_ssid_prefix": "eufy Clean X10 Pro Omni-",
    "device_ble_ssid_prefix": "eufy Clean X10 Omni-",
    "wifi_ssid_prefix_list": [
      "eufy Clean X10 Omni-",
      "eufy Clean X10 Pro Omni-",
      "eufy X10A-"
    ],
    "device_ble_ssid_prefix_list": [
      "eufy Clean X10 Omni-",
      "eufy Clean X10 Pro Omni-",
      "eufy X10A-"
    ],
    "is_additional": false,
    "is_enable_whitelist": false
  },
  "user_id": "4482408",
  "owner_info": null,
  "home_id": "XXX",
  "home_name": "",
  "room_id": "XXX",
  "room_name": "Bathroom",
  "connect_type": 2,
  "grant_by": 0,
  "software_version": "",
  "index": 0,
  "device_key": "",
  "create_time": 1737046030,
  "update_time": 1737061296,
  "hardware_version": "",
  "scale_type": "",
  "member_type": 2,
  "user_center_user_id": "XXX",
  "is_not_work": false,
  "local_code": "",
  "needUpdate": false,
  "setting": {
    "id": "",
    "device_id": "",
    "is_default": true
  },
  "update_packages": [],
  "update_version": {
    "mcu": "",
    "wifi": "",
    "ble": "",
    "res": ""
  },
  "current_version": {
    "mcu": "",
    "wifi": "",
    "ble": "",
    "res": ""
  }
}

What next steps can you recomend for debugging this? I'm not too familiar with the Tuya side of things hence reaching out as I imagine you may have spent a little more time there than I have...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions