Support of Xiaomi vacuum mop 2 pro (ijai.vacuum.v3)

I managed to get “point” cleaning to work.
That’s limited to a 2m x 2m area but that’s the only way to somehow clean a particular area without calling a global cleanup… (I tested the whole API like @shax, trying to get ‘rooms’ without any other success).

To set up that correctly:

  • open the mobile app and select a “target point” to clean 2x2m,
    and run the command get_property_by 9 5 to read the point coordinates. The output will be for example: [{'value': '2.333,-2.145', 'did': '9-5', 'siid': 9, 'piid': 5, 'code': 0}]
  • Set the point (if you want to use more points you have to set them before starting cleaning): set_property_by 9 5 '2.333,-2.145'
  • start the “point cleaning”: call_action_by 9 1

*Today, I additionally had to make sure to disable “mopping”, I added set_property by 2 4 0 to my automation.

I’m using appdaemon, so my code looks like this:


def init_vacuum():
    return MiotDevice(ip="192.168.*.*", token="*********")  # paste your IP & token :)


def run_vacuum_point(vacuum, target):
    vacuum.set_property_by(siid=2, piid=4, value=0)
    vacuum.set_property_by(siid=9, piid=5, value=target)
    vacuum.call_action_by(siid=9, aiid=1)


def run_vacuum_point_door(vacuum):
    target = '2.333,-2.145'
    run_vacuum_point(vacuum, target)


def run_vacuum_point_kitchen(vacuum):
    target = '-0.008,-6.234'
    run_vacuum_point(vacuum, target)

In the Appdaemon addon, add python-miio to python packages in the configuration