Skip to content

Add T90 OMNI clean action support - #1850

Open
LeszekSwirski wants to merge 2 commits into
DeebotUniverse:devfrom
LeszekSwirski:add-t90-omni-7fpaed-commands
Open

LeszekSwirski wants to merge 2 commits into
DeebotUniverse:devfrom
LeszekSwirski:add-t90-omni-7fpaed-commands

Conversation

@LeszekSwirski

Copy link
Copy Markdown

Summary

  • extend the 7fpaed profile with the clean-command serialization used by the DEEBOT T90 OMNI
  • send Start, Pause, and Resume using the ROP header and full auto-clean content expected by this model
  • send Stop with the action-only body used by the official app
  • continue inheriting all other capabilities from the existing twunby profile

Relationship to other PRs

This is stacked on #1849; its first commit is the same minimal 7fpaed profile addition. Once #1849 merges, this PR should contain only the T90-specific command override.

This complements #1710. That PR handles selected-room cleaning with clean_V2/freeClean, while this PR handles the whole-home Start, Pause, Resume, and Stop actions for device class 7fpaed.

Protocol details

Start, Pause, and Resume use:

  • header version 0.1
  • priority 1
  • a millisecond timestamp
  • channel ROP
  • content type auto and noVoiceResp 0

Stop remains action-only and uses the existing JSON command header.

Real-device validation

Tested with a physical DEEBOT T90 OMNI, device class 7fpaed, firmware 1.103.0, through Home Assistant 2026.9.4:

  • Start completed mop preparation, left the station, and began auto cleaning
  • Pause was acknowledged and stopped movement
  • Start while paused serialized as Resume, was acknowledged, and resumed movement
  • Stop was acknowledged with code 0 and the robot reported idle
  • returning to the station still worked after the test

After Stop, Home Assistant temporarily retained its previous cleaning state even though the device reported idle. This is an existing incoming onWorkState handling limitation and is separate from command serialization.

Tests

  • focused 7fpaed pytest: passed
  • Ruff check and format: passed
  • mypy for the changed source and test: passed
  • git diff --check: passed

@fracrm

fracrm commented Oct 8, 2026

Copy link
Copy Markdown

It works also for ECOVAS T90 MAX OMNI mapping:

qqp88t -> 7fpaed.py

Result:

Device is discovered correctly.
vacuum.start works.
vacuum.send_command works.
Water flow control works.
Work mode selection works.
Station actions (dry mop, empty dustbin) work.
Cleaning statistics are reported correctly.

Someone can integrate in new release, please.

This branch has not been deployed

No deployments
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.

2 participants