robovac
robovac copied to clipboard
Support for L60 SE
The unit is detected, but has no entities except for battery, which is "unavailable". Please add support for the L60 SE.
I second the support for the L60 SES!
yes, please!
I was looking into this, seems the TUYA_CODES are incorrect for this robovac. Yet to firgure out any of the codes, except for battery life, which is 163. Is there any documentation about these codes available?
For reference, this is a response when the device is doing nothing: {'151': True, '156': True, '158': 'Turbo', '159': aTrue, '160': False, '161': 41, '163': 99}
,
Where do we plug these in? Happy to test and feedback.
Depends if you have main branch or better-dps branch. For main branch they are at the top of the 'vacuum' file, if I am not mistaken (currently on the other branch). On better-dps branch they are at the specific file for your vacuum. In our case this is T2278 (or at least for me, I have the hybrid, not sure if it's different but otherwise I expect T2277).
In both cases, before it will even load, you need to add your vacuum. In the better-dps branch you copy the specific model file and add it to the list of vacs in init. In the main you can check the robovac file and add it to the list of 'L' models.
If you are on better-dps branch, also make sure to make a comment for extra features (as they crash currently, possible because code is incorrect, not sure).
robovac_features = 0; # RoboVacEntityFeature.CLEANING_TIME | RoboVacEntityFeature.CLEANING_AREA | RoboVacEntityFeature.DO_NOT_DISTURB | RoboVacEntityFeature.AUTO_RETURN | RoboVacEntityFeature.ROOM | RoboVacEntityFeature.ZONE | RoboVacEntityFeature.BOOST_IQ | RoboVacEntityFeature.MAP | RoboVacEntityFeature.CONSUMABLES
After all of this, a logger can be added to log everything. If you change the code of the battery to 161, you'll see that one works in the home panel.
It's curious, if I start the robot or do something with it, the status does not change according to the Logger. Perhaps another api call is required?
Should the developer read this, and willing to look into it. Some more messages from the device, when I start it via the Eufy app. It looks like it's encrypted. I noticed that '179' has 4 values which would match potential states the device is in. (positioning, cleaning, heading home, charging). These only reported after a first run tho.
{'151': True, '156': True, '158': 'Turbo', '159': True, '160': False, '161': 41, '163': 99, '177': 'DAjZhNCLlIztzgFSAA==', '153': 'BBADGgA=', '178': 'DQiuzqvylIztzgESAR8=', '152': 'AggG', '179': 'FhIUEhIIEBABIGMozsPsswYwgcTsswY=', '173': 'GAoSMgoKAggBEgQIARgPOgQKAggBEgIIAQ==', '176': 'JgoAGgBSCBoAIgIIASoAWDBiFAoSCghOcjE4X0lvVBoGEKnC7LMG', '169': 'xxx'}
Righto, so using the DPS branch I copied the 2273 config and renamed it to 2277 and added the reference to the model number in init.
Using 161 the battery shows as 0%, and log shows the following:
2024-06-25 21:10:21.757 ERROR (MainThread) [homeassistant.components.vacuum] Error adding entity vacuum.fred for domain vacuum with platform robovac
Traceback (most recent call last):
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 520, in wait_for
return await fut
^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/locks.py", line 386, in acquire
await fut
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 911, in async_recieve
await self._recieve_task
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 519, in wait_for
async with timeouts.timeout(timeout):
File "/usr/local/lib/python3.12/asyncio/timeouts.py", line 115, in __aexit__
raise TimeoutError from exc_val
TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 600, in _async_add_entities
await coro
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 914, in _async_add_entity
await entity.add_to_platform_finish()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1354, in add_to_platform_finish
await self.async_added_to_hass()
File "/config/custom_components/robovac/vacuum.py", line 297, in async_added_to_hass
await self.async_forced_update()
File "/config/custom_components/robovac/vacuum.py", line 326, in async_forced_update
await self.async_update_vacuum()
File "/config/custom_components/robovac/vacuum.py", line 322, in async_update_vacuum
await self.vacuum.async_get()
File "/config/custom_components/robovac/tuyalocalapi.py", line 763, in async_get
response = await self.async_recieve(message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/tuyalocalapi.py", line 923, in async_recieve
raise ResponseTimeoutException(
custom_components.robovac.tuyalocalapi.ResponseTimeoutException: Timed out waiting for response to sequence number 818946
2024-06-25 21:10:26.827 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi.bfb2df8ed89ef1ee85zulu] Processing queue. Current length: 1
2024-06-25 21:10:26.827 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi.bfb2df8ed89ef1ee85zulu] Sending to bfb2df8ed89ef1ee85zulu (192.168.10.18:6668): Message(0x9, b'', 0, <Device bfb2df8ed89ef1ee85zulu (192.168.10.18:6668)>)
2024-06-25 21:10:26.828 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi.bfb2df8ed89ef1ee85zulu] Connecting to bfb2df8ed89ef1ee85zulu (192.168.10.18:6668)
2024-06-25 21:10:26.836 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi.bfb2df8ed89ef1ee85zulu] Received message from bfb2df8ed89ef1ee85zulu (192.168.10.18:6668): Message(0x9, b'', 0, None)
I also get this error sometimes, seems to be when I clicked a button and then the sequence number goes haywire.. Not sure tho. In any case, the last 3 messages show it is working. At least the communication part is.. Can you try 163 for battery? That is what I have currently.
One thing to add. Battery wont show in a default card (when the device is so-called offline). Go to the device info itself under settings -> devices. Should show there.
Hmmm, no luck. It still shows 0%. I also don't seem to get the log state with the encrypted numbers that you got.
Did you enable debug logging?
Afraid so :(
Mhh okay odd. I don't know why it won't work for you.. when I have more time I might look into it further. Should I find a proper solution I'll see if I can create a PR
Some of these codes may be helpful: https://github.com/CodeFoodPixels/robovac/issues/42#issuecomment-1873242870
- 1 for the LS60 SES integration please.
I am having similar issues, my L60SES replaces a 15C MAX. I have removed the Eufy integration from HACS and rebooted. Amended the robots file to include the T2277 model number and when adding a device for some reason it identifies the L60SES and the name of the robot, burt gives it the MAC address of the old robot (15C MAX), even though this is removed from the Eufy app.....
I can't control the robot or see the battery status sadly via HA.
Hi all! Good news: I've been able to get my L60 SES to work in Home assistant!
Ugly-but-working code is here https://github.com/maximoei/robovac/tree/L60-support This version very much breaks supports for all other Robovacs, so quite some work is still needed to get it integrated back into the repo - any help is appreciated! I added config files for T2267 (L60), T2277 (L60 SES), T2278 (L60 SES Hybrid). I own the T2277 (L60 SES), so other are fully untested.
So:
- L60 (and probably many others) have a new control mechanism, which is based on encrypted/protobuf values. These have been reverse engineered before by people from IObroker.net - git @TA2k
- Some further values I found here @terabyte128
- Lots of values still not unencrypted, you can help! Potentially approach is to move to real protobuf support, but for now a few hard coded messages are sufficient
What is the integration able to do:
- Start auto clean, pause and return to dock (UI/card)
- Change fan speed (UI/card)
- See battery status (UI/card)
- Locate the robot (UI/card)
- Change volume (service)
- Change boost IQ (service)
Very much not supported:
- Room / Zone clean
- Mopping related features
- See map
I'll try to work this back into the better-dps branch, but any help here is appreciated. Happy to hear your feedback as well!
Nice! How did you find out the codes?
This is great to see, I have cleaned out the old integration and installed this but I still only see just the battery entity. I just have the L60
Nice! How did you find out the codes?
Via the other work I referenced. Some of the error codes by seeing what is being logged in the integration
This is great to see, I have cleaned out the old integration and installed this but I still only see just the battery entity. I just have the L60
Sometimes it only starts reporting detailed state after I start (and stop) a cleaning cycle from the app. After that, session seems to 'stick'. Also, if you have errors in your log, please share
Thanks for the feedback, must admit I'd not thought of triggering it via the app. I'll give that a try and see if it grabs the info
Nice! How did you find out the codes?
Via the other work I referenced. Some of the error codes by seeing what is being logged in the integration
This is great to see, I have cleaned out the old integration and installed this but I still only see just the battery entity. I just have the L60
Sometimes it only starts reporting detailed state after I start (and stop) a cleaning cycle from the app. After that, session seems to 'stick'. Also, if you have errors in your log, please share
Interesting! I also tried this but for me every response seemed encrypted or something.. glad you figured it out !
Was able to get my L60 SES (T2277) working on your fork. Nice work! Will test a full run later tonight.
Had to make 2 minor changes to get it running:
- Add the model to
vacuums/__init__.py, was previously missing vaccuums/T2267.pyhad the wrong class name causing an import error - updated it to match the file name
[!IMPORTANT] The fork was updated to fix these issues in this commit. These changes are no longer necessary.
Was able to get my L60 SES (T2277) working on your fork. Nice work! Will test a full run later tonight.
Had to make 2 minor changes to get it running:
- Add the model to
vacuums/__init__.py, was previously missingvaccuums/T2267.pyhad the wrong class name causing an import error - updated it to match the file name
That second bit helped me out, thanks! I have it running now but it always shows error despite being controllable but it's a massive improvement on just having the battery status :)
Was able to get my L60 SES (T2277) working on your fork. Nice work! Will test a full run later tonight.
Had to make 2 minor changes to get it running:
- Add the model to
vacuums/__init__.py, was previously missing
vaccuums/T2267.pyhad the wrong class name causing an import error - updated it to match the file nameThat second bit helped me out, thanks! I have it running now but it always shows error despite being controllable but it's a massive improvement on just having the battery status :)
I'm having the L60 remaining unavailable, what exactly did you change in the file?
The latest commit on that fork includes fixes for the issues I mentioned, so you shouldn't have to manually change anything anymore. Make sure that you have the correct fork/branch checked out and you pulled the latest commit. If so, check the logs in home assistant.
The latest commit on that fork includes fixes for the issues I mentioned, so you shouldn't have to manually change anything anymore. Make sure that you have the correct fork/branch checked out and you pulled the latest commit. If so, check the logs in home assistant.
Yep, realised just after posting, HA had done something weird with the files. Started again completely and now working happily. Did have to start the device in the app to get it to register.
Full test run was mostly successful! I did notice one issue though: when I checked the logs afterwords, it looks like it was intermittently unavailable while it was running. Based on the timings, my guess is that this was when it returned to the base to empty at cut hair, but I was not actually there so I can't confirm. Nothing in the logs. Not a huge deal but definitely worth making a note of at least.
Hi all, a few updates from my continued testing (on my L60 SES) over the last week or so:
- A new software update was available on the vacuum (1.3.27). As far as I can tell, it works just as it did before, so should be safe to update your vacuums.
- The unknown status issue mentioned in my last comment was in fact when the vacuum returns home to empty itself as I suspected.
- I noticed in HA that I can pause the vacuum just fine, but resuming it does not do anything.
- "Do not disturb" in the attributes section is showing as "DgoAEgoKABICCBYaAggI", which I think is another message that needs handling. It is currently disabled for me.
Besides those issues, it seems to work fine! Might be good to clean up a bit as needed and create a PR now, and then come back for whatever other issues there are since this is definitely a huge improvement over what's currently available.
* This was all done on commit fc1d0f5. I just noticed there are some new commits, so I will pull and test those later.