codefoodpixels / robovac Goto Github PK
View Code? Open in Web Editor NEWAdd a Eufy RoboVac easily to Home Assistant
License: Other
Add a Eufy RoboVac easily to Home Assistant
License: Other
Configuration of device fails when device was connected via IP and auto-discovery is being used to identify the device to be configured.
`This error originated from a custom integration.
Logger: aiohttp.server
Source: custom_components/robovac/config_flow.py:196
Integration: Eufy Robovac (documentation, issues)
First occurred: 4:54:49 PM (3 occurrences)
Last logged: 7:29:04 PM
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 148, in handle
result = await handler(request, **request.match_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 242, in post
return await super().post(request, flow_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
result = await method(view, request, data, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 296, in async_configure
result = await self._async_handle_step(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 392, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/config_flow.py", line 196, in async_step_init
item_settings[CONF_IP_ADDRESS] = user_input[CONF_IP_ADDRESS]
~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'ip_address'
`
I have a Eufy L60. When I configure the integration I do get an IP but none of the entities populate in home assistant apart from:
sensor.robovac_battery
which shows as unavailable
Any ideas why this may happen? I've tried removing and re-adding the integration and reconfiguring the vac a couple of times
The T2259 has the map feature, looking into the files looks like some other models have this feature as well. I would like support for the map for the T2259 I am willing to send over any information you need to do this.
I've been noticing this issue showing up in home assistant since I upgraded to the latest version (1.1) of this repository. Is there something I can do on my end to address this or does it require a bug fix? This vacuum is as 30C Max. This error shows up roughly once an hour in the log.
2023-10-05 06:14:13.571 ERROR (MainThread) [homeassistant.helpers.entity] Update for vacuum.living_room_vac fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 732, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 991, in async_device_update
await self.async_update()
File "/config/custom_components/robovac/vacuum.py", line 314, in async_update
await self.vacuum.async_get()
File "/config/custom_components/robovac/tuyalocalapi.py", line 706, in async_get
await self.async_update_state(response)
File "/config/custom_components/robovac/tuyalocalapi.py", line 740, in async_update_state
self._dps.update(state_message.payload["dps"])
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'coroutine' object has no attribute 'payload'
Here is the the version of Home Assistant I'm currently running:
Home Assistant 2023.10.0
Supervisor 2023.10.0
Operating System 10.5
Frontend 20231002.0 - latest
Hi, a list of my vacuums shows up but when I select one and add the IP it does not get added.
I checked the logs and the only error I see is:
" File "/config/custom_components/robovac/vacuum.py", line 231, in init
self._attr_access_token = item[CONF_ACCESS_TOKEN]
~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'access_token'"
Thanks
Edit
Found the proper log, see below:
2023-08-17 12:57:41.640 ERROR (MainThread) [homeassistant.components.vacuum] Error while setting up robovac platform for vacuum
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 362, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/robovac/vacuum.py", line 110, in async_setup_entry
async_add_entities([RoboVacEntity(item)])
^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/vacuum.py", line 231, in init
self._attr_access_token = item[CONF_ACCESS_TOKEN]
~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'access_token'
2023-08-17 12:58:43.373 ERROR (MainThread) [homeassistant.components.vacuum] Error while setting up robovac platform for vacuum
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 362, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/robovac/vacuum.py", line 110, in async_setup_entry
async_add_entities([RoboVacEntity(item)])
^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/vacuum.py", line 231, in init
self._attr_access_token = item[CONF_ACCESS_TOKEN]
~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'access_token'
Do you know how to select rooms to be clean? I show it in the coding for command roomClean?
just trying to get the room IDS. ALso line 445 says selectRoomsClean, Does this give a list?
elif command == "roomClean":
roomIds = params.get("roomIds", [1])
count = params.get("count", 1)
clean_request = {"roomIds": roomIds, "cleanTimes": count}
method_call = {
"method": "selectRoomsClean",
"data": clean_request,
"timestamp": round(time.time() * 1000),
}
json_str = json.dumps(method_call, separators=(",", ":"))
base64_str = base64.b64encode(json_str.encode("utf8")).decode("utf8")
_LOGGER.info("roomClean call %s", json_str)
await self.vacuum.async_set({"124": base64_str}, None)
Since I updated my HA in August 2023, the vacuum card I was using is no longer available, so I can't press the play/pause button that used to work ,and my script for calling that start/pause function no longer works .
I've made sure the configuration / ip was good as it had changed, but it did not fix anything. Now I can't send any valid commands to my G30 vacuums.
Ps. Huge thanks for taking over the project!
Hello,
Thanks for taking over this project. Since the update, the buttons started working. However, the Status just shows as "Error" where before it would actually say what the error was, for example: Rolling Brush Stuck. I have the 30C Max models.
Since I've taken over this project, I've made changes that means that the readme is outdated. I should probably update this.
Setting this up as a counterpart to bmccluskey/robovac#14. Progress on a fix will be tracked here.
Hi,
i can add the account fine, i then configure and select the device, it still asked for an IP address. When i put in the correct IP in (or even the wrong one) it says success but no entities appear.
Small little suggestion, would be great to see you add changelogs to the HAC updates to let people know what's changed from within the update prompt.
I have two vacuums on the eufy app, a G30 and a 15C max.
I was using a different custom integration which the latest 2024.2.0 update broke so I installed this one.
After I added the integration and logged in, only the G30 got detected but not the 15C
Is there a way I can manually add it via IP for example?
The Localtuya integration complains that the ports 6666/6667 are already in use by this other integration. These ports are used to discover new Tuya devices so they are only needed when adding a new device.
Additionally I'm sometimes not able to control the vacuum when localtuya is enabled, I'm not sure why.
Note: Except for discovery, localtuya works fine with robovac enabled. robovac has issues with localtuya.
I start getting these errors often:
2024-02-27 22:46:52.960 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 816, in _async_handle_message
response_data = self._response_task.result()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.InvalidStateError: Result is not set.
EDIT / UPDTAE
i think i found the issue but i can´t solve this by myself.
i took a look at the file that Hacs downloaded an there a missing lines in the code. in the a bunch of lines.
### SEE HERE:
Dieser Fehler wurde von einer benutzerdefinierten Integration verursacht
Logger: homeassistant
Source: custom_components/robovac/vacuum.py:362
Integration: Eufy Robovac (documentation, issues)
First occurred: 21:32:12 (13 occurrences)
Last logged: 21:32:16
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 736, in async_gratuitous_update_state
await self.update_entity_state_cb()
File "/config/custom_components/robovac/vacuum.py", line 330, in pushed_update_handler
self.update_entity_values()
File "/config/custom_components/robovac/vacuum.py", line 362, in update_entity_values
self._attr_consumables = ast.literal_eval(
^^^^^^^^^^^^^^^^^
KeyError: 'consumable'
### AND HERE:
Logger: homeassistant.helpers.entity
Source: helpers/entity.py:898
First occurred: 21:32:16 (1 occurrences)
Last logged: 21:32:16
Update for vacuum.robovac_horst fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 898, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1216, in async_device_update
await self.async_update()
File "/config/custom_components/robovac/vacuum.py", line 316, in async_update
self.update_entity_values()
File "/config/custom_components/robovac/vacuum.py", line 362, in update_entity_values
self._attr_consumables = ast.literal_eval(
^^^^^^^^^^^^^^^^^
KeyError: 'consumable'
I tried to delete the HACS REPO - restart HA FULL - Restart HA by switching off and on the power button - get a new Download wich is 1.1.1 (same as i got before) - did the whole setup again - reboot - reboot AND the same error in the Logs.
Am i doing it all wrong or is it a bug wich i created by myself in HA ?!
Hello there,
I´m getting the following Errors in the HA Log while using this HACS Repositorie:
Logger: homeassistant.helpers.entity
Source: helpers/entity.py:898
First occurred: 04:00:34 (2 occurrences)
Last logged: 04:01:54
Update for vacuum.robovac_horst fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 898, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1216, in async_device_update
await self.async_update()
File "/config/custom_components/robovac/vacuum.py", line 314, in async_update
await self.vacuum.async_get()
File "/config/custom_components/robovac/tuyalocalapi.py", line 706, in async_get
await self.async_update_state(response)
File "/config/custom_components/robovac/tuyalocalapi.py", line 739, in async_update_state
if state_message.payload and state_message.payload["dps"]:
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'coroutine' object has no attribute 'payload'
Dieser Fehler wurde von einer benutzerdefinierten Integration verursacht
Logger: homeassistant
Source: custom_components/robovac/tuyalocalapi.py:782
Integration: Eufy Robovac (documentation, issues)
First occurred: 04:01:52 (1 occurrences)
Last logged: 04:01:52
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 377, in drain
await self._protocol._drain_helper()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 166, in _drain_helper
raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 365, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 365, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 365, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 365, in drain
raise exc
File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 1051, in write
n = self._sock.send(data)
^^^^^^^^^^^^^^^^^^^^^
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 724, in _async_ping
await self._async_send(message)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
[Previous line repeated 1 more time]
File "/config/custom_components/robovac/tuyalocalapi.py", line 782, in _async_send
raise ConnectionException(
custom_components.robovac.tuyalocalapi.ConnectionException: Connection to bf458d7ba2a1e05265puts (10.10.1.102:6668) failed: [Errno 32] Broken pipe
Dieser Fehler wurde von einer benutzerdefinierten Integration verursacht
Logger: homeassistant
Source: custom_components/robovac/tuyalocalapi.py:753
Integration: Eufy Robovac (documentation, issues)
First occurred: 04:00:45 (2 occurrences)
Last logged: 04:01:49
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 753, in _async_handle_message
response_data = await self.reader.readuntil(MAGIC_SUFFIX_BYTES)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/streams.py", line 637, in readuntil
raise exceptions.IncompleteReadError(chunk, None)
asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of undefined expected bytes
I am really new to the HA Ecosystem , so i don´t have any clue where to start searching for the things i am missing. I did exactly the steps wich whre written in HACS
System Version is :
Core
2024.1.5
Supervisor
2023.12.1
Operating System
11.4
Frontend
20240104.0
Running on RPI 3B
if this is not the right place to ask for help, please guide me to the right place.
Thanks in advance :)
Hi, after starting a clean for my LR30, the status updates within HA to show its Cleaning, but once finished it doesnt seem to update, instead HA continues to report it 'Cleaning' even though its back in its dock charging.
It gets current charge and battery status as I can see its charge level increasing in HA, but its status continues with 'Cleaning'
Not a huge issue, it still accepts new commands to start cleaning, but certainly an annoyence within the UI to see.
I'm quite new to HA, but if pointed in the right direction, happy to provide logs and the like.
FYI, thansk for the the effort so far from yourself and all that have come before.
I am seeing similar issues to what is described in #40. When my device is discovered, it only shows the sensor.robovac_battery
entity with unavailable status. When I add the model number (T2275) to the L-series list in robovac.py, a vacuum.robovac
entity appears, also with unavailable status.
Let me know if there is anything I can do to help with this; I am happy to provide any diagnostic information you need. Here is the manual, if it helps. Thanks for your work!
Hi, I'd like to set fan speed via automation.
is this the correct way?
- service: vacuum.set_fan_speed
data:
fan_speed: Pure
target:
device_id: XYZ
Thanks for reply!
I updated to latest version and now one of my vacuums (the G30 robovac) keeps going between docked and error status.
Where there is no error.
I see loads of messages with debug enabled, not sure if normal.
2024-02-26 21:12:33.337 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Sending to bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, <Device bfd6df67aa715fe6a83ksw (192.168.0.33:6668)>)
2024-02-26 21:12:33.337 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Connecting to bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.344 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Received message from bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, None)
2024-02-26 21:12:33.379 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Disconnected from bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.448 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Processing queue. Current length: 3272
2024-02-26 21:12:33.448 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Sending to bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, <Device bfd6df67aa715fe6a83ksw (192.168.0.33:6668)>)
2024-02-26 21:12:33.450 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Connecting to bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.455 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Received message from bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, None)
2024-02-26 21:12:33.498 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Disconnected from bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.557 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Processing queue. Current length: 3397
2024-02-26 21:12:33.558 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Sending to bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, <Device bfd6df67aa715fe6a83ksw (192.168.0.33:6668)>)
2024-02-26 21:12:33.558 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Connecting to bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.609 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Disconnected from bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.714 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Processing queue. Current length: 3403
2024-02-26 21:12:33.714 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Sending to bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, <Device bfd6df67aa715fe6a83ksw (192.168.0.33:6668)>)
2024-02-26 21:12:33.715 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Connecting to bfd6df67aa715fe6a83ksw (192.168.0.33:6668)
2024-02-26 21:12:33.756 DEBUG (MainThread) [custom_components.robovac.tuyalocalapi] Received message from bfd6df67aa715fe6a83ksw (192.168.0.33:6668): Message(0x9, b'', 0, None)
Tried out beta 4, sadly still the same. Can add account and vacuum is auto discovered correctly but device remains unavailable with attribute error reported as “unknown” and no errors reported in the logs. Debug logging remains the same as my previous post. Also tried manually setting IP (auto discovery already had correct IP) but still the same.
Thanks so much for your perseverance it really is appreciated, please do let me know if there is anything I can try out on my end to help you understand where it’s having troubles.
My very limited trials with local Tuya was managing to connect however there was hardly any functionality (no way to start/stop a clean and so on) and the reported dps items were only the ones that are in the debug log which I have managed to figure out some of:
151:
156: Auto-Return Cleaning
158: Fan Speed (quiet,standard,turbo,max)
159: Boost IQ
160:
161: Voice Level
163: Battery StatusFor the above I was able to successfully control the ones that can be via local Tuya and the changes were reflected on the robot and in Eufy app. Also updates were reflected in the integration on status updates or changes made via the Eufy app.
Originally posted by @john500y2k in #4 (comment)
I've discovered that the Tuya api that is being used to get the list of devices also returns a schema with the command codes. We could potentially use this to determine what commands we need to use
Hey folks,
The integration does already work with the G35+, I just had to add the model "T2270" under the T series Vacuums in robovac.py
and everything functions perfectly!
Sorry for submitting this as an issue, I am too much of a noob to know how to suggest a change to the code directly 😭
it has been a couple of days since my Eufy Robovac stopped working.
running HomeAssistant CORE 2024.1.6
running Eufy Robovac custom integration 1.1.1
When using the official Eufy app I can control the Robovc without any issues.
Wifi version 1.5.1
MCU version 1.3.7
errors in the log below:
Logger: custom_components.robovac.tuyalocalapi
Source: custom_components/robovac/tuyalocalapi.py:594
Integration: Eufy Robovac ([documentation](https://github.com/codefoodpixels/robovac), [issues](https://github.com/codefoodpixels/robovac/issues))
First occurred: 16:38:04 (212 occurrences)
Last logged: 17:48:26
'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte
abnd this:
Logger: homeassistant.helpers.entity
Source: helpers/entity.py:898
First occurred: 16:38:06 (212 occurrences)
Last logged: 17:48:28
Update for vacuum.robovac fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 898, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1216, in async_device_update
await self.async_update()
File "/config/custom_components/robovac/vacuum.py", line 314, in async_update
await self.vacuum.async_get()
File "/config/custom_components/robovac/tuyalocalapi.py", line 706, in async_get
await self.async_update_state(response)
File "/config/custom_components/robovac/tuyalocalapi.py", line 739, in async_update_state
if state_message.payload and state_message.payload["dps"]:
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'coroutine' object has no attribute 'payload'
I currently have the Eufy LR30 hybrid+ integrated. The rudimentary functions work so far.
For this reason I wanted to ask about a few features or even clarify whether this is an option.
a) Fan speed
My vacuum entity has always fan_speed null. In the Eufy App I see Max
.
fan_speed_list: Quiet, Standard, Turbo, Max
fan_speed: null
For example for my Deboot I see this in the custom:vacuum-card for the fan_speed:
b) Rooms
I currently don't see any rooms that have been set on the map to clean the rooms individually.
Is this possible? This is also possible, for example, with the Deboot.
There I see, for example, in the vacuum entity
rooms:
living_room: 0
kitchen: 1
default: 3
corridor: 2
c) Consumables
I see the consumption in the vacuum entity in the consumables field. However, there are no individual sensors for evaluating when, for example, the life brush needs to be cleaned
e.g. missing sensor.staubi_life_span_brush
sensor.staubi_life_span_brush
state: 48.08
remaining: 57
unit_of_measurement: %
icon: mdi:air-filter
friendly_name: Staubi Filter
Thanks
When trying to set the IP address for my RoboVac, I see this error in the Home Assistant Log:
Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 510, in async_add_entities await asyncio.gather(*tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 619, in _async_add_entity device = dev_reg.async_get(self.hass).async_get_or_create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: DeviceRegistry.async_get_or_create() got an unexpected keyword argument 'access_token'
The RoboVac doesn't appear in the configuration and thus the setup doesn't work. Any clues?
Whatever I do, I keep getting "unexpected error" while adding my Eufy account ; any tips where to start troubleshooting?
Hi, I have some home assistant automations that keep track of how many times the vacuum has ran. This is so I can be reminded to clean out the vacuum bin. My automation is triggered when the vacuum goes from "docked" to "cleaning".
The issue I am having is that every few mins, my vaccuum shows "Error" as it's state. This interrupts my automations, as they never trigger. Since the vacuum goes from "docked" to "error". And then sometime later once the vacuum has already started cleaning, the integration syncs back up and it goes from "error" to cleaning". Looking at my vacuum's state history I dont see any way I could work around this. As "error" states happen constantly every few mins.
Also there seems to be a massive delay between the vacuum and home assistant integration. If I start cleaning, it will take forever to show up in home assistant, even if im not showing an error state at that moment. I remember this being very quick and snappy before. I think there is some issue in syncing of the vacuum and integration.
I have a eufy 30c (shows up as g30 verge) and am running the latest beta available for this integration.
I will try the 1.0 stable release and see if that fixes my problem.
Since updating to beta 3. My LR20's IP Address is no longer found (In attributes) and I can no longer manually configure it.
Log spits this out:
Traceback (most recent call last):
File "/config/custom_components/robovac/__init__.py", line 57, in async_setup
await tuyalocaldiscovery.start()
File "/config/custom_components/robovac/tuyalocaldiscovery.py", line 29, in start
self._listeners = await asyncio.gather(listener, encrypted_listener)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1386, in create_datagram_endpoint
raise exceptions[0]
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1370, in create_datagram_endpoint
sock.bind(local_address)
OSError: [Errno 98] Address in use```
Since those fork looks like it will actually be supported long term hopefully we can get a fix to a few issues. For the X8 the c0ntrol buttons font seems to work or only half work. The play/pause button on the vacvum card, when you press it, it will start the vacuum but if you press it again to pause it it will instead stop the cleaning and put it into Standby mode instead. As for the control buttons in the entity itself, they don't seem to work at all, pressing them doesn't stop, locate, spot clean or anything. Is there any chance of solving these issues?
Thanks for the fork!
I tried to add my LR30 Hybrid+ but received a log error that model T2181 is not supported.
I was keen enough to add it to robovac.py (as X series model) and it seems to work. I'd create a PR but it seems I'm unable to find the correct upstream... sorry :/
The LR20 is not an L series. It's an LR series and causes the console to flood with errors regarding consumables as it's not a feature (it doesn't have a mop). My original pull request went around this by ensuring a difference between LR and L, as well as adding an if statement with the state update function that checks the status of the consumables.
Thanks for your work on this.
v1.1.1
HA 2024.1.2
My Eufy account is added in HA using this integration and shows up in the device list with the message "No devices or entities" under it. The 11C is visible in the Eufy Clean app.
From the log:
2024-01-14 11:06:43.545 DEBUG (SyncWorker_2) [custom_components.robovac.config_flow] Vacuum bc72298f-3e77-4295-b974-8980fe59fe50 found on Eufy, but not on Tuya. Skipping.
My best guess is that the 11c is too old and does not use actually use Tuya.
Thanks.
Upon trying to add my RoboVac 25C it just doesn't seem to work at all. I can control it fine from their terrible official app, just not Home Assistant. Here's some errors from the logs:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 543, in async_unload
result = await component.async_unload_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 137, in async_unload_entry
return await component.async_unload_entry(entry)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 194, in async_unload_entry
raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!
Unable to prepare setup for platform robovac.sensor: Platform not found (cannot import name 'DeviceInfo' from 'homeassistant.helpers.device_registry' (/usr/src/homeassistant/homeassistant/helpers/device_registry.py)).
I'm not expert at using Home Assistant, so if you need me to get more information, feel free to say how.
Hi ,
I just found as problem that was bugging me for a while. I thought it was something wrong with my system.
The details are in here https://community.home-assistant.io/t/automation-delays/629820/6
Basically I power off my robovac (my eufy has a physical switch) as the battery consumption is not negligible if the robovac is not in use).
When is off the integration generates errors in the HA core logs and the problem is that it freezes the whole system, automations etc are delayes by 4-6 seconds at times.
Traceback (most recent call last): File "/config/custom_components/robovac/tuyalocalapi.py", line 685, in async_connect sock.connect((self.host, self.port)) TimeoutError: timed out The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/config/custom_components/robovac/tuyalocalapi.py", line 774, in _async_send await self.async_connect()
The code should deal more gracefully and not let the system timeout by default.
If no one has time to fix this I can try to do it.
Not sure if this is because I am new or if I am doing something wrong but no matter what I can not add my X8 to home assistant. Does it make a difference that mine is the Model X8 Pro SES? I keep getting errors in the logs similar to some other issues I have read here. I have attempted to mess with the code a bit but I'm a python noob and mainly attempted to have ChatGPT fix it. I have removed and re-added the vacuum countless times to the network and home assistant. I have been attempting to get this vacuum integrated for like 4 days now and keep coming up empty. Any help would be greatly appreciated.
Logs:
2024-01-08 23:09:59.432 ERROR (MainThread) [homeassistant.components.vacuum] Error while setting up robovac platform for vacuum
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 360, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/robovac/vacuum.py", line 116, in async_setup_entry
entity = RoboVacEntity(item)
^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/vacuum.py", line 284, in init
self._attr_supported_features = self.vacuum.getHomeAssistantFeatures()
^^^^^^^^^^^
AttributeError: 'RoboVacEntity' object has no attribute 'vacuum'
It shows up as unavailable immediately. I've added the IP and restarted but nothing works. If the X9 is not supported, are there any plans to add support? Thank you.
Please,.add full support robovac L35 hybrid+
Current Home Assistant Info:
Home Assistant 2023.10.3
Supervisor 2023.10.0
Operating System 11.0
Frontend 20231005.0 - latest
Since the upgrade to 2023.10.3 I've been receiving the following errors for this addon. Any idea if this is a bug or something I need to fix in my setup?
====================================================================================
2023-10-14 04:33:11.656 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 378, in drain
await self._protocol._drain_helper()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 167, in _drain_helper
raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 366, in drain
raise exc
File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 1051, in write
n = self._sock.send(data)
^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 724, in _async_ping
await self._async_send(message)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
File "/config/custom_components/robovac/tuyalocalapi.py", line 808, in _async_send
await self._async_send(message, retries=retries - 1)
[Previous line repeated 1 more time]
File "/config/custom_components/robovac/tuyalocalapi.py", line 782, in _async_send
raise ConnectionException(
custom_components.robovac.tuyalocalapi.ConnectionException: Connection to 367205002cf43232871d (192.168.223.190:6668) failed: [Errno 104] Connection reset by peer
2023-10-14 04:33:11.686 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 777, in _async_send
await self.writer.drain()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 378, in drain
await self._protocol._drain_helper()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 167, in _drain_helper
raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 753, in _async_handle_message
response_data = await self.reader.readuntil(MAGIC_SUFFIX_BYTES)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/streams.py", line 641, in readuntil
await self._wait_for_data('readuntil')
File "/usr/local/lib/python3.11/asyncio/streams.py", line 526, in _wait_for_data
await self._waiter
File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 1051, in write
n = self._sock.send(data)
^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
2023-10-14 04:33:15.231 ERROR (SyncWorker_0) [homeassistant] Error doing job: Unclosed client session
After the last update to v.1.2.0, I started getting this error:
I didn't chage anything in the configuratiion.
Reverted to v1.1.1 and everything is back to normal.
Does anyone know the consumable meaning?
consumables:
FM: 2
RB: 3
SB: 3
SS: 3
In the eufy app I see:
98% (side brush)
99% (span_brush)
99% (filter)
91%(sensor)
Chinese users cannot add this integrated plugin. They cannot add it with their mobile phone number or email. Adding the integrated prompt "Invalid authentication" with a mobile phone number and "Unexpected error" with an email can ensure that both the account and password are correct. Both can be logged in on the eufy clean APP.
I want to add my X9 Pro ACS to Home Assistant, what should I do? Help, thank you!
Trying to add vacuum says successful but doesn't actual add it to the list. Logs show no errors. I have lr30+
I saw there is a room cleaning command. How do I set this and where do I get the rooms ids?
https://github.com/CodeFoodPixels/robovac/blob/main/custom_components/robovac/vacuum.py#L435
Would it be possible to add support for the Eufy X9 Pro T2320 model?
The app shows loading but HA always shows cleaning. Perhaps a DP is created incorrectly.
Can I change that somehow?
I have a Dockerized version of the Eufy ID grabber if anyone is interested - it is located here:
https://hub.docker.com/r/markbajaj/eufyidfinder
It eliminates all the python issues some have found - feel free to add to your readme.
Caveat: I find the home assistant data model to be quite confusing, so maybe this is already possible and I just don't know how to use it.
The robovac entity vacuum.foo
has a number of attributes that I would find interesting & useful to be able to graph over time. For example, battery. I could spot when the battery is draining faster that it used to and so perhaps needs to be replaced.
These metrics are currently stored as attributes against the main vacuum
entity. In other devices where the data is exposed in the way I would like the main entity provides a number of seperate sensors
which hold that information. When I click on them I am able to see a graph.
I think battery
is the only one I really need.
Thanks for picking up this project and resurecting it. Much appreciated.
I get the following two errors throughout the day. The device is connected and functions.
Logger: custom_components.robovac.tuyalocalapi
Source: custom_components/robovac/tuyalocalapi.py:744
Integration: Eufy Robovac (documentation, issues)
First occurred: August 17, 2023 at 10:53:29 PM (26 occurrences)
Last logged: 7:23:55 AM
Incomplete read from: xxxxxxxxxxxxxxxxxxxx (xx.xxx.xxx.xx:6668) : 0 bytes read on a total of undefined expected bytes
Logger: homeassistant.helpers.entity
Source: custom_components/robovac/tuyalocalapi.py:681
Integration: Eufy Robovac (documentation, issues)
First occurred: August 17, 2023 at 10:57:01 PM (6 occurrences)
Last logged: 5:03:02 AM
Update for vacuum.eufy_robovac_g30 fails
Traceback (most recent call last):
File "/config/custom_components/robovac/tuyalocalapi.py", line 679, in async_connect
sock.connect((self.host, self.port))
TimeoutError: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 699, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 938, in async_device_update
await self.async_update()
File "/config/custom_components/robovac/vacuum.py", line 267, in async_update
await self.vacuum.async_get()
File "/config/custom_components/robovac/tuyalocalapi.py", line 699, in async_get
return await message.async_send(self, callback)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/robovac/tuyalocalapi.py", line 529, in async_send
await device._async_send(self)
File "/config/custom_components/robovac/tuyalocalapi.py", line 762, in _async_send
await self.async_connect()
File "/config/custom_components/robovac/tuyalocalapi.py", line 681, in async_connect
raise ConnectionTimeoutException("Connection timed out") from e
custom_components.robovac.tuyalocalapi.ConnectionTimeoutException: Connection timed out
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.