Code Monkey home page Code Monkey logo

robovac's Issues

Unable to Configure Device

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'
`

Entities not populating with Eufy L60

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

[Feature Request] Add ability to retrieve maps

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.

AttributeError: 'coroutine' object has no attribute 'payload'

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

Unable to add devices

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'

Question, How to select rooms to be clean

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)

Broken since August 2023 HA update

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!

Error message not working

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.

Readme is outdated

Since I've taken over this project, I've made changes that means that the readme is outdated. I should probably update this.

Can add account fine, Cannot add the vacuum

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.

eufy RoboVac 15C MAX not being detected

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?

Unable to use together with localtuya integration

Bug

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.

Logs

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.

Possible solutions

  1. Fix this integration so it can coexist with localtuya. I'm not sure why this integration needs keep using the discovery port even though I'm not adding any device.
  2. If my understanding is correct, then my Eufy Vacuum is also a Tuya device so if I manage to get the id/localkey I should be able to add it to localtuya. But I'm not sure if it's possible to get that.

Errors with Robovac LR30 Hybrid

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'

AND

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

AND

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 :)

Running current version 1.1.1, my LR30 status does not refresh after clean and docked.

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.

Add support for L50 SES

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!

how to set fan speed!?

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!

Robovac G30 keeps getting error status after update 1.2.1

I updated to latest version and now one of my vacuums (the G30 robovac) keeps going between docked and error status.
image

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)

Unexpected Error on Login

Just added this integration into HACS and upon login I receive "Unexpected Error". Verified my login is correct
Screenshot 2023-08-17 at 5 15 57 PM

Commands don't necessarily work across different devices

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 Status

For 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

Support G35+

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 😭

Robovac issue G10 Hybrid issue, unable to control via HA

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'

Support LR30 hybrid+

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:

Bildschirmfoto 2023-11-19 um 21 23 49

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

Device not added "got an unexpected keyword argument 'access_token'"

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?

Unexpected error

Whatever I do, I keep getting "unexpected error" while adding my Eufy account ; any tips where to start troubleshooting?

Get a lot of error states and long times between status updates

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.

image

IP Address not found

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```

Non-functional buttons

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?

Add support for LR30 Hybrid+

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 :/

LR20 doesn't have consumables

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.

Trying to add 11c - Not found on Tuya error

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.

"This entity is no longer being provided by the robovac integration. If the entity is no longer in use, delete it in settings."

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.

Robovacs are not found? :(

I followed all the steps but no devices are added. When I hit configure my robovacs show up, but they are not found in the "Devices and Integrations" section. These are all I see, see screenshots.
Do you all know why?
image
image

Integration slows down automation when robovac is powered off

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.

Please add support for Model X8 Pro SES #T2276113 or #T2276

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'
2024-01-08_23-32-33

X9 adds correctly but doesn't work

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.

L35 hybrid+

Please,.add full support robovac L35 hybrid+

Receiving errors after latest Home Assistant Update

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

Does anyone know the consumable meaning?

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

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!

Lr30+ supported?

Trying to add vacuum says successful but doesn't actual add it to the list. Logs show no errors. I have lr30+

Eufy X9 Pro

Would it be possible to add support for the Eufy X9 Pro T2320 model?

[Feature Request] Make metrics like battery a `sensor`

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.

Incomplete read from: xxxxxxxxxxxxxxxxxxxx (xx.xxx.xxx.xx:6668) : 0 bytes read on a total of undefined expected bytes

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.