rospogrigio / localtuya

local handling for Tuya devices
GNU General Public License v3.0
2.84k stars 546 forks source link

Vacuum: Add support for status dp #1234

Open TheBinaryLoop opened 1 year ago

TheBinaryLoop commented 1 year ago

The problem

I tried to set up the Eufy RoboVac G10 Hybrid today and got the controls working. Only thing not working is the state of the vacuum. Could you please add the possibility to add a dp for the current mode (not cleaning mode). Also one for a bool for returning to the base would be nice.

Environment

Steps to reproduce

No issue just a missing feature

DP dump

{ '2': true, '3': 'forward', '5': 'auto', '15': 'Recharge', '102': 'Standard', '103': false, '104': 54, '106': 0, '109': 17, '110': 0, '111': 1, '112': 307, '113': 307, '114': 307, '122': 'Continue', '127': 307, '131': false, '135': true, '140': '000100000200099' }

Provide Home Assistant traceback/logs

N/A If needed I can provide that

Additional information

N/A

patrik-malina commented 1 year ago

I had trouble to find what DP ia for what on mine vacuum. You need to create vacuum entity with status mode DP. I assume its for you DP15. PowerGo would be DP2. Also you need to find what DP15 is set when vacuum is docking. Also find values for charging, charged, docking and standby. Write them to corresponding GUI flow.

TheBinaryLoop commented 1 year ago

How would I do that? I don't see a field for the status do in the home assistant gui


From: Patrik Malina @.> Sent: Friday, January 13, 2023 6:03:50 PM To: rospogrigio/localtuya @.> Cc: Lukas Eßmann @.>; Author @.> Subject: Re: [rospogrigio/localtuya] Vacuum: Add support for status dp (Issue #1234)

I had trouble to find what DP ia for what on mine vacuum. You need to create vacuum entity with status mode DP. I assume its for you DP15. PowerGo would be DP2. Also you need to find what DP15 is set when vacuum is docking. Also find values for charging, charged, docking and standby. Write them to corresponding GUI flow.

— Reply to this email directly, view it on GitHubhttps://github.com/rospogrigio/localtuya/issues/1234#issuecomment-1382141561, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADGS77DWJHAVGLBCJPM5AVDWSGDHNANCNFSM6AAAAAATZ2PXRE. You are receiving this because you authored the thread.Message ID: @.***>

patrik-malina commented 1 year ago

Screenshot_20230113_202136_Home Assistant This first ID is for MASTER vacuum ID

patrik-malina commented 1 year ago

This is mine settings Screenshot_20230113_202020_Home Assistant Screenshot_20230113_202029_Home Assistant Screenshot_20230113_202038_Home Assistant

patrik-malina commented 1 year ago

As you can see, mine master id is DP5

TheBinaryLoop commented 1 year ago

You also don't have any do that represents the current status of the vacuum in your config. Or am I missing something?


From: Patrik Malina @.> Sent: Friday, January 13, 2023 8:26:50 PM To: rospogrigio/localtuya @.> Cc: Lukas Eßmann @.>; Author @.> Subject: Re: [rospogrigio/localtuya] Vacuum: Add support for status dp (Issue #1234)

This is mine settings [Screenshot_20230113_202020_Home Assistant]https://user-images.githubusercontent.com/73561855/212402176-820ab449-2ba3-4b71-98d4-d82a15bdd54a.jpg [Screenshot_20230113_202029_Home Assistant]https://user-images.githubusercontent.com/73561855/212402205-08083e08-3588-480e-b6f4-c4eb417b5935.jpg [Screenshot_20230113_202038_Home Assistant]https://user-images.githubusercontent.com/73561855/212402288-5da6cfea-a813-44d9-8427-84b56dbb6614.jpg

— Reply to this email directly, view it on GitHubhttps://github.com/rospogrigio/localtuya/issues/1234#issuecomment-1382292591, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADGS77DCMA74373SLITURSTWSGT7VANCNFSM6AAAAAATZ2PXRE. You are receiving this because you authored the thread.Message ID: @.***>

patrik-malina commented 1 year ago

Its DP5 for me, and as I said I think its ID15. You select that ID in first ID selection.

TheBinaryLoop commented 1 year ago

Not working for me. The device is still being displayed as "Cleaning" even though it is docked and charging


From: Patrik Malina @.> Sent: Friday, January 13, 2023 8:38:28 PM To: rospogrigio/localtuya @.> Cc: Lukas Eßmann @.>; Author @.> Subject: Re: [rospogrigio/localtuya] Vacuum: Add support for status dp (Issue #1234)

Its DP5 for me, and as I said I think its ID15. You select that ID in first ID selection.

— Reply to this email directly, view it on GitHubhttps://github.com/rospogrigio/localtuya/issues/1234#issuecomment-1382309912, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADGS77FJQVSWACZZFBW77N3WSGVLJANCNFSM6AAAAAATZ2PXRE. You are receiving this because you authored the thread.Message ID: @.***>

patrik-malina commented 1 year ago

Write YOUR status in Docked status field. Need to ged DPs info on docked and charging...

TheBinaryLoop commented 1 year ago

Going to try that


From: Patrik Malina @.> Sent: Friday, January 13, 2023 8:55:37 PM To: rospogrigio/localtuya @.> Cc: Lukas Eßmann @.>; Author @.> Subject: Re: [rospogrigio/localtuya] Vacuum: Add support for status dp (Issue #1234)

Write YOUR status in Docked status field. Need to ged DPs info on docked and charging...

— Reply to this email directly, view it on GitHubhttps://github.com/rospogrigio/localtuya/issues/1234#issuecomment-1382324570, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADGS77DZE6P62GAW7EJES7LWSGXLTANCNFSM6AAAAAATZ2PXRE. You are receiving this because you authored the thread.Message ID: @.***>

TheBinaryLoop commented 1 year ago

That worked. Thanks a lot. Do you also know how I can get the "Return to Dock" feature to work if the trigger is a boolean DP (DP101 for Eufy)?

patrik-malina commented 1 year ago

What would I do is read value DP15 when vacuum is docking. Then write that Return home mode field. If that is not working, then add another entity to vacuum as switch on DP101

MelleD commented 1 year ago

@TheBinaryLoop did you get it to work? I also have a eufy hybrid g10, did you have to make any special adjustments for the control or did everything work after the correct DP setting?

Can you post your DP assignment?

Thanks

TheBinaryLoop commented 1 year ago

@MelleD I didn't solve it via the mapping. I just rewrote the lovelace card I used to trigger the vacuum, to call a script I wrote in Home Assistant which in turn calls the LocalTuya set_dp service with the dp 101 and the value True for the id of my robot vacuum. Here is my script: image

TheBinaryLoop commented 1 year ago

@MelleD If you happen to solve it via the DP Assignment, it would be cool if you could share it with me :)

MelleD commented 1 year ago

@TheBinaryLoop thanks for sharing and the quick answer. I will try it, currently iam not so familar with this whole DP assignment see my other bug ticket for antoher tuya vaccum (https://github.com/rospogrigio/localtuya/issues/1334):

Do you have an hint for me? Is there a overview or a description of these DPs? Maybe on the Tuya IOT platform? Where did you know that you need this dp 101?

Here is my current solution for the G10. https://community.home-assistant.io/t/eufy-robovac-g10-hybrid/547335/2 But i would like to try this integration looks more straight forward

MelleD commented 1 year ago

@TheBinaryLoop do you know the DPs for cleaning time and area? In the eufy App i see this information, but see no DPs for that.

Also for this side brush etc.

TheBinaryLoop commented 1 year ago

@MelleD I reverse engineered the DPS when I first got the RoboVac but i didn't remember seeing DPS for time or area. I also don't have the Textfile containing the reverse engineered DPs anymore. :/

MelleD commented 1 year ago

@TheBinaryLoop Ok ok, maybe the endpoint return more about the data points. Stop is not working used paused for the stop command, locate is not working and think same issue with the return to docking station. Think you way is good because this is not cleaning mode. In my other vacuum this is a cleaning mode then it works.

MelleD commented 1 year ago

@TheBinaryLoop ok have it the endpoint is "Get device specification attribute"

{
  "result": {
    "category": "sd",
    "functions": [
      {
        "code": "power",
        "dp_id": 1,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "power_go",
        "dp_id": 2,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "direction_control",
        "dp_id": 3,
        "type": "Enum",
        "values": "{\"range\":[\"forward\",\"backward\",\"turn_left\",\"turn_right\"]}"
      },
      {
        "code": "mode",
        "dp_id": 5,
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"smart\",\"wall_follow\",\"single\",\"point\"]}"
      },
      {
        "code": "switch_charge",
        "dp_id": 101,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "seek",
        "dp_id": 103,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "volume_set",
        "dp_id": 111,
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
      }
    ],
    "status": [
      {
        "code": "power",
        "dp_id": 1,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "power_go",
        "dp_id": 2,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "direction_control",
        "dp_id": 3,
        "type": "Enum",
        "values": "{\"range\":[\"forward\",\"backward\",\"turn_left\",\"turn_right\"]}"
      },
      {
        "code": "mode",
        "dp_id": 5,
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"smart\",\"wall_follow\",\"single\",\"point\"]}"
      },
      {
        "code": "status",
        "dp_id": 15,
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"goto_charge\",\"charging\",\"charge_done\",\"cleaning\",\"sleep\"]}"
      },
      {
        "code": "switch_charge",
        "dp_id": 101,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "seek",
        "dp_id": 103,
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "electricity_left",
        "dp_id": 104,
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
      },
      {
        "code": "clean_time",
        "dp_id": 109,
        "type": "Integer",
        "values": "{\"unit\":\"min\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "clean_area",
        "dp_id": 110,
        "type": "Integer",
        "values": "{\"unit\":\"㎡\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "volume_set",
        "dp_id": 111,
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
      },
      {
        "code": "edge_brush",
        "dp_id": 112,
        "type": "Integer",
        "values": "{\"unit\":\"\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "roll_brush",
        "dp_id": 113,
        "type": "Integer",
        "values": "{\"unit\":\"\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "filter",
        "dp_id": 114,
        "type": "Integer",
        "values": "{\"unit\":\"\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "total_clean_time",
        "dp_id": 119,
        "type": "Integer",
        "values": "{\"unit\":\"\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      },
      {
        "code": "total_clean_area",
        "dp_id": 120,
        "type": "Integer",
        "values": "{\"unit\":\"㎡\",\"min\":0,\"max\":10000000,\"scale\":0,\"step\":1}"
      }
    ]
  },
  "success": true,
  "t": 1679137363165,
  "tid": "680dfb8bc57c11edacf08ac5d669b858"
}
MelleD commented 1 year ago

@TheBinaryLoop interesting i get dp 109,110.

but not for the clean_area (119) and clean_time (120). Also no chance to get the rest edge_brush etc.