Xiaomi Robot Vacuum Binding

Yes, via the app the notification is send.
I should have more clear… Via the direct way, how the binding communicate there is no notification.

The notification are only send to the cloud, to which we don’t have a connection (as it is encrypted)

hmmm, that’s not good indeed. I’m not sure if I will use it then, because I don’t want to use cloud services. We will see :slight_smile:

Is the new Xiaomi Mi Robot 1S (2. Generation) — not the Roborock S6 — working with this binding?

The new Xiaomi mi robot 1S is the one without water tank, only dust collection.

Hi Stefan,

what does this do on your sitemap?

main_brush_work_time=“Hoofdborstel”

Especially the first part. Where does this value come from?

Hi Stefan,

It resets the consumable. That is the variable that you pass to ConsumablesConsumableReset so the binding knows which consumable to reset.

String ConsumablesConsumableReset "Reset Consumable" {channel="miio:vacuum:03DA5D4B:consumables#consumable_reset"}

See https://github.com/marcelrv/XiaomiRobotVacuumProtocol for all known available commands.

Those specific items come from: https://github.com/marcelrv/XiaomiRobotVacuumProtocol/blob/master/get_consumable.md

2 Likes

Hi Marcel, I tried everything to set up OH for my Roborock S6 but failed… there was no way to get anything except network info :frowning: - since the S6 is a very successful and popular device, can we hope for an official support in the near future?

hallo Dirk,

I did not have the chance yet to read up on the commands for the S6.
Have you tried overriding the modelId with rockrobo.vacuum.v1 (in the edit thing in paperUI)
It will by default vome with the rockrobo v6, but if you change it, we can see how alike the 2 devices are.
There is a good chance most channels will just work

If you set the log level to debug, you can see what commands are accepted and which not

Which xiaomi or roborock devices will work with your binding?

Roborock S5 and S6 ?
Xiaomi v1 and v2 ?

Hello Marcel,
sorry for the lengthy answer, maybe I did something wrong, so I list all the steps I made - here’s what I did:

  1. install binding “Xiaomi Mi IO Binding”, then I have 2 things. I retrieved the token and added it to the 2 things, they then went online.

Xiaomi Mi Device 0F82C10B (260227339) roborock-vacuum-s6_miio260227339

Properties:

hardwareVersion	Linux
modelId	roborock.vacuum.s6
vendor	Xiaomi

Channels:
Network

SSID
miio:unsupported:0F82C10B:network#ssid
String

BSSID
miio:unsupported:0F82C10B:network#bssid
String

RSSI
miio:unsupported:0F82C10B:network#rssi
Number

Life
miio:unsupported:0F82C10B:network#life
Number

Actions

Power On/Off
miio:unsupported:0F82C10B:actions#power
Switch

Execute Command
miio:unsupported:0F82C10B:actions#commands
String

(experimental)Execute Test Commands
miio:unsupported:0F82C10B:actions#testcommands
Switch

and

Unknown Mi IO Device

Properties:

hardwareVersion	Linux
modelId	roborock.vacuum.s6
vendor	Xiaomi

Channels:
Network

SSID
miio:generic:0F82C10B:network#ssid
String

BSSID
miio:generic:0F82C10B:network#bssid
String

RSSI
miio:generic:0F82C10B:network#rssi
Number

Life
miio:generic:0F82C10B:network#life
Number

Actions

Power On/Off
miio:generic:0F82C10B:actions#power
Switch

Execute Command
miio:generic:0F82C10B:actions#commands
String

(experimental)Execute Test Commands
miio:generic:0F82C10B:actions#testcommands
Switch
  1. then I disabled Unknown Mi IO Device and edited Xiaomi Mi Device 0F82C10B (260227339) roborock-vacuum-s6_miio260227339 and set Device Model String to rockrobo.vacuum.v1. Nothing happened, everything is like before. The log shows:
20:53:13.929 [INFO ] [ding.miio.handler.MiIoAbstractHandler] - Mi Device model roborock.vacuum.s6 has model config: rockrobo.vacuum.v1. Unexpected unless manual override
20:53:13.930 [INFO ] [ding.miio.handler.MiIoAbstractHandler] - Mi Device model roborock.vacuum.s6 identified as: Unknown Mi IO Device (unknown). Matches thingtype miio:unsupported
20:53:13.931 [INFO ] [smarthome.event.ItemStateChangedEvent] - miNetLife changed from 62843 to 62889
20:53:15.286 [DEBUG] [g.miio.handler.MiIoUnsupportedHandler] - Periodic update for 'miio:generic:0F82C10B' (miio:unsupported)
20:53:15.286 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":34,"method":"miIO.info","params":[]} -> 192.168.178.46 (Device: 0F82C10B token: ... Queue: 1)
20:53:15.287 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Sending Ping 0F82C10B (192.168.178.46)
20:53:15.292 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Ping 0F82C10B (192.168.178.46) success
20:53:15.345 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 0F82C10B type: MIIO_INFO, result: {"hw_ver":"Linux","fw_ver":"3.5.4_0622","ap":{"ssid":"...","bssid":"...","rssi":-49},"netif":{"localIp":"192.168.178.46","mask":"255.255.255.0","gw":"192.168.178.1"},"model":"roborock.vacuum.s6","mac":"50:EC:50:02:05:E4","token":"...","life":62941}, fullresponse: {"partner_id":"","id":34,"code":0,"message":"ok","result":{"hw_ver":"Linux","fw_ver":"3.5.4_0622","ap":{"ssid":"...","bssid":"...","rssi":-49},"netif":{"localIp":"192.168.178.46","mask":"255.255.255.0","gw":"192.168.178.1"},"model":"roborock.vacuum.s6","mac":"50:EC:50:02:05:E4","token":"...","life":62941}}

Is there anything I did wrong or can I try something else?

Thanks so much for your help!
Dirk

1 Like

Can you try adding the thing manually as a miio:vacuum thing, than at least the channels etc will be fine (that bypasses part of the initiation logic).
I checked shortly and as far as I can see most commands look similar.

It worked! Thank you so much - looks a lot better now:

21:58:26.957 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 83ab5157 type: DND_GET, result: [{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":0}], fullresponse: {"result":[{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":0}],"id":94}
21:58:26.966 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 83ab5157 type: CLEAN_SUMMARY_GET, result: [35499,584237500,18,[1568922833,1568475890,1568470190,1568467462,1568463967,1568463838,1567875726,1567874020,1567872010,1567248102,1566736196,1566736038,1566734697,1566725625,1566722774,1566722707,1566655066,1566635978]], fullresponse: {"result":[35499,584237500,18,[1568922833,1568475890,1568470190,1568467462,1568463967,1568463838,1567875726,1567874020,1567872010,1567248102,1566736196,1566736038,1566734697,1566725625,1566722774,1566722707,1566655066,1566635978]],"id":95}
21:58:26.977 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 83ab5157 type: GET_STATUS, result: [{"msg_ver":2,"msg_seq":52,"state":8,"battery":100,"clean_time":15,"clean_area":140000,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"water_box_status":1,"fan_power":102,"dnd_enabled":0,"map_status":3,"lock_status":0}], fullresponse: {"result":[{"msg_ver":2,"msg_seq":52,"state":8,"battery":100,"clean_time":15,"clean_area":140000,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"water_box_status":1,"fan_power":102,"dnd_enabled":0,"map_status":3,"lock_status":0}],"id":96}
21:58:26.984 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 83ab5157 type: MIIO_INFO, result: {"hw_ver":"Linux","fw_ver":"3.5.4_0622","ap":{"ssid":"...","bssid":"...","rssi":-37},"netif":{"localIp":"192.168.178.46","mask":"255.255.255.0","gw":"192.168.178.1"},"model":"roborock.vacuum.s6","mac":"50:EC:50:02:05:E4","token":"...","life":66852}, fullresponse: {"partner_id":"","id":97,"code":0,"message":"ok","result":{"hw_ver":"Linux","fw_ver":"3.5.4_0622","ap":{"ssid":"...","bssid":"...","rssi":-37},"netif":{"localIp":"192.168.178.46","mask":"255.255.255.0","gw":"192.168.178.1"},"model":"roborock.vacuum.s6","mac":"50:EC:50:02:05:E4","token":"...","life":66852}}
21:58:26.994 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 83ab5157 type: CONSUMABLES_GET, result: [{"main_brush_work_time":35518,"side_brush_work_time":35518,"filter_work_time":35518,"filter_element_work_time":34962,"sensor_dirty_time":35499}], fullresponse: {"result":[{"main_brush_work_time":35518,"side_brush_work_time":35518,"filter_work_time":35518,"filter_element_work_time":34962,"sensor_dirty_time":35499}],"id":98}

I will check the commands listed on your Github page as soon as I find the time and let you know the results. Thanks again and if you need a tester for a future integration of the S6 just let me know, I’ll be happy to help.

No one an idea?

Great binding, thanks for sharing.
Seems to work with my S6, setting the thing manually:
Thing miio:vacuum:xiaomi “Robbie” [ host=“xxx.xxx.x.xxx”, token=“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”, deviceId=“xxxxxxxx”, model=“rockrobo.vacuum.s6”, refreshInterval=“30”, timeout=“1500” ]

Fan mapping:
Switch item=actionFan mappings=[101=“Quiet”, 102=“Balanced”, 103=“Turbo”,104=“Max”, -1=“OFF”]

3 Likes

Want to thank @marcel_verpaalen and others for this great binding. I have several Philips downlights and used the MIIO binding to control it. Fugured out the token using an older version of the MiHome app and it’s token exposure in the logfiles. After adding the token, it was recognized correctly. (Implemented power channel only at this moment)

Hi!

is it possible to create a .things - file?
after eacht milestone / recovery of the system i have to discover the device and copy/paste the token manually.

It is, and it´s stated in the docs of the miio binding.

thanks for poking me in the right direction :slight_smile:
i got it now. somehow i missed it reading the docs …

Hello,

I have the issue that my Yeelight LED Ceiling Lamp v4 (JIAOYUE 650) Thing always looses the connection. In openhab it is still shown as Online but I can not control it anymore.

So I tried a few things only if I change the Token to something else and then back to the correct token, It starts working again or if I remove the thing and add it again.

I need to do that at least twice a day. Any suggestions for a solution to that ?


Different question regarding the Docs of this binding:

I saw these two entries:
Yeelight LED Ceiling Lamp v4 (JIAOYUE 650 RGB) (yeelink.light.ceiling4) Channels

And just below that entry this one:
Yeelight LED Ceiling Lamp v4 (yeelink.light.ceiling4.ambi) Channels

What is the difference between them ?


And my third question how would my code for a things file need to look like?

Like this:
Thing miio:basic “Test” [ host=“192.168.x.xx”, token=“XXXXXXXXX”, deviceId=“XXXXXX”, model=“WHICH MODEL DO I NEED TO ADD HERE?”]

You can compare the various yeelight Database files

To see which channels are defined for the lights.
If your model is not there or not all features you see in the mihome app are three you can maybe experiment with the command channel the additional commands/properties of your light.

Wet to your disconnect issue… What is the debug log showing a when you have no more connection?
Can you increase the time between the refresh

Great binding, thanks for sharing.
Seems to work with my S6, setting the thing manually:
Thing miio:vacuum:xiaomi “Robbie” [ host=“xxx.xxx.x.xxx”, token=“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”, deviceId=“xxxxxxxx”, model=“rockrobo.vacuum.s6”, refreshInterval=“30”, timeout=“1500” ]
Fan mapping:
Switch item=actionFan mappings=[101=“Quiet”, 102=“Balanced”, 103=“Turbo”,104=“Max”, -1=“OFF”]

This worked for me with a S6. Copied and pasted the Thing-part to a new thing-file, but had to change all the " to correct ones afterwards, otherwise OH gave med EOF-errors.