What entities do you get ?
Hello all, I’ve bought a Ecovacs Omni T50 Pro and installed it in HA. I can start and stop the robot but can’t choose an area (room). Any idea why?
@oracle Did you use Matter over Wifi for the Integration in HASS?
I cant choose an area either.
I think Ecovacs didn’t implemented this feature into the Matter protocoll yet
I tried it with both, the standard ecovacs integration as well as the matter integration. There are less options in the matter integration. However, there are no rooms available in both. We may have to wait until they provide a fix.
Btw: If I use apple home, it works fine including the rooms.
They did. Area selection is available when controlling the vacuum from Apple Home app via Matter. Vacuum implementation in Home Assistant Matter Server seems incomplete.
When it comes to Ecovacs integration - client.py library does not currently support newer bots completely. Map, area, water amount, station functions etc support is missing or incomplete.
Any news? I have a Deebot T50 Omni Pro, but I can’t get it to start. It’s currently fully charged.
Is there any update regarding the map issue? I recently updated to Home Assistant 2025.11 and I have a Deebot X9 Pro Omni, but I am still unable to view the map. Do you know if a solution is being developed?
Can the ecovacs t50 be blocked from internet connection once it is integrated in HA? That way I could control it completely on local network without cloud access?
Since custom water amount I was campaigning for was recently added and maps for newer bots got implemented I decided to again attempt creating more functional hardware file for Deebot T50 Max Pro Omni which turned out to be easy since there was already a functional file for X8 Pro Omni - it’s the same generation bot so all I had to change was to add round mop lifetime support.
I already submitted pull request to the Deebot client.py library github so hopefully it will ship with HA by default some time in the future.
In the meantime if anyone wants to try it out instructions are basically identical as before but some paths have changed:
- SSH into your HAOS or use the Terminal addon
- execute the following commands:
docker exec -it $(docker ps -f name=homeassistant -q) bashcd /usr/local/lib/python3.13/site-packages/deebot_client/hardwaremv c8rj4y.py c8rj4y.py.oldwget https://raw.githubusercontent.com/ClassicGOD/client.py/refs/heads/dev/deebot_client/hardware/c8rj4y.py
- restart Home Assistant
if you want to try it with other hardware than T50 Max Pro Omni you have replace the last 2 commands with:
mv [your_hw_id].py [your_hw_id].py.oldwget https://raw.githubusercontent.com/ClassicGOD/client.py/refs/heads/dev/deebot_client/hardware/c8rj4y.py -O [your_hw_id].py
Hi there,
is there any update to this? I would like to run a scenario from HA but the only action I see is “clean”. Is it possible to use action via the HA integration?
My scenario is that I want to capture the event that my litter robot detected the cat doing her business and IF my baby sound machine is not on, run the vacuums “clean litter” scenario and spot clean around her litter box. I have all pieces besides scenario clean.
Hi all,
I am also interested in accessing the scenarios of the T50 family from HA.
I have never done this, but I am happy to contribute to try to reverse engineer the API. If anyone know where to start or a project that already implements these, please let me know!
Are there any news? Its more than a year now and undortunately the Integration ist useless without the ability to start scenarios or at least choose rooms. And obviously it IS possible via matter because it works within Apple Home…
Thank you all!
AFAIK it has been working for a long time. It’s just not intuitive how to set it up.
Read the “Mapping your vacuum areas to Home Assistant areas” and “Sending your vacuum to clean specific areas” sections.
It should be working for both Ecovacs and Matter integrations (at least it can be set up, I can’t test it now because my fresh water tank is empty and I’m lazy as f***).
They did add this to HA with the 2026.3.1 release. You can now map the Deebot room names to area names in HA and then run automations based on those areas.
Although I’ve got a DEBOOT T80S OMNI I wanted to thank you A TON!
This worked like a charm (by using my device ID of course)! ![]()
Hi all. I got Scenario Clean working for my ECOVACS T50 Pro in Home Assistant. I was able to set-up room cleaning with the release that came up previously this year, but that did not allow me to use the scenarios I have configured in the app, which allow me to determine everything from water to clean type for every room
I worked with AI to iterate towards a solution, and I asked it to provide a guide for the community too. This method works reliably for me. Enjoy!
Step 1. Find the scenario IDs
The scenario IDs, i.e., the Quick Command IDs or QCIDs, can be pulled from Home Assistant debug logs for the ECOVACS integration.
Enable debug logging for the ECOVACS integration
In the integration page, top-right corner>enable debug logging
Open the logs (though you will also get them downloaded when you disable integration debugging)
Go to Settings > System > Logs and open the full raw log.
Trigger the scenario list from your phone app.
Open the ECOVACS app and go to the Scenario Clean page, or trigger a scenario from the app. That causes ECOVACS to send a getQuickCommand payload, which contains the scenario names and their IDs.
Search the log for:
getQuickCommand
You should see entries like this:
{"name":"Vac Only","qcid":"9999"}
{"name":"Mop Only","qcid":"8888"}
{"name":"Daily Clean","qcid":"7777"}
{"name":"Mop after Vac","qcid":"6666"}
Those qcid values are the scenario IDs you need for qcClean.
2. Create a script that runs qcClean using the clean_V2 command.
2.1 Important gotcha
A single generic script that passes the scenario ID dynamically did not work reliably, because Home Assistant kept coercing the QCID into an integer instead of leaving it as a string.
For example, this failed because the value was sent as an integer:
value: 5012
What worked was using individual scripts with the QCID hard-coded as a quoted string:
value: "5012"
If your logs show format error from ECOVACS, check whether Home Assistant is sending the QCID as an integer instead of a string.
3. Working scripts
Replace vacuum.your_vacuum with your own vacuum entity ID.
Vac Only
ecovacs_scenario_vac_only:
alias: Ecovacs Scenario Vac Only
mode: single
sequence:
- action: vacuum.send_command
target:
entity_id: vacuum.your_vacuum
data:
command: clean_V2
params:
act: start
content:
type: qcClean
value: "9999"
4. Wrap it up into a chooser script
In order to have a single script, you can create a wrapper script that lets you choose the scenario name and then calls one of the fixed scripts above.
ecovacs_run_scenario:
alias: Ecovacs Run Scenario
mode: single
fields:
scenario_name:
name: Scenario
required: true
default: Daily Clean
selector:
select:
mode: dropdown
options:
- "Vac Only"
- "Mop Only"
- "Daily Clean"
- "Mop after Vac"
sequence:
- choose:
- conditions: "{{ scenario_name == 'Vac Only' }}"
sequence:
- action: script.ecovacs_scenario_vac_only
- conditions: "{{ scenario_name == 'Mop Only' }}"
sequence:
- action: script.ecovacs_scenario_mop_only
- conditions: "{{ scenario_name == 'Daily Clean' }}"
sequence:
- action: script.ecovacs_scenario_daily_clean
- conditions: "{{ scenario_name == 'Mop after Vac' }}"
sequence:
- action: script.ecovacs_scenario_mop_after_vac
5. Summary
- Get the scenario IDs from the
getQuickCommanddebug log. - Use
command: clean_V2withtype: qcClean. - Pass the QCID as a quoted string.
- If dynamic scripts keep converting the value to an integer, use one fixed script per scenario and optionally a wrapper script to choose between them.
Hopefully this saves someone else a lot of time.

