Custom Component: Dreame Vacuum

Hello everyone, I am new to this forum. Very dumb question, I have Chinese Dreame X40 Ultra Complete r2473x. Since I am not in china, it has regional local, therefore cant use it at the full potential :(. Would this forum be what I need to make it work?

Definitely noā€¦

Does the integration/vacuum reveal which room it is currently cleaning?

I want to turn on the lights for the vacuum camera :see_no_evil: following the vac.

sensor.current_room

1 Like

I have Dreame L20 Ultra , i read that i need to install beta version. I alread have integration Dreame Vaccum but ver.1.04 .Iā€™m not an expert with HA . How I can install beta version ? I suposed that it should be via File Editor, but where and how should I do with this files:

I am in the process of buying a l10s ultra so I read all of this thread. It is mentioned in some of the replies. Canā€™t remember specifically which one but it is here somewhere. So you just need to start reading!

But since it installed via HACS per the instructions on the integrations github page (link on first post in the thread) I think you choose beta version in HACS.

Hello, First Thanks for this Integration. It is really cool. It is the first vaccum, that I really can integrate into my smart home. But I have one small problem. I am new to HA and I wanted to make an automation That is only doing some rooms when I am at home,

My code looks like this:

alias: Vacc_without_roomA
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.vacc_r_A
    from: "off"
    to: "on"
conditions: []
actions:
  - action: dreame_vacuum.vacuum_clean_segment
    metadata: {}
    data:
      segments:
        - "1"
        - "3"
        - "4"
        - "6"
        - "5"
    target:
      entity_id: vacuum.l10s_pro_ultra_heat

But when I exectute the this code only room 1 is cleaned. I tried now many different variations with or without " or - . But I donā€™t get it to work where is my fault?

I didnā€™t ā€œgive upā€ as much as I realised that I canā€™t really plumb the dock in at all right now. It doesnā€™t fit in the space in the bathroom that I had originally considered installing it into, and I was told that installing it in an environment that gets very humid very regularly might be bad for the machine as well as the dust bag (which would be an excellent environment for mold growth).

Iā€™ll need to wait till I move to a new place before I can plumb it in. That isnā€™t happening for at least a few more years and by then, who knows if Iā€™ll still be using a Dreame.

Not sure but may be related to this;

Hi,
Just installed V2.0.0b16 from Hacs and so far so good with L20 Ultra :grin:
In hacs press 3 dots, select Redownload and choose the beta version


image

Hi,
I have installed the version v2.0.0b16 and imported my Dreame l20 Ultra.
I am tryng to make a custom clean mode, in my case I try use it as vacuum with below script:

alias: Osvaldo aspira corridoio
sequence:

  • target:
    entity_id: vacuum.osvaldo
    data:
    segment_id:
    - 7
    suction_level:
    - 3
    water_volume:
    - 2
    cleaning_mode:
    - 0
    repeats:
    - 1
    action: dreame_vacuum.vacuum_set_custom_cleaning
  • target:
    entity_id: vacuum.osvaldo
    data:
    segments: 7
    action: dreame_vacuum.vacuum_clean_segment
    mode: single

the issue is that when the aspiration (without the wash device instaled) has been compleated the device came back to the charging base and then restart the cleaning in the same room with wash device on.

Let me know :slight_smile:

Hi,
I have installed the version v2.0.0b16 and configured my Dreame l10s Pro Heat.
Now I Need to talk to it using the API using PHP:

What worked:

// Home Assistant URL und Long-Lived Access Token definieren
$home_assistant_url = "http://****:8123";
$access_token = "****";

//Battery level
$entity_id = "sensor.l10s_pro_ultra_heat_battery_level";

// API-Endpunkt zum Abrufen der Entity-Informationen
$url = "$home_assistant_url/api/states/$entity_id";

// HTTP-Anfrage an die Home Assistant API senden
$options = [
    "http" => [
        "header" => "Authorization: Bearer $access_token\r\n"
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

// ƜberprĆ¼fen, ob die Anfrage erfolgreich war
if ($response === FALSE) {
    die("Fehler beim Abrufen der Entity-Daten.");
}

// JSON-Antwort in ein PHP-Array umwandeln
$data = json_decode($response, true);

But I can not send any commands - I am trying this here, but Always get bad Gateway:


// Entity ID des Staubsaugers
$entity_id = "vacuum.l10s_pro_ultra_heat"; // Stelle sicher, dass dies die richtige Entity ID ist

// API-Endpunkt fĆ¼r den Dienstaufruf
$url = "$home_assistant_url/api/services/dreame_vacuum/vacuum_clean_segment";

// Daten fĆ¼r den Dienstaufruf (hier starten wir eine Reinigung, z.B. von Segmenten 3 und 5)
$data = [
    "target" => [
        "entity_id" => $entity_id
    ],
    "segments" => "3" // Passen Sie dies an, je nach gewĆ¼nschten Segmenten
];

// HTTP-Anfrage mit POST-Method an die Home Assistant API senden
$options = [
    "http" => [
        "header" => [
            "Authorization: Bearer $access_token",
            "Content-Type: application/json"
        ],
        "method" => "POST",
        "content" => json_encode($data)
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

// Ausgabe des Ergebnisses
if ($response === FALSE) {
    // Detaillierte Fehlermeldung anzeigen
    $error = error_get_last();
    die("Fehler beim AusfĆ¼hren des Dienstes: " . $error['message']);
}

Any help would be highly appreciatedā€¦

Regards,

Thorsten

Hi to all, is someone trying to use WATER HOOKUP KITs (infinity water system) on china region lock robots vacuum (like dreame x20 Pro plus++)? I watch video with setup this kind of systemss, and at the end of installation, user need go to dreame app and do ā€œcheckā€ how it works by dreame app (but chine restriction donā€™t allow that). So I find option ā€œBase Station Self Repairā€ in ā€œDreame Vacuumā€ component
{88E1E50C-49F9-42C8-A2C3-799A4523C685}
What is this, it is what I need to connect water kit or something else??. Thx for help.

Example of Dreame app menu

Hi @endyb66. Can you please show your code for automating notifications?

Hey @tasshack, hello community,

first of all, a big thanks for this great integration, I really appreciate that youā€™re working on this project in your spare time.
The support of almost all features was also the reason why I switched from my Roborock S5 Max to the Dreame X40 Ultra.

My vacuum should clean every room at least once a day. Is there a way to recognize when the last complete cleaning of a room has taken place in order to start my daily cleaning task for selected rooms that havenā€™t been vacuumed on that day yet? Until now, Iā€™ve used one helper per room, which was turned on when a certain area (in m^2) had been cleaned and turned off again at midnight. However, this has not worked very reliably, especially for smaller rooms/areas, as the sensor for the cleaned area is updated too irregularly (approx. every 45 seconds).

Is there a better solution or are there plans for a native support of a similar feature from your side in the future? In addition, this feature would also be interesting for the last mopping.

Below you can find my helpers for the Roborock integration:

Many thanks in advance :slight_smile:

Lukas

First of all, thank you for this amazing program.
I had been using version v.2.0.0b16 for several months.
Unfortunately 3 days ago my system broke and I had to reinstall home assistant.
After restoring the v.2.0.0b16 version, when I go to add the device tells me: Error Config flow could not be loaded: {ā€œmessageā€:ā€œInvalid handler specifiedā€}
This is my situation.
Home assistant OS

  • Core 2024.10.4
  • Supervisor 2024.10.3
  • Operating System13.2
  • Frontend 20241002.4

installed on Raspberry pi 4 2gb.
System Monitor Memory usage 40.3%
System Monitor Processor use 2%
Dreame vacuum L20 ultra

I tried installing almost all versions but they all give the same error.
The log reports the following errors:

2024-11-01 16:28:01.727 ERROR (SyncWorker_19) [homeassistant.util.package] Installed version for py-mini-racer resolved to None

2024-11-01 16:28:04.153 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to import_module with args ('custom_components.dreame_vacuum.config_flow',) inside the event loop by integration 'config' at homeassistant/components/config/config_entries.py, line 179: return await super()._post_impl(request, data) (offender: /usr/src/homeassistant/homeassistant/loader.py, line 1296: return importlib.import_module(f"{self.pkg_path}.{platform_name}")), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+config%22

For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module

Traceback (most recent call last):

File "<frozen runpy>", line 198, in _run_module_as_main

File "<frozen runpy>", line 88, in _run_code

File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>

sys.exit(main())

File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main

exit_code = runner.run(runtime_conf)

File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run

return loop.run_until_complete(setup_and_run_hass(runtime_config))

File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete

self.run_forever()

File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever

self._run_once()

File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once

handle._run()

File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run

self._context.run(self._callback, *self._args)

File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request

resp = await request_handler(request)

File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle

return await handler(request)

File "/usr/local/lib/python3.12/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 92, in security_filter_middleware

return await handler(request)

File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware

return await handler(request)

File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware

return await handler(request)

File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware

return await handler(request)

File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware

return await handler(request)

File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware

response = await handler(request)

File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle

result = await handler(request, **request.match_info)

File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin

return await func(self, request, *args, **kwargs)

File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper

return await method(view, request, data, *args, **kwargs)

File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 172, in post

return await self._post_impl(request, data)

File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 179, in _post_impl

return await super()._post_impl(request, data)

2024-11-01 16:28:04.176 ERROR (MainThread) [homeassistant.config_entries] Error occurred loading flow for integration dreame_vacuum: cannot import name 'MiniRacer' from 'py_mini_racer' (/usr/local/lib/python3.12/site-packages/py_mini_racer/__init__.py)

2024-11-01 16:30:27.190 ERROR (MainThread) [homeassistant.components.analytics] Error sending analytics to https://analytics-api.home-assistant.io/v1: ClientConnectorError(ConnectionKey(host='analytics-api.home-assistant.io', port=443, is_ssl=True, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=-4166104577935359009), ConnectionRefusedError(111, "Multiple exceptions: [Errno 111] Connect call failed ('0.0.0.0', 443), [Errno 111] Connect call failed ('::', 443, 0, 0)"))
> 2024-11-01 16:28:01.727 ERROR (SyncWorker_19) [homeassistant.util.package] Installed version for py-mini-racer resolved to None
2024-11-01 16:28:04.153 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to import_module with args ('custom_components.dreame_vacuum.config_flow',) inside the event loop by integration 'config' at homeassistant/components/config/config_entries.py, line 179: return await super()._post_impl(request, data) (offender: /usr/src/homeassistant/homeassistant/loader.py, line 1296: return importlib.import_module(f"{self.pkg_path}.{platform_name}")), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+config%22
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
sys.exit(main())
File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
exit_code = runner.run(runtime_conf)
File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run
return loop.run_until_complete(setup_and_run_hass(runtime_config))
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
self.run_forever()
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
self._run_once()
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once
handle._run()
File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle
return await handler(request)
File "/usr/local/lib/python3.12/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 92, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
response = await handler(request)
File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
result = await handler(request, **request.match_info)
File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
return await func(self, request, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
return await method(view, request, data, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 172, in post
return await self._post_impl(request, data)
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 179, in _post_impl
return await super()._post_impl(request, data)
2024-11-01 16:28:04.176 ERROR (MainThread) [homeassistant.config_entries] Error occurred loading flow for integration dreame_vacuum: cannot import name 'MiniRacer' from 'py_mini_racer' (/usr/local/lib/python3.12/site-packages/py_mini_racer/__init__.py)
2024-11-01 16:30:27.190 ERROR (MainThread) [homeassistant.components.analytics] Error sending analytics to https://analytics-api.home-assistant.io/v1: ClientConnectorError(ConnectionKey(host='analytics-api.home-assistant.io', port=443, is_ssl=True, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=-4166104577935359009), ConnectionRefusedError(111, "Multiple exceptions: [Errno 111] Connect call failed ('0.0.0.0', 443), [Errno 111] Connect call failed ('::', 443, 0, 0)"))

Thanks for everything

There is a sensor called cleaning history and you can access previous cleaning job details from its attributes but the data does not contain cleaned room ids.

1 Like

You need to install py_mini_racer package manually to the python virtual env that the HA is working on.

Thanks for such a quick response but unfortunately I havenā€™t made any progress.
I have tried various ways to install py-mini-racer on my Home Assistant OS installed on a raspberry pi 4 but none with success. Could you kindly direct me on how to do it. Thanks again

Of course noā€¦