Thanks for this reply! I’ve couldn’t get my X50 to only sweep. But turns out it used CleanGenius every time.
Interesting observation, so cleangenius is probably activated by default atm. This would explain several issues. Will look at it later.
Pushed current test version to stable today. Will observe if it not causes new issues. If not, then I can work on new improvements.
That doesnt work for my L20 Ultra.
The options for my X50 ultra are now totally controlled bij this app. (For the simple commands I use the matter functions.)
Could you please add 3 if cards:
- If cleaning progress % has changed
- if cleaning time has changed
- If drying progress % has changed
I use it to update the information in my html table. Thnx in advance.
The operational state does not work for my X50. The dock state does, but ther is no IF card “when the dock state changed” ….
Must be an error in your flow, share it plz
Could you let me know if it will soon be possible to retrieve the necessary components to set up workflows like this? I’d like the robot to mop the kitchen floor daily but only vacuum the living room.
Already possible
Issue: X50 Ultra returning to base mid-clean (Manual Docking status) via Cloud polling
I’ve been experiencing an issue where my X50 Ultra repeatedly stops cleaning and returns to base mid-run whenever the Dreame Cloud app is active in Homey.
When I disable the app, the robot completes its clean without issue.
I spent yesterday running the vacuum repeatedly under different scenarios to isolate the cause. Turning off my Homey flows (but leaving the app enabled) did not solve the issue. I eventually deactivated the app entirely, and the problem disappeared.
The Problem Behavior:
-
Cleaning ends prematurely at seemingly random intervals (e.g., 12 mins, 40 mins, 26 mins).
-
The Dreame app reports the interruption reason as “Manual docking.”
-
The cleaned area counter resets, confirming these are full return-to-base/cancellation events, not just pauses.
My Setup & Notes:
-
App Version: v0.0.40
-
Robot Model: Dreame X50 Ultra
-
Polling: Standard cloud polling (I am not using MQTT).
-
CleanGenius: Turned off.
-
Trigger: The issue occurs even if I start the robot manually from the Dreame app while the Homey app is running in the background.
Diagnostics Report ID: 8a204aec-4f5c-4e5e-9e55-1fd8d1ba9f05
Has anyone else seen this cloud session drop or rogue “Stop” command being sent? Is there any logging on the app side I can look at to see exactly what command Homey is sending when the robot suddenly docks?
@Neilius have you configured waypoints and/or custom zones in the Homey app settings?
Hey Pjotr, none.
Dreame v1.0.0
After lots of testing and community feedback, I’m excited to test v1.0.0 of the Dreame app for Homey (currently in testing phase, will be released to production once deemed stable).
What’s new
Multi-floor support is back, rebuilt from scratch. If your vacuum supports multiple saved maps, Homey now automatically detects this and:
- Discovers all your floors with their names from the Dreame cloud
- Shows a floor selector in app settings with per-floor map rendering
- Flow card autocomplete shows rooms/zones/waypoints with floor labels (e.g. “Kitchen (Ground Floor)”)
- Automatically switches floor before cleaning if you pick a room on a different floor
- New Switch to floor action card for use in flows
- Per-floor room list in settings with floor headers
- Single-floor users see zero changes — no extra dropdowns, cards, or noise
The previous multi-floor implementation (v0.0.24-0.0.29) was removed due to stability issues. This version uses a completely different approach: relay-based capability detection, MAP_LIST cloud object parsing for proper floor discovery, and per-floor saved maps stored separately from the active map.
Bug fixes from community reports
- X50 Ultra docking mid-clean — cloud polling was relaying commands to the device, causing it to interrupt active cleaning sessions. Switched to a read-only cloud cache endpoint based on how Tasshack does this. cc @Neilius can you test if it does not occur anymore?
- Multi-device widgets showing same data — fixed device matching to use Homey UUIDs alongside Dreame DIDs. Each widget should now correctly shows its own vacuum.
- X50 Ultra state mapping — aligned state codes with the latest Dreame firmware enum (states 19+).
- CleanGenius overriding manual settings — CleanGenius now auto-disables when you explicitly set a cleaning mode via flow card. cc @Patrickske @Jan_Albert @Thomas_Doorn can you test?
New trigger cards (cc @Jan_Albert )
- Cleaning progress changed (with percentage token)
- Cleaning time changed (with minutes token)
- Drying progress changed
- Dock state changed (washing/drying/idle/draining)
I just installed this version, but the widget consumables does not work anymore…
Excited about your changes!!!
Hi @Pjotr_Grootkop, jou did a great job! I tested the last update. The card Sweeping and Sweeping & Mopping are still switcht. If you use Sweeping & Mopping, the vacuum cleaner will switch to Sweeping. And with Sweeping to Sweeping & Mopping.
@Jan_Albert With this flow te problem still exists.
This flow card starts the last set cleaning task. Sweeping is not performed, as the flow card indicates.

I manually put my X50 in CleanGenius mode to test if setting it to “Sweeping & Mopping” or “Sweeping“ would turn off CleanGenius and set it to the right mode. And it worked! I no longer have to have the “Set CleanGenius to Off” flowcart before putting it in a custom mode. Putting it in a custom mode now automatically turns CleanGenius off.
I
The settings for clean genius mode do not work anymore. Every setting sets the X50 in stead of “mop after sweep” into “mop and sweep”. Changing the setting does not have any effect. I rolled back to version 0.4 but now same behaviour. Update: I now must first use the card “set cleaning mode”…. Will test tonight.
My html table does not work anymore. error: state-dust-collection does not exist. Update: I had to choose this state again. Is now working
Hi Pjotr, thank you for your effort, sorry to report that v1.0.0 has not fully resolved this issue.
All testing was done with the Dreame app and Homey app v1.0.0 active.
Test 1: Full apartment vacuum then mop Failed on first periodic bag-empty attempt with “cleaning interrupted / manual docking” status.
Rebooted app in case of any caching from older version.
Test 2: Mop only, 2 large rooms Returned to base after 15 m² (expected), cleaned mop normally, then resumed. Then failed after only 3 m² with “cleaning interrupted / manual docking”. Expected to complete 30 m² before stopping.
Homey insight log detail (Test 2): At the second mop-rinse dock, the onoff capability shows a brief flicker — true for approximately 15 seconds then false — before Robi resumed. Three minutes into the resumed run, onoff went false and the clean was permanently interrupted. This flicker appears to be the trigger point.
Let me know if a different test case can help.
Thanks a lot.
I cannot choose anymore to clean 2 rooms of the four. Only all or one.. If I select Keuken and then Woonkamer, Keuken disappears in the list. It is possible when I use ID’s.
If I choose “clean room strong suction” the setting remains “standard suction”
I tested again and again. My findings:
- It is not possible to use the CleanGenius mode. Changing settings via a flow does not work. I think because this mode is not standard anymore.
- The cleaning mode is working fine. I do not get errors like @Neilius
- To clean a selection of rooms I have to use the ID’s of the rooms. Selecting multiple rooms in the clean rooms card with names does not work.
- The settings in the card clean room ID’s do not work. I have to set the settings per card like “suction level” and “water volume”.
- Dock status does not change, remains on “idle”
- Switching to another floor with flowcard does not work
- The homey dreame app shows a 3rd floor, (same as first floor) which does not exist
And the widget consumables does not work. I get the error in the widget: device not found.
Thanx so much for your effort developing this app. Testing already took a lot of time……



