CodeFoodPixels / robovac

Add a Eufy RoboVac easily to Home Assistant
Other
110 stars 26 forks source link

Adding L60 SES support (UNTESTED) #66

Closed jbleyaert closed 3 months ago

jbleyaert commented 3 months ago

I tried adding as much as I could understand, some of it is probably incorrect. It'd be helpful if you could provide a json response of an already implemented vacuum. It seems like the L60 uses a lot of different codes.

Schema response for L60: ```json [ { "attr": 0, "canTrigger": true, "code": "proto", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 150, "mode": "rw", "name": "协议", "property": { "type": "string", "maxlen": 255 }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "power", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 151, "mode": "rw", "name": "电源开关", "property": { "type": "bool" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "mode_ctrl", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 152, "mode": "rw", "name": "模式控制", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "work_status", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 153, "mode": "rw", "name": "工作状态", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "clean_params", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 154, "mode": "rw", "name": "清洁参数", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "remote_ctrl", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 155, "mode": "rw", "name": "遥控方向", "property": { "range": [ "Brake", "Forward", "Back", "Left", "Right" ], "type": "enum" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "pause_job", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 156, "mode": "rw", "name": "断点续扫", "property": { "type": "bool" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "dnd", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 157, "mode": "rw", "name": "勿扰", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "suction_level", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 158, "mode": "rw", "name": "吸力档位", "property": { "range": [ "Quiet", "Standard", "Turbo", "Max" ], "type": "enum" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "boost_iq", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 159, "mode": "rw", "name": "BoostIQ", "property": { "type": "bool" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "calling_robot", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 160, "mode": "rw", "name": "寻找机器人", "property": { "type": "bool" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "volume", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 161, "mode": "rw", "name": "音量", "property": { "unit": "", "min": 0, "max": 100, "scale": 0, "step": 1, "type": "value" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "user_language", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 162, "mode": "rw", "name": "语言管理", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "bat_level", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 163, "mode": "ro", "name": "电池电量", "property": { "unit": "", "min": 0, "max": 100, "scale": 0, "step": 1, "type": "value" }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "timing", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 164, "mode": "rw", "name": "定时", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "reserved2", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 165, "mode": "rw", "name": "预留2", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "log_debug", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 166, "mode": "rw", "name": "调试设置", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "clean_statistics", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 167, "mode": "rw", "name": "清洁统计", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "consumables", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 168, "mode": "rw", "name": "耗材", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "app_dev_info", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 169, "mode": "rw", "name": "App和设备", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "map_edit", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 170, "mode": "rw", "name": "地图编辑", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "multi_maps_ctrl", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 171, "mode": "rw", "name": "多地图控制", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "multi_maps_mng", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 172, "mode": "rw", "name": "多地图管理", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "station", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 173, "mode": "rw", "name": "基站", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "media_manager", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 174, "mode": "rw", "name": "媒体管理", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "reserved3", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 175, "mode": "rw", "name": "预留3", "property": { "type": "string", "maxlen": 255 }, "type": "obj" }, { "attr": 0, "canTrigger": true, "code": "unisetting", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 176, "mode": "rw", "name": "公共设置", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "error_warning", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 177, "mode": "rw", "name": "故障提醒", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "toast", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 178, "mode": "rw", "name": "提示", "type": "raw" }, { "attr": 0, "canTrigger": true, "code": "analysis", "defaultRecommend": false, "editPermission": false, "executable": true, "extContent": "", "id": 179, "mode": "rw", "name": "数据分析", "type": "raw" } ] ```
CodeFoodPixels commented 3 months ago

This is the output from the 15C max (T2128), which is the only one I can say is working at the moment:

[
  {
    "attr": 0,
    "canTrigger": true,
    "code": "power",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "iconname": "icon-dp_power2",
    "id": 1,
    "mode": "rw",
    "name": "电源开关",
    "property": {
      "type": "bool"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "power_go",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "iconname": "icon-dp_power",
    "id": 2,
    "mode": "rw",
    "name": "清扫开关",
    "property": {
      "type": "bool"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "direction",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "iconname": "icon-dp_mode",
    "id": 3,
    "mode": "rw",
    "name": "清扫方向",
    "property": {
      "range": [
        "forward",
        "back",
        "left",
        "right"
      ],
      "type": "enum"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "mode",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "iconname": "icon-dp_dust",
    "id": 5,
    "mode": "rw",
    "name": "清扫模式",
    "property": {
      "range": [
        "auto",
        "SmallRoom",
        "Spot",
        "Edge",
        "Nosweep"
      ],
      "type": "enum"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "status",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "iconname": "icon-dp_direction",
    "id": 15,
    "mode": "ro",
    "name": "工作状态",
    "property": {
      "range": [
        "Running",
        "standby",
        "Sleeping",
        "Charging",
        "completed",
        "Recharge"
      ],
      "type": "enum"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "FMR",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "id": 101,
    "mode": "rw",
    "name": "自动回充",
    "property": {
      "type": "bool"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "Cleaning_intensity",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "id": 102,
    "mode": "rw",
    "name": "清扫强度",
    "property": {
      "range": [
        "Standard",
        "Boost_IQ",
        "Max",
        "No_suction"
      ],
      "type": "enum"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "Looking_weeper",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "id": 103,
    "mode": "rw",
    "name": "寻找扫地机",
    "property": {
      "type": "bool"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "electricity_left1",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "id": 104,
    "mode": "ro",
    "name": "剩余电量",
    "property": {
      "unit": "",
      "min": 0,
      "max": 100,
      "scale": 0,
      "step": 1,
      "type": "value"
    },
    "type": "obj"
  },
  {
    "attr": 0,
    "canTrigger": true,
    "code": "Fault_report",
    "defaultRecommend": false,
    "editPermission": false,
    "executable": true,
    "extContent": "",
    "id": 106,
    "mode": "ro",
    "name": "故障上报",
    "property": {
      "range": [
        "no_error",
        "Stuck_5_min",
        "Crash_bar_stuck",
        "sensor_dirty",
        "N_enough_pow",
        "Wheel_stuck",
        "S_brush_stuck",
        "Fan_stuck",
        "R_brush_stuck"
      ],
      "type": "enum"
    },
    "type": "obj"
  }
]
CodeFoodPixels commented 3 months ago

Happy to merge this in and it'll generate an alpha build that you could test via HACS @jbleyaert?

jbleyaert commented 3 months ago

Happy to merge this in and it'll generate an alpha build that you could test via HACS @jbleyaert?

Sure.

CodeFoodPixels commented 3 months ago

This has been merged and released

jbleyaert commented 3 months ago

I tried all day, didn't get it to work. The only thing that works is the battery level and the locate button. I also noticed I made a mistake, its T2277 not T2267.

Don't really know what to do know. Any hints on how to debug this? @CodeFoodPixels