Skip to content

Add freeClean support for newer robots#1458

Open
JBG-brad wants to merge 2 commits intoDeebotUniverse:devfrom
JBG-brad:fix/huhcip-free-clean
Open

Add freeClean support for newer robots#1458
JBG-brad wants to merge 2 commits intoDeebotUniverse:devfrom
JBG-brad:fix/huhcip-free-clean

Conversation

@JBG-brad
Copy link
Copy Markdown

@JBG-brad JBG-brad commented Feb 28, 2026

Summary

Newer robots like the DEEBOT X11 OmniCyclone and X9 PRO OMNI use the freeClean clean type instead of spotArea for room cleaning via clean_V2. Without this change, room cleaning commands fail with error 20011 "unknown type".

  • Adds FREE_CLEAN value to the CleanMode enum
  • Adds CleanAreaFreeClean command class that sends {"type": "freeClean", "value": "<cleanings>,<room_ids>"}
  • Updates the huhcip (ilt3k8) hardware definition to use CleanAreaFreeClean
  • Adds test cases for the new command class

Follow-up to #1457.

Testing

Tested on a DEEBOT X11 OmniCyclone — room cleaning commands now work correctly via Home Assistant.

Edit:

Misunderstanding how the hardware definitions work; I assumed the X9 PRO OMNI was the same as the X11. A new PR is coming to define the X11 OmniCyclone.

JBG-brad and others added 2 commits February 28, 2026 16:36
Newer robots like the DEEBOT X11 OmniCyclone use the freeClean clean
type instead of spotArea for room cleaning via clean_V2. Without this,
room cleaning commands fail with error 20011 "unknown type".

Adds CleanAreaFreeClean command class and FREE_CLEAN enum value, and
updates the huhcip hardware definition to use it.

Follow-up to DeebotUniverse#1457.
The X11 OmniCyclone (huhcip) has different capabilities than the X9
PRO OMNI (ilt3k8) and will get its own standalone hardware definition
in a follow-up PR.
Copy link
Copy Markdown
Member

@edenhaus edenhaus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is freeClean just used for Area/Room cleaning or also for other things?

@JBG-brad
Copy link
Copy Markdown
Author

JBG-brad commented Mar 1, 2026

Is freeClean just used for Area/Room cleaning or also for other things?

As best as I can tell it's just the for area cleaning.

Theres some nonsensical (I haven't deciphered it yet) data associated with freeClean that I think is to send the robot to clean only a carpet in the room.

@shmuelzon
Copy link
Copy Markdown
Contributor

shmuelzon commented Mar 6, 2026

Hey @JBG-brad, I was just looking into this since HA added the clean_area action and I see the same is also true for my X9 Pro (lwmdoj) but I believe it'll be the same for the X9 Omni too (ilt3k8).
Is there a reason why you reverted the change that fixed this functionality there too and opted to create a new file for the X11? If it's just that you didn't know if it's relevant for those model then I can confirm that it is.

My app sends the same clean_V2 when cleaning two rooms (where the room IDs are 15 and 12) with:

{
    "data": {
        "act": "start",
        "content": {
            "type": "freeClean",
            "value": "1,15;1,12"
        }
    }
}

The only thing that doesn't seem to match from your PR is the value. Where you wrote:

"value": f"{cleanings},{','.join(str(int(i)) for i in area)}",

I would have expected something like the following:

"value": ";".join(f"{cleanings},{int(i)}" for i in area),

(Not even sure what the cleanings/1 value really is)

return args


class CleanAreaFreeClean(CleanV2):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please merge this command into the clean area above as the only difference is, how the value is specified.
So create a if statement to change it in case of free clean

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants