Code Monkey home page Code Monkey logo

robovac's Introduction

hacs_badge

Sponsor me on Github Sponsors Tip me through ko-fi Tip me through PayPal Tip me through Monzo

Eufy RobovVac control for Home Assistant

A brand new version Eufy RoboVac integration for Home Assistant that includes a Config Flow to add your RoboVac(s) and the local key and ID required. All you need to do is enter your Eufy app credentials and the Config Flow will look up the details for you. After the initial config use the configuration button on the Integration to enter the RoboVac IP address when prompted.

This work has evovled from the original work by Richard Mitchell https://github.com/mitchellrj and the countless others who have contributed over the last couple of years. It also builds on the work done by Andre Borie https://gitlab.com/Rjevski/eufy-device-id-and-local-key-grabber to get the required local ID and key.

This project has been forked many times since the I am building upon the original work done by Richard and attempting to simplfy the operation and number of files involved.

Installation

Couple of Pre-reqs

  1. Make sure your Home Assistant Core is up to date
  2. Remove any previous Eufy or RoboVac installation including entries in the configuration.yaml

If you want you can clone this repo manually, oterwise use HACS (Recommended).

Using HACS

  1. In HACS add this repo as an integration additional repository.
  2. Then install it.
  3. Restart Home Assistant
  4. Go to the Integrations Page and Click +Add Integration button
  5. Search for Eufy Robovac and select it
  6. Enter your Eufy username and password (The ones you use to login to the add with) and submit
  7. If youve done it correctly you should get a success dialoge and option to enter an Area for each RoboVac you have
  8. Click Finish
  9. On the Integrations Screen Locate your Eufy Robovac card and click the configure button
  10. Select the Radio button beside the Vacuum name and type its IP addess in the box and press Submit (You need to repeat steps 9 and 10 for each RoboVac you have)
  11. Enjoy

Please note: You may have to get a new version of the access key for your vacuum from time to time if Eufy change it. Worst case you have to Delete the integration and re add it to get the new key.

Optional 1: Scripts

The integration is designed to work with the standard Home Assistant Lovelace card but that doesnt support all the options of your Robovac. I have created some scripts to send the relevant commands to the Robovac.

Add the below text to your scripts.yaml file for a xxC RoboVAC. It should be in the same folder as your configuration.yaml

15c_smallroomclean:
  alias: 15C_smallRoomClean
  sequence:
  - service: vacuum.send_command
    data:
      command: smallRoomClean
    target:
      entity_id: vacuum.15c
  mode: single
15c_edgeclean:
  alias: 15C_edgeClean
  sequence:
  - service: vacuum.send_command
    data:
      command: edgeClean
    target:
      entity_id: vacuum.15c
  mode: single
15c_dock:
  alias: 15C_dock
  sequence:
  - service: vacuum.return_to_base
    target:
      entity_id: vacuum.15c
  mode: single

If you have a Gxx add this to your scripts.yaml

g30_autoclean:
  alias: G30_autoClean
  sequence:
  - service: vacuum.send_command
    data:
      command: autoClean
    target:
      entity_id: vacuum.g30
  mode: single
g30_autoreturn:
  alias: G30_autoReturn
  sequence:
  - service: vacuum.send_command
    data:
      command: autoReturn
    target:
      entity_id: vacuum.g30
  mode: single
g30_donotdisturb:
  alias: G30_do_Not_Disturb
  sequence:
  - service: vacuum.send_command
    data:
      command: doNotDisturb
    target:
      entity_id: vacuum.g30
  mode: single
g30_dock:
  alias: G30_dock
  sequence:
  - service: vacuum.return_to_base
    target:
      entity_id: vacuum.g30
  mode: single

If you have an X8 add this to your scripts.yaml

x8_boostiq:
  alias: x8_boostIQ
  sequence:
  - service: vacuum.send_command
    data:
      command: boostIQ
    target:
      entity_id: vacuum.x8
  mode: single
x8_autoclean:
  alias: x8_autoClean
  sequence:
  - service: vacuum.send_command
    data:
      command: autoClean
    target:
      entity_id: vacuum.x8
  mode: single
x8_autoreturn:
  alias: X8_autoReturn
  sequence:
  - service: vacuum.send_command
    data:
      command: autoReturn
    target:
      entity_id: vacuum.x8
  mode: single
x8_donotdisturb:
  alias: X8_do_Not_Disturb
  sequence:
  - service: vacuum.send_command
    data:
      command: doNotDisturb
    target:
      entity_id: vacuum.x8
  mode: single
x8_dock:
  alias: X8_dock
  sequence:
  - service: vacuum.return_to_base
    target:
      entity_id: vacuum.x8
  mode: single

The facilities in the script options above only work on the those model series. i.e. You cant do edge cleaning on the G30 and you cant do the autoreturn on the 15C.

Optional 2 : Lovelace Card

Search in HACS for the Vacuum Card by Denys Dovhan and install it and configure it in lovelace to use you vacuum. Note there is a minor "feature" in the vacuum card where it doesnt show the correct values in toolbar when they update and there is a template adjusting what is being displayed. A screen refresh shows the correct vaules. Hopefully this will be fixed soon.

Edit the lovelace vaccum card and add the following to the cards yaml if you have a xxC.

type: custom:vacuum-card
entity: vacuum.15c
image: default
show_name: true
show_status: true
show_toolbar: true
shortcuts:
  - name: Dock
    service: script.15c_dock
    icon: mdi:home-map-marker
  - name: Edge Cleaning
    service: script.15c_edgeclean
    icon: mdi:square-outline
  - name: Small Room
    service: script.15c_smallroomclean
    icon: mdi:timer-cog-outline

Again if you have the Gxx you will add these lines to the cards yaml.

type: custom:vacuum-card
entity: vacuum.g30
image: default
shortcuts:
  - name: Dock
    service: script.g30_dock
    icon: mdi:home-map-marker
  - name: Auto Clean
    service: script.g30_autoclean
    icon: mdi:caps-lock
  - name: Auto Return
    service: script.g30_autoreturn
    icon: mdi:arrow-u-down-left-bold
  - name: Do Not Disturb
    service: script.g30_donotdisturb
    icon: mdi:volume-off
stats:
  default:
    - attribute: cleaning_area
      unit: sq meters
      subtitle: Cleaning Area
    - attribute: cleaning_time
      value_template: '{{ (value | float(0) / 60) | round(1) }}'
      unit: minutes
      subtitle: Cleaning time
    - attribute: auto_return
      subtitle: Auto Ret
      value_template: '{% if (value == true) %}On{% else %}Off{% endif %}'
    - attribute: do_not_disturb
      subtitle: Dnd
      value_template: '{% if (value == true) %}On{% else %}Off{% endif %}'

Again if you have the X8 you will add these lines to the cards yaml.

type: custom:vacuum-card
entity: vacuum.x8
image: default
stats:
  default:
    - attribute: cleaning_area
      unit: sq meters
      subtitle: Cleaning Area
    - attribute: cleaning_time
      value_template: '{{ (value | float(0) / 60) | round(1) }}'
      unit: minutes
      subtitle: Cleaning time
    - attribute: boost_iq
      subtitle: Boost IQ
      value_template: '{% if (value == true) %}On{% else %}Off{% endif %}'
    - attribute: auto_return
      subtitle: Auto Ret
      value_template: '{% if (value == true) %}On{% else %}Off{% endif %}'
    - attribute: do_not_disturb
      subtitle: Dnd
      value_template: '{% if (value == true) %}On{% else %}Off{% endif %}'
shortcuts:
  - name: Dock
    service: script.x8_dock
    icon: mdi:home-map-marker
  - name: Auto Clean
    service: script.x8_autoclean
    icon: mdi:caps-lock
  - name: Boost IQ
    service: script.x8_boostiq
    icon: mdi:bootstrap
  - name: Auto Return
    service: script.x8_autoreturn
    icon: mdi:arrow-u-down-left-bold
  - name: Do Not Disturb
    service: script.x8_donotdisturb
    icon: mdi:volume-off

Debugging

I have left quite a few debug statements in the code and they may be useful to see whats happening by looking in the System Log files. The Log Viewer Addon available in the Home Assistance store can be very useful to watch the logs being updated in real time. To get the debugging to add to the logs you need to add the below text to your configuration.yaml

logger:
  default: warning
  logs:
    custom_components.robovac.vacuum: debug
    custom_components.robovac.tuyalocalapi: debug

robovac's People

Contributors

bmccluskey avatar codefoodpixels avatar dependabot[bot] avatar jonathanrobichaud4 avatar melled avatar pbuckley4192 avatar razseal avatar rustymyers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robovac's Issues

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

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

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

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'

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

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.

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.

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

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.

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

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

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

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!

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.

Unexpected error

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

[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.

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.

Lr30+ supported?

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

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

L35 hybrid+

Please,.add full support robovac L35 hybrid+

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

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

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!

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?

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'

Eufy X9 Pro

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

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.

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!

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?

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

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.

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.

"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.

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.

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)

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?

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!

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

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

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

[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.

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.