BnMcG / PyRobovac

Python library for controlling the Eufy RoboVac 11c
Apache License 2.0
27 stars 2 forks source link

Local code missing from API response #6

Open dhanani94 opened 5 years ago

dhanani94 commented 5 years ago

When pinging the API (home-api.eufylife.com/v1/device/list/devices-and-groups) the response back contains an empty local_code field. This might be because this is a 15C and not 11C device.

API Response:

  "res_code": 1,
  "message": "",
  "items": [
    {
      "item_type": 0,
      "device": {
        "id": "XXXXXXXXXXXXXXXXXXXX",
        "sn": "",
        "name": "RoboVac 15C",
        "alias_name": "Roborto",
        "bluetooth": null,
        "wifi": {
          "mac": "XX:XX:XX:XX:XX:XX",
          "wifi_ssid": "XXXXX",
          "lan_ip_addr": "65.9X.XXX.XXX"
        },
        "product": {
          "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
          "name": "RoboVac 15C",
          "default_name": "RoboVac",
          "icon_url": "https://d1teb1w17vl5yo.cloudfront.net/eufyhome/products/T2120_addProduct.png",
          "category": "Home",
          "appliance": "Cleaning",
          "connect_type": 1,
          "pictures": [
            {
              "code": "addProductIcon",
              "url": "https://d1teb1w17vl5yo.cloudfront.net/eufyhome/products/T2120_addProduct.png",
              "description": ""
            },
            {
              "code": "selectDeviceImage",
              "url": "https://d1teb1w17vl5yo.cloudfront.net/eufyhome/products/T2120_selectProduct.png",
              "description": ""
            },
            {
              "code": "feedbackImage",
              "url": "https://d1teb1w17vl5yo.cloudfront.net/eufyhome/products/T2120_feedback.png",
              "description": ""
            }
          ],
          "description": "T2120 RoboVac 15C, connected via EufyHome",
          "product_code": "T2120",
          "wifi_ssid_prefix": "eufy RoboVac 15C",
          "wifi_ssid_prefix_full": "eufy RoboVac 15C-",
          "index": 7,
          "create_time": 1493114110,
          "update_time": 1528774126
        },
        "user_id": "XXXXXX",
        "owner_info": null,
        "home_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "home_name": "",
        "room_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "room_name": "Default Room",
        "connect_type": 1,
        "grant_by": 0,
        "software_version": "1.1.1",
        "index": 0,
        "device_key": "",
        "create_time": 1566149922,
        "update_time": 1566149936,
        "hardware_version": "",
        "local_code": "",
        "setting": {
          "id": "",
          "device_id": "",
          "is_default": true
        }
      },
      "group": null
    }
  ],
  "global_config": {
    "enabled_multi_color_modes": [
      0,
      1,
      2,
      3
    ]
  }
}

Note: all the sensitive characters were replaced with the X, no characters were deleted/removed

nanowireUK commented 4 years ago

Just to say the RoboVac 30C is exactly the same. Missing local_code and lan_ip_addr set to my WAN IP.

Looking at a different issue on the python_lakeside project it seems that Eufy have moved new products to a cloud endpoint rather than exposing local LAN APIs.

Would have thought the API would be exposing the methods to control the device but not checked yet.

nanowireUK commented 4 years ago

Have just used mitmproxy to check and it might be a dead-end going directly via the Eufy API. I'm pretty sure they are using the Tuya platform for connectvity. Seeing quite a few calls to their APIs coming from my phone that reference eufy (although annoyingly none in direct response to commands being triggered).

Every time I trigger a command on the app it does a POST to https://log.eufylife.com/push_log_es but as the end point suggests I think this is just for their logging. I get the device ID as a 200 response back if I replay the POST but nothing happens on the device.

PS they have a new device endpoint https://api.eufylife.com/v1/device/v2 which their app uses.

nanowireUK commented 4 years ago

Last comment. Not the first to see it's using Tuya and there's a project getting it to work here

Samvid95 commented 4 years ago

So were you able to connect via the Tuya project? @nanowireUK