Skip to content

Support o073ti (X11 Pro Omni): strict MapSet_V2 parsing, freeClean agentInfo area cleaning, and new lifespan types#1463

Open
33Moka33 wants to merge 6 commits intoDeebotUniverse:devfrom
33Moka33:feat/o073ti-x11-mapset-v2
Open

Support o073ti (X11 Pro Omni): strict MapSet_V2 parsing, freeClean agentInfo area cleaning, and new lifespan types#1463
33Moka33 wants to merge 6 commits intoDeebotUniverse:devfrom
33Moka33:feat/o073ti-x11-mapset-v2

Conversation

@33Moka33
Copy link

@33Moka33 33Moka33 commented Mar 3, 2026

Summary

  • Add support for o073ti (DEEBOT X11 PRO OMNI)
  • Tighten getMapSet_V2 room subset parsing to known formats (len == 10 or len == 11)
  • Add freeClean area cleaning command with agentInfo payload support for newer robots
  • Switch o073ti area cleaning capability to the new freeClean + agentInfo command
  • Add missing lifespan types seen on newer devices
  • Extend tests for map parsing, cleaning payloads, hardware wiring, and lifespan parsing

Problem

For DEEBOT X11 PRO OMNI (class: o073ti):

  • Device class support was incomplete
  • Room subset parsing needed to handle newer payload variant with an extra field
  • Room cleaning on newer robots requires clean_V2 with type=freeClean and agentInfo
  • New lifespan types were returned by devices but not recognized

Changes

1) Hardware support

  • Added/updated o073ti hardware profile:
    • deebot_client/hardware/o073ti.py

2) MapSet_V2 room subsets

  • Updated room subset handling to be explicit and strict:
    • accept only subset lengths 10 or 11 (instead of broad >= 10)
  • Kept parser comments aligned with the observed extra trailing field variant

3) freeClean area cleaning for newer robots

  • Added CleanAreaFreeCleanAgentInfo:
    • deebot_client/commands/json/clean.py
  • Behavior:
    • Sends clean_V2 with content.type = "freeClean"
    • Uses app-like room encoding in content.value:
      • single room: "<count>,<room_id>"
      • multi-room: "<count>,<room_id>;<count>,<room_id>..."
    • Supports:
      • global cleanings: int
      • per-room cleanings: list[int]
    • Builds and injects agentInfo payload for compatible devices

4) Wire command into command registry and hardware capability

  • Exported/registered new command:
    • deebot_client/commands/json/__init__.py
  • Switched o073ti clean area capability to CleanAreaFreeCleanAgentInfo:
    • deebot_client/hardware/o073ti.py

5) Lifespan types

  • Added missing LifeSpan enum values:
    • heavyDutyCleaningSolution
    • dustBucket
    • dustContainerFilter
  • File:
    • deebot_client/events/__init__.py

Tests

  • Added/updated tests:
    • tests/commands/json/map/test_init.py
      • room subsets with extra field variant
    • tests/commands/json/test_clean.py
      • freeClean value format (single/multi-room)
      • agentInfo injection
      • per-room cleaning cycles
      • custom agent_info overrides
    • tests/hardware/test_init.py
      • o073ti uses CleanAreaFreeCleanAgentInfo
    • tests/commands/json/test_life_span.py
      • coverage for new lifespan types

Real device validation (X11 Pro Omni)

  • Device is recognized
  • Basic actions work (start, pause, stop, return_to_base)
  • Room cleaning works with freeClean + agentInfo
  • Multi-room cleaning works with app-like content.value format
  • Lifespan parsing warnings for the new types are resolved

@33Moka33 33Moka33 marked this pull request as draft March 5, 2026 10:25
@33Moka33 33Moka33 changed the title Support o073ti (X11 Pro Omni) and handle MapSet_V2 room subsets with extra fields Support o073ti (X11 Pro Omni): strict MapSet_V2 parsing, freeClean agentInfo area cleaning, and new lifespan types Mar 6, 2026
@33Moka33 33Moka33 marked this pull request as ready for review March 6, 2026 18:52
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.

1 participant