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 commandget_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