Xiaomi Robot Vacuum Binding

Hi! I have a Dreame Bot D9 Max (dreame.vacuum.p2259) and I cannot understand how to use map visualization/extraction. I see on another project (on hass GitHub - PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor: This custom integration provides a way to present a live view of a map for Xiaomi (Roborock/Viomi/Roidmi/Dreame) vacuums without a need for rooting. ) that was made around this binding, that my vacuum cleaner is compatible.
my openhab see my thing as:

UID: miio:generic:1F10108C
label: Dreame Bot
thingTypeUID: miio:basic
configuration:
  cloudServer: de
  refreshInterval: 30
  host: 192.168.x.y
  model: dreame.vacuum.p2259
  communication: cloud
  deviceId: "52*****8"
  timeout: 15000
  token: 744********************659

@life_is_life great. I’ll review it and hopefully we get it it merged.

In PiotrMachowski integration though he took indeed the cloud integration & map parsing based on the miio binding, he also extended it with parsing of the map formats for viomi, ro & dreame.
The miio binding only supports roborock map format. Hence it is why it does not work for your vacuum.
It would require some development to build such support also in the miio binding.

I’m trying to get Dreame L10s Ultra to work. Are there any work in progress for supporting this device? I have configured it as an generic device by now and I’m able to connect to it (direct doesn’t work, need to use cloud).

I have manage to get most of the functionality to work by configure it to be a Dreame D9 (dreame.vacuum.p2009)

Thing miio:basic:ZZZXXX "DreameBot L10s Ultra" [ host="<ip>",deviceId="<deviceid>",token="<token>",communication="cloud", cloudServer="de", model="dreame.vacuum.p2009"]

Configured as a generic device:

Thing miio:generic:ZZZXXX "DreameBot L10s Ultra" @ "1st Floor" [ host="<IP>",deviceId="<deviceId>",token="<token>",communication="cloud", cloudServer="de", model="dreame.vacuum.r2228o"]

When I run “execute a test to find supported channels” this is the result:

Properties: battery -> 95, pm25 -> 96, co2e -> 97, tvoc -> 98, humidity -> 99, temperature -> 100, co2 -> 101, bt_gateway_status -> 102, /device/get_bledevice_by_gateway -> 103, power -> 104, wifi_led -> 105, usb_on -> 106, on -> 107, OnOff_State -> 108, Humidifier_Gear -> 109, Humidity_Value -> 110, HumiSet_Value -> 111, Led_State -> 112, TipSound_State -> 113, watertankstatus -> 114, wet_and_protect -> 115, mode -> 116, ptc_on -> 117, ptc_status -> 118, display -> 119, child_lock -> 120, sound -> 121, control_speed -> 122, favourite_speed -> 123, temperature_outside -> 124, filter_rate -> 125, filter_day -> 126, ptc_level -> 127, screen_direction -> 128, filter_intermediate -> 129, filter_inter_day -> 130, filter_efficient -> 131, filter_effi_day -> 132, roll -> 133, roll_angle -> 134, timer_off -> 135, beep_sound -> 136, light -> 137, speed -> 138, dry -> 139, led -> 140, motor -> 141, drytime -> 142, airer_location -> 143, disinfect -> 144, distime -> 145, on_off -> 146, auto -> 147, fan_speed -> 148, buzzer -> 149, temp -> 150, tank_full -> 151, compressor_status -> 152, defrost_status -> 153, fan_st -> 154, alarm -> 155, bright -> 156, cct -> 157, snm -> 158, dv -> 159, sw -> 160, bl -> 161, ms -> 162, ac -> 163, mb -> 164, cid -> 165, get_switch_en -> 166, scene_num -> 167, pow -> 168, flm -> 169, ambstatus -> 170, ambvalue -> 171, dvalue -> 172, eyecare -> 173, power_consume_rate -> 174, power_price -> {"MemFree":346404,"VmPeak":371388,"VmRSS":2460,"VmSize":306076,"config_type":"app","fw_ver":"4.3.3_1125","hw_ver":"Linux","ipflag":1,"life":19640,"miio_client_ver":"4.3.3","miio_times":[19640,0,2,19605],"miio_ver":"0.0.9","model":"dreame.vacuum.r2228o","netif":{"gw":<gw>","localIp":"<ip>","mask":"<mask>"},"uid":<uid>,"uptime":38170}

175, current -> 176, lp_autooff -> 177, lp_autooff_delay -> 178, lp_threshold -> 179, switch1 -> 180, switchname1 -> 181, switch2 -> 182, switchname2 -> 183, switch3 -> 184, switchname3 -> 185, true -> 186, run_state -> 187, err_state -> 188, battary_life -> 189, box_type -> 190, mop_type -> 191, mop_route -> 192, s_time -> 193, s_area -> 194, suction_grade -> 195, water_grade -> 196, remember_map -> 197, has_map -> 198, is_mop -> 199, has_newmap -> 200, washStatus -> 201, velocity -> 202, waterTemp -> 203, targetTemp -> 204, errStatus -> 205, hotWater -> 206, needClean -> 207, modeType -> 208, appointStart -> 209, appointEnd -> 210, seat_temp -> 211, status_seatheat -> 212, water_temp_t -> 213, fan_temp -> 214, status_led -> 215, bh_mode -> 216, delayoff -> 217, nl_br -> 218, ct -> 219, rgb -> 220, color_mode -> 221, flowing -> 222, name -> 223, bg_bright -> 224, bg_power -> 225, bg_rgb -> 226, bg_ct -> 227, bg_lmode -> 228, run_status -> 229, rinse -> 230, tds_in -> 231, tds_out -> 232, f1_totalflow -> 233, f1_totaltime -> 234, f1_usedflow -> 235, f1_usedtime -> 236, f2_totalflow -> 237, f2_totaltime -> 238, f2_usedflow -> 239, f2_usedtime -> 240, f3_totalflow -> 241, f3_totaltime -> 242, f3_usedflow -> 243, f3_usedtime -> 244, f4_totalflow -> 245, f4_totaltime -> 246, f4_usedflow -> 247, f4_usedtime -> 248, maintenance_state -> 249, maintenance_interval -> 250, tds_warn_thd -> 251, tds_out_avg -> 252, lightMode -> 253, ptc_state -> 254, aqi -> 255, average_aqi -> 256, f1_hour_used -> 257, use_time -> 258, motor1_speed -> 259, led_level -> 260, temp_dec -> 261, usb_state -> 262, time_state -> 263, night_state -> 264, night_beg_time -> 265, night_end_time -> 266, f1_hour -> 267, filter1_life -> 268, favorite_level -> 269, purify_volume -> 270, volume -> 271, motor2_speed -> 272, angle_enable -> 273, angle -> 274, poweroff_time -> 275, led_b -> 276, speed_level -> 277, natural_level -> 278, ac_power -> 279, bat_charge -> 280, target_temperature -> 281, brightness -> 282, relative_humidity -> 283, theqmostat -> 284, limit_hum -> 285, trans_level -> 286, depth -> 287,

{"id":114,"method":"get_prop","params":["watertankstatus"]} -> {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":114,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1669469786656714}

{"id":196,"method":"get_prop","params":["water_grade"]} -> {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":196,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1669470125324947}

{"id":203,"method":"get_prop","params":["waterTemp"]} -> {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":203,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1669470153868772}

{"id":206,"method":"get_prop","params":["hotWater"]} -> {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":206,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1669470166097858}

{"id":213,"method":"get_prop","params":["water_temp_t"]} -> {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":213,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1669470194664963}

Execute test to find supported channels gives this:

test-dreame.vacuum.r2228o-20221126-145646.txt (70.7 KB)

suggest to try the 2nd channel (testmiot) experimental) Create experimental support for new MIOT protocol devices for trying to create support for your device as it is a miot type

Hi, I have 2 Viomi V6 vacuums and they were working so far. Recently I put firewall rule to limit their internet access an I have configuration error now. I read that it can be a token issue.
Do those devices require internet access to work with openhab?

some do, not sure if all (miio communication based) devices need it. YMMV.
The communication wrt to openhab is local (no need for internet except very few devices that communicate only with cloud)… but openhab needs the right token to communicate.

If you changed network settings on the device itself (e.g. change wifi) then the token is renewed on the device and you can’t connect to it anymore (as the cloud & openhab would not know the new token).

No, I didnt’t change the wifi settings, but I was doing some security updates on the wifi network and updated OH to the last milestone in between. I will check the tokens and see how it goes on

The tokens were not changed, maybe the thing needs to call home from time to time. I disabled internet access again and I will follow up

Hi there,

I just bought a Dreame F9 for my living room and was able to connect it to openhab.
Status, Error, Battery works fine so far, but I cannot manage to send a command.
Can somebody help me? I also would be interested to clean only a room.

Thanks in advance.

Hi there,
did not get the F9 working - so I got myself a Xiaomi Robot Vacuum-Mop 2S (ijai.vacuum.v19).
With the documented channels I could get it working so far. The only thing I am struggling with is the room clean command. I was trying to use:

Robot_Actions.sendCommand("vacuum-start-room-sweep [10]")

But it is not working. Logs say:

2022-12-28 22:38:23.678 [DEBUG] [nal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":2601,"method":"vacuum-start-room-sweep","params":[10]} -> 192.168.xxx.xxx (Device: 1033338634 token: 32684967XXXXXXXXXXXXXXXX496E3067 Queue: 1). Send via cloudserver: de
2022-12-28 22:38:23.687 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Locating action for miio:generic:3D977F0A channel 'actions': 'vacuum-start-room-sweep [10]'
2022-12-28 22:38:23.688 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.688 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.689 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.690 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.691 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.692 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[10.0] not send, condition 'matchValue' not met
2022-12-28 22:38:23.692 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:38:23.752 [DEBUG] [miio.internal.cloud.MiCloudConnector] - Send request to https://de.api.io.mi.com/app/home/rpc/1033338634 with data '{"id":2601,"method":"vacuum-start-room-sweep","params":[10]}'
2022-12-28 22:38:29.647 [DEBUG] [nal.transport.MiIoAsyncCommunication] - Command {"id":2601,"method":"vacuum-start-room-sweep","params":[10]} send via cloudserver de
2022-12-28 22:38:29.649 [DEBUG] [internal.handler.MiIoAbstractHandler] - Received response for device 3D977F0A type: UNKNOWN({"id":2601,"method":"vacuum-start-room-sweep","params":[10]}), result: null, fullresponse: {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":2601,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1672263509625611}

I also tried to get the room mapping via advanced commands but:

2022-12-28 22:43:49.074 [DEBUG] [nal.transport.MiIoAsyncCommunication] - Command {"id":2659,"method":"map-get-map-room-list","params":[]} send via cloudserver de
2022-12-28 22:43:49.076 [DEBUG] [internal.handler.MiIoAbstractHandler] - Received response for device 3D977F0A type: UNKNOWN({"id":2659,"method":"map-get-map-room-list","params":[]}), result: null, fullresponse: {"code":0,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":0,"id":2659,"message":"ok","net_cost":0,"ot_cost":0,"otlocalts":1672263829056106}
2022-12-28 22:43:44.752 [DEBUG] [nal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":2659,"method":"map-get-map-room-list","params":[]} -> 192.168.xxx.xxxx (Device: 1033338634 token: 32684967XXXXXXXXXXXXXXXX496E3067 Queue: 1). Send via cloudserver: de
2022-12-28 22:43:44.761 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Locating action for miio:generic:3D977F0A channel 'advanced_actions': 'map-get-map-room-list'
2022-12-28 22:43:44.762 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[17.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.763 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.764 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[24,25,26.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.765 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[34,33.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.766 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[33.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.766 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[38.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.767 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[43.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.768 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[24,33,38.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.768 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[34,33.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.769 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[33.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.770 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1,2,3,4,5,6,11,14,12,16.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.770 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.771 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.772 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1,2,3,4,5,6,11,12,14,16,17,19.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.772 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[11.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.773 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1,2,3,4,5,6,11,12,14,16,17,19.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.774 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.774 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[4.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.775 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.776 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[4.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.776 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.777 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[3.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.778 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[2.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.779 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[5.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.779 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.780 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.781 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.781 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.782 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6,8.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.783 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[7.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.783 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6,9,10.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.784 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6,11,13.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.784 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6,9,12,13.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.785 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.786 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[14.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.786 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[15,16.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.787 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[2.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.787 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.788 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[7.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.789 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.789 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[14.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.790 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[6,22.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.790 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1,2,3,4,5,6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.791 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[1,5,6.0] not send, condition 'matchValue' not met
2022-12-28 22:43:44.792 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Conditional command action[] not send, condition 'matchValue' not met
2022-12-28 22:43:44.815 [DEBUG] [miio.internal.cloud.MiCloudConnector] - Send request to https://de.api.io.mi.com/app/home/rpc/1033338634 with data '{"id":2659,"method":"map-get-map-room-list","params":[]}'

Any ideas?

Thanks in advance!

Quick hint: The command is not correct. It seems some mixture of a miot type command and a regular miio command.

I can’t check now if your which type your vacuum is.
But this command is sure wrong

Ok well it is this vacuum:

Xiaomi Robot Vacuum-Mop 2S (ijai.vacuum.v19)
and I use this channel:
String - Robot Cleaner - Actions:

Value mapping ["vacuum-start-sweep"="Start","vacuum-start-sweep-mop"="Start Sweep+Mop","vacuum-start-only-sweep"="Start Sweep","vacuum-start-only-mop"="Start Mop","vacuum-dock"="Dock","vacuum-stop-sweeping"="Pause","vacuum-start-room-sweep"="Start Room Sweep"]

I thought I have to add a parameter to vacuum-start-room-sweep?

for my Roborock S5 Max this works:

S5_Actions.sendCommand("app_segment_clean [16]")

That is a miot type I think. Those devices need all their commans with the right siid and aiid codes(, service id action Id) Your command is something like

Robot_Actions.sendCommand(action[ “siid”: 3,“aiid”: 1]

For the room cleaning it most likely require one more parameter like the room number

Thanks for your fast reply, may I ask for further help?

if I type in your code I get the following error in the logs:

.rules' has errors, therefore ignoring it: [17,47]: mismatched input ':' expecting ']'

then I tried putting the whole thing in ’ ’

Robot_Actions.sendCommand('action[ "siid": 7,"aiid": 3,"params": 10]')

But nothing happened…

Does the item I send the command to has to be linked to the actions-channel or the advanced action-channel?

yes, was typing the command on my phone… you need to get indeed the outer quotes right.

Here you get a hint of parameters to send Unsupported model ijai.vacuum.v19 · Issue #1394 · rytilahti/python-miio · GitHub
If you found the right way, do share it here on the forum for others with a little explaination.

You need to send it to the commands channel… so whatever item channel you like to the channel see screenshot for some pointer

Ok I found my first mistake I used the Action-Channel not the Command Channel… thanks for helping me there!

Know Commands like the following are working.

Robot_Command.sendCommand('action{"did":"vacuum-start-sweep","siid":2,"aiid":1,"in":[]}')

I used the siid and the aiid from this site: Xiaomi Robot Vacuum-Mop 2S

But I don’t get anything working like:

Robot_Command.sendCommand('action{"did":"vacuum-start-room-sweep","siid":2,"aiid":7,"in":[10.10]}')

As soon as I use a input parameter the code does not work and I do not get a result in the command channel.

For the map Id I received a result:

Robot_Command.sendCommand('action{"did":"vacuum-get-map-list","siid":10,"aiid":1,"in":[]}')

result was:

{"code":0,"exe_time":21,"id":8270,"message":"ok","net_cost":158,"ot_cost":0,"otlocalts":1672436897658788,"result":{"code":0,"out":[{"piid":4,"value":"[{\"name\":\"WZ\",\"id\":1672242617,\"cur\":true}]"}]}}

But I’m not able to receive the room id:

Robot_Command.sendCommand('action{"did":"vacuum-get-map-room-list","siid":10,"aiid":13,"in":[2. 1672242617]}')

Can you give me another hint how to use the parameter correct?

Btw. also tried:

Robot_Command.sendCommand('action{"siid":7,"aiid":3,"in":[24.10,25.0,26.1]}')

But only this result:

{"code":0,"exe_time":30,"id":8941,"message":"ok","net_cost":39,"ot_cost":0,"otlocalts":1672441179818472,"result":{"code":0}}

And the logs say:

2022-12-30 23:59:39.844 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Could not identify channel for action. Device miio:generic:3D977F0A has 53 commands in queue.

And I don’t know worth mentioning the robot makes a noise like “bling” whenever I send the last command (for param 24 I tried 10-21).

Happy new Year!

SIID/AIID

Following this site I would say that the correct command to clean a room is:

'action{"did":"set-room-clean","siid":7,"aiid":3,"in":[24,25,26],"out":[]}'

siid 7=sweep
aiid 3=set-room-clean
input-parameter is:
24=clean-room-ids (string)
25=clean-room-mode (unit8); 0 - Global, 1 - Edge
26=clean-room-oper (unit8); 0 - Stop, 1 - Start, 2 - Pause, 3 - Fake Pause

'action{"did":"set-room-clean","siid":7,"aiid":3,"in":[24.10,25.0,26.1],"out":[]}'

But it does not work for me…

Also this one does not work:

'action{"did":"start-room-sweep","siid":2,"aiid":7,"in":[10]}'

siid 2=Robot Cleaner
aiid 7=start-room-sweep
input-parameter is: 10 - room-ids (string)

I guess I don’t get the last bracket right but I don’t know where my mistake is…

1 Like

try 'action["did":"set-room-clean","siid":7,"aiid":3,"in":[24.10,25.0,26.1],"out":[] ]'

the binding takes the first as what it sends as method and than looks for all between the square brackets. I 'm not 100% sure what it does with the curled brackets { .
If you look into the debug log you see what it is actually sending to the robot.
Also will suggest to try to switch off the cloud connectivity (unless your setup actually requires it)

‘action[“did”:“set-room-clean”,“siid”:7,“aiid”:3,“in”:[24.10,25.0,26.1],“out”:[]]’
Well without the curled brackets it gives me the following errors:

2023-01-03 20:54:23.148 [WARN ] [nal.transport.MiIoAsyncCommunication] - Send command 'action' with parameters ["did":"set-room-clean","siid":7,"aiid":3,"in":[24.10,25.0,26.1],"out":[]] -> 192.168.1.40 (Device: 1033338634) gave error com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 8 path $[1]

‘action{“did”:“set-room-clean”,“siid”:7,“aiid”:3,“in”:[24.10,25.0,26.1]}’
When send with the curled brackets I receive the following:

2023-01-03 20:56:53.407 [DEBUG] [nal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":3443,"method":"action","params":{"did":"set-room-clean","siid":7,"aiid":3,"in":[24.10,25.0,26.1]}} -> 192.168.1.40 (Device: 1033338634 token: 32684967XXXXXXXXXXXXXXXX496E3067 Queue: 1).
2023-01-03 20:56:53.486 [DEBUG] [internal.handler.MiIoAbstractHandler] - Received response for device 3D977F0A type: ACTION, result: {"code":0}, fullresponse: {"id":3443,"result":{"code":0},"exe_time":20}
2023-01-03 20:56:53.488 [DEBUG] [io.internal.handler.MiIoBasicHandler] - Could not identify channel for action. Device miio:generic:3D977F0A has 7 commands in queue.

Can you help me if I provide further information from the logs?

And I did as you told me:

I only activated cloud at my other three robots (2x Roborock S5Max and 1x Xiaomi V1) because of the map-image. But as far as I can see there is no map available with this model?