Xiaomi Robot Vacuum Binding

First of all: thank you for building this binding! It works great and it gets my fully integrated smart home one step closer. I would say keep up the good work!

I also have a request to make. Do you think it would be possible to integrate the remote control option in the binding? If this would be possible I can imagine a lot of possibilities like make the robot perform spot cleaning in a certain area and returning to base station afterwards. This should be achievable by creating a rule with timers with let’s say 10 seconds going straight, 3 seconds to the left, stop, spot clean, etc.

@Home_Automation I may introduce the remote control at some point, but I must be honest… it is not my first prio.

In the mean time, you can use the command channel to send the respective remote control commands directly.

See my commands documentation for what to send

https://github.com/marcelrv/XiaomiRobotVacuumProtocol/blob/master/remote_control.md

Hi Marcel! A part from the log file shows the following polling error:

11:50:30.958 [WARN ] [nal.transport.MiIoAsyncCommunication] - Error while polling/sending message
java.lang.NullPointerException
at java.security.MessageDigest.update(MessageDigest.java:335)[:1.8.0_152-ea]
at java.security.MessageDigest.digest(MessageDigest.java:410)[:1.8.0_152-ea]
at org.openhab.binding.miio.internal.MiIoCrypto.md5(MiIoCrypto.java:34)[240:org.openhab.binding.miio:2.2.0.201709201656]
at org.openhab.binding.miio.internal.MiIoCrypto.encrypt(MiIoCrypto.java:67)[240:org.openhab.binding.miio:2.2.0.201709201656]
at org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication.sendCommand(MiIoAsyncCommunication.java:230)[240:org.openhab.binding.miio:2.2.0.201709201656]
at org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication.sendMiIoSendCommand(MiIoAsyncCommunication.java:153)[240:org.openhab.binding.miio:2.2.0.201709201656]
at org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication$MessageSenderThread.run(MiIoAsyncCommunication.java:205)[240:org.openhab.binding.miio:2.2.0.201709201656]

Ah I was completely unaware of the existence of this possibility. It seems like exactly what I was looking for. Thanks for your reply!

Hi

maybe a dumb question, but do the binding needs the cloud as the app does?

Nope, not dumb question… nope that is not needed.
The binding only uses the local connection, not the cloud connection.

Great, but just to be sure, the cloud isn’t needed at all or will the xiaomi itself send any data to the cloud?

As far as I know he cloud is not needed, but you loose the functionality wrt to visibility to the map. Having said that, I did not actually test such a setup.

What I am sure of is that you can get the token and control the vacuum without ever connecting it to your username or requiring the Mi app. As all is controlled locally I assume it does not need the cloud.

Then i’ll give it a try (thx for your binding!)

Any news on my issue or is it something that only affects me? BTW I am having OpenHAB 2.1 installed on a Synology DS716+II NAS.

@marcel_verpaalen Was there a resolution to this sitemap exception? Using the following item and sitemap entries, I’m seeing the following in my log file when the sitemap renders.

Number VacActionFan    "Vacuum Fan"    (gVac)    { channel="miio:generic:03D9D158:actions#fan" }
Switch item=VacActionFan mappings=[38="Silent", 60="Normal", 77="Power",90="Full", -1="Custom"]
2017-09-23 09:24:57.827 [WARN ] [ui.internal.items.ItemUIRegistryImpl] - Exception while formatting value 'Standard' of item VacActionFan with format '%.0f': {}
java.util.IllegalFormatConversionException: f != java.lang.String
        at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302) [?:?]
        at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2806) [?:?]
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:2753) [?:?]
        at java.util.Formatter.format(Formatter.java:2520) [?:?]
        at java.util.Formatter.format(Formatter.java:2455) [?:?]
        at java.lang.String.format(String.java:2940) [?:?]
        at org.eclipse.smarthome.core.library.types.StringType.format(StringType.java:50) [101:org.eclipse.smarthome.core:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.internal.items.ItemUIRegistryImpl.getLabel(ItemUIRegistryImpl.java:344) [140:org.eclipse.smarthome.ui:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.render.AbstractWidgetRenderer.preprocessSnippet(AbstractWidgetRenderer.java:87) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.render.SwitchRenderer.renderWidget(SwitchRenderer.java:70) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.renderWidget(PageRenderer.java:164) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.processChildren(PageRenderer.java:129) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.processPage(PageRenderer.java:92) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.smarthome.ui.basic.internal.servlet.WebAppServlet.service(WebAppServlet.java:172) [194:org.eclipse.smarthome.ui.basic:0.9.0.201709071501]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) [88:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [88:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [174:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [85:org.eclipse.jetty.security:9.3.14.v20161028]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [174:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [88:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [174:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.Server.handle(Server.java:534) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [87:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [79:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [79:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [79:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [90:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [90:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [90:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [90:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [90:org.eclipse.jetty.util:9.3.14.v20161028]
        at java.lang.Thread.run(Thread.java:748) [?:?]

hey marcel,
anything else I could try to get the air purifier working with openhab?

thanks :slight_smile:

btw. Power on / off works from OH
just temp/humidity etc values do not update

@shorty707 do you have the latest version? I did fix a small bug 2 days ago which prevented some of the properties from refreshing. Pls test with the latest version.

btw.
I’ve building an device emulator. It works already with the binding and the other (node/python) miio tools.
My intention is to ‘fool’ the Mi Home app to add the emulated device, and I can see exactly all the commands being send to the device. That way, no need to guess anymore which properties are supported for which versions.

1 Like

yes I upgraded today before I posted the above to be sure :slight_smile:
I am happy to test again and send debug logs if it helps

also if you intgerate the emulator in your miio tool I can run it and provide you whatever is necessary :slight_smile:

@mhilbush I don’t really know.

I post a number. The options are mapping it to a string, but still the option value should be send as far as I understand., but according to the error sends the string ‘standard’.
I don’t quite understand why ‘standard’ is being send

Just updated from the standalone Binding for the Robot to the Mi-IO Binding and got the same Problem as in a previous Version in the standalone-Binding that my two robots are Offline after a short time period.
The Thing Status is only: “OFFLINE - CONFIGURATION_ERROR” without any further Information.

I´ve set the log-level to verbose:

08:36:33.348 [DEBUG] [miio.internal.discovery.MiIoDiscovery] - No token discovered for device 03D87B3E. To discover token reset your device & connect to it's wireless network and re-run discovery. Read readme f                                                                   or other options.
08:36:33.370 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":244,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:36:33.665 [DEBUG] [miio.internal.discovery.MiIoDiscovery] - Discovered Mi IO Device 034D720F at 10.0.0.91 as miio:generic:034D720F
08:36:33.666 [DEBUG] [miio.internal.discovery.MiIoDiscovery] - No token discovered for device 034D720F. To discover token reset your device & connect to it's wireless network and re-run discovery. Read readme f                                                                   or other options.
08:36:33.673 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":245,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:36:33.892 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":246,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 3)
08:36:33.906 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: [{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}], fullresponse: {                                                                   "result":[{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}],"id":243}
08:36:34.423 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":244}
08:36:35.038 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":78,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":78,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":245}
08:36:35.050 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":246}
08:37:04.034 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:37:04.034 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":247,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 1)
08:37:04.802 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":248,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:37:05.775 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":249,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:37:05.930 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: [{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}], fullresponse: {                                                                   "result":[{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}],"id":247}
08:37:15.930 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:37:15.966 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":250,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 3)
08:37:16.347 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":248}
08:37:16.474 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":79,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":79,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":249}
08:37:16.707 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":250}
08:37:37.772 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Skipping periodic update for 'miio:vacuum:03D87B3E'. Thing Status
08:37:37.773 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":62,"method":"miIO.info","params":[]} -> 10.0.0.92 (Device: 03D87B3E token: 627xxxHIDDENxxxx74F Queue: 1)
08:37:46.174 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:37:46.174 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":251,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 1)
08:37:47.879 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.92: Receive timed out
08:37:47.879 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 03D87B3E at 10.0.0.92 for command {"id":62,"method":"miIO.info","params":[]}.
08:37:47.879 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 03D87B3E type: MIIO_INFO, result: null, fullresponse: {"error":"No Response"}
08:37:47.879 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:37:56.185 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:38:06.191 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:38:06.388 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":252,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:38:06.401 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":253,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:38:06.407 [INFO ] [rnal.transport.MiIoAsyncCommunication] - Received message is invalid JSON:
08:38:06.408 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: null, fullresponse: {"error":"Received message is invalid JSON"}
08:38:06.408 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "Received message is invalid JSON"
08:38:10.667 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":252}
08:38:12.210 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":254,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 2)
08:38:12.257 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":80,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":80,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":253}
08:38:12.279 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":254}
08:38:42.234 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:38:42.234 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":255,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 1)
08:38:42.384 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":256,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:38:42.430 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":257,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:38:42.444 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: [{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}], fullresponse: {                                                                   "result":[{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}],"id":255}
08:38:42.599 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":258,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 3)
08:38:42.840 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":256}
08:38:43.151 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":81,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":81,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":257}
08:38:43.248 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":258}
08:39:12.731 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:39:12.731 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":259,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 1)
08:39:13.723 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":260,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:39:13.750 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":261,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:39:13.764 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":262,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 3)
08:39:13.876 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: [{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}], fullresponse: {                                                                   "result":[{"start_hour":22,"start_minute":0,"end_hour":8,"end_minute":0,"enabled":1}],"id":259}
08:39:13.934 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":260}
08:39:13.952 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":82,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":82,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":261}
08:39:14.600 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":262}
08:39:37.789 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Skipping periodic update for 'miio:vacuum:03D87B3E'. Thing Status
08:39:37.789 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":63,"method":"miIO.info","params":[]} -> 10.0.0.92 (Device: 03D87B3E token: 627xxxHIDDENxxxx74F Queue: 1)
08:39:43.894 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:39:43.894 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":263,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 1)
08:39:47.909 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.92: Receive timed out
08:39:47.910 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 03D87B3E at 10.0.0.92 for command {"id":63,"method":"miIO.info","params":[]}.
08:39:47.910 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 03D87B3E type: MIIO_INFO, result: null, fullresponse: {"error":"No Response"}
08:39:47.910 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:39:53.905 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:39:54.381 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":264,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 1)
08:40:04.388 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:04.608 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":265,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 2                                                                   )
08:40:06.364 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":266,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 3)
08:40:16.371 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:26.823 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:26.823 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 034D720F at 10.0.0.91 for command {"id":263,"method":"get_dnd_timer","params":[]}.
08:40:26.823 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: null, fullresponse: {"error":"No Response"}
08:40:26.823 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:40:36.827 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:36.828 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 034D720F at 10.0.0.91 for command {"id":264,"method":"get_clean_summary","params":[]}.
08:40:36.828 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: null, fullresponse: {"error":"No Response"}
08:40:36.828 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:40:46.817 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Periodic update for 'miio:generic:034D720F' (miio:vacuum)
08:40:46.818 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":267,"method":"get_dnd_timer","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue                                                                   : 2)
08:40:46.838 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:46.838 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 034D720F at 10.0.0.91 for command {"id":265,"method":"get_status","params":[]}.
08:40:46.838 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: null, fullresponse: {"error":"No Response"}
08:40:46.839 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:40:56.841 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:40:56.841 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 034D720F at 10.0.0.91 for command {"id":266,"method":"get_consumable","params":[]}.
08:41:08.223 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:41:08.864 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":268,"method":"get_clean_summary","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Q                                                                   ueue: 2)
08:41:18.874 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:41:19.661 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":269,"method":"get_status","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 3                                                                   )
08:41:19.720 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":270,"method":"get_consumable","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queu                                                                   e: 4)
08:41:19.732 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: null, fullresponse: {"error":"No Response"}
08:41:19.732 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:41:29.741 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Communication error for Mi IO device at 10.0.0.91: Receive timed out
08:41:29.742 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - No response from device 034D720F at 10.0.0.91 for command {"id":267,"method":"get_dnd_timer","params":[]}.
08:41:30.404 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: DND_GET, result: null, fullresponse: {"error":"No Response"}
08:41:30.404 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Error received: "No Response"
08:41:31.590 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CLEAN_SUMMARY_GET, result: [320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505                                                                   800800,1505714400]], fullresponse: {"result":[320301,4912707500,218,[1506232800,1506146400,1506060000,1505973600,1505887200,1505800800,1505714400]],"id":268}
08:41:32.277 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: GET_STATUS, result: [{"msg_ver":5,"msg_seq":83,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_c                                                                   ode":0,"map_present":0,"in_cleaning":0,"fan_power":60,"dnd_enabled":0}], fullresponse: {"result":[{"msg_ver":5,"msg_seq":83,"state":8,"battery":100,"clean_time":11,"clean_area":0,"error_code":0,"map_present":0,                                                                   "in_cleaning":0,"fan_power":60,"dnd_enabled":0}],"id":269}
08:41:32.566 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: CONSUMABLES_GET, result: [{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":3203                                                                   01,"sensor_dirty_time":64809}], fullresponse: {"result":[{"main_brush_work_time":320301,"side_brush_work_time":320301,"filter_work_time":320301,"sensor_dirty_time":64809}],"id":270}
08:41:37.908 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Skipping periodic update for 'miio:vacuum:03D87B3E'. Thing Status
08:41:37.909 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":64,"method":"miIO.info","params":[]} -> 10.0.0.92 (Device: 03D87B3E token: 627xxxHIDDENxxxx74F Queue: 1)
08:41:38.132 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 03D87B3E type: MIIO_INFO, result: {"hw_ver":"Linux","fw_ver":"3.3.9_003077","ap":{"ssid":"HIDDEN-SSID","bssid":"F2:9F:C2:7A:2C                                                                   :0E","rssi":-64},"netif":{"localIp":"10.0.0.92","mask":"255.255.255.0","gw":"10.0.0.1"},"model":"rockrobo.vacuum.v1","mac":"34:CE:00:E8:28:BC","token":"627xxxHIDDENxxxx74F","life":19179}, fullrespo                                                                   nse: {"partner_id":"","id":64,"code":0,"message":"ok","result":{"hw_ver":"Linux","fw_ver":"3.3.9_003077","ap":{"ssid":"HIDDEN-SSID","bssid":"F2:9F:C2:7A:2C:0E","rssi":-64},"netif":{"localIp":"10.0.0.92","mask":"                                                                   255.255.255.0","gw":"10.0.0.1"},"model":"rockrobo.vacuum.v1","mac":"34:CE:00:E8:28:BC","token":"627xxxHIDDENxxxx74F","life":19179}}
08:41:49.736 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Skipping periodic update for 'miio:generic:034D720F'. Thing Status
08:41:49.736 [DEBUG] [rnal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":271,"method":"miIO.info","params":[]} -> 10.0.0.91 (Device: 034D720F token: 333xxxHIDDENxxxxD42 Queue: 1)
08:41:51.850 [DEBUG] [ding.miio.handler.MiIoAbstractHandler] - Received response for 034D720F type: MIIO_INFO, result: {"hw_ver":"Linux","fw_ver":"3.3.9_003077","ap":{"ssid":"HIDDEN-SSID","bssid":"F2:9F:C2:7A:2C                                                                   :0E","rssi":-62},"netif":{"localIp":"10.0.0.91","mask":"255.255.255.0","gw":"10.0.0.1"},"model":"rockrobo.vacuum.v1","mac":"28:6C:07:F7:72:A0","token":"333xxxHIDDENxxxxD42","life":17355}, fullrespo                                                                   nse: {"partner_id":"","id":271,"code":0,"message":"ok","result":{"hw_ver":"Linux","fw_ver":"3.3.9_003077","ap":{"ssid":"HIDDEN-SSID","bssid":"F2:9F:C2:7A:2C:0E","rssi":-62},"netif":{"localIp":"10.0.0.91","mask":                                                                   "255.255.255.0","gw":"10.0.0.1"},"model":"rockrobo.vacuum.v1","mac":"28:6C:07:F7:72:A0","token":"333xxxHIDDENxxxxD42","life":17355}}
08:42:21.295 [DEBUG] [inding.miio.handler.MiIoVacuumHandler] - Skipping periodic update for 'miio:generic:034D720F'. Thing Status
                                                           or other options.

Device emulator is exactly what I want for a long time! Thank you in advance!

I was wondering about that. I have no idea where that’s coming from either.

I added another line to my sitemap that’s showing 60 (Normal), which is correct. But, it also generated the IllegalFormatConversionException for “Standard”

Text item=VacActionFan label="VacActionFan [%.0f]"

Oddly, when I put this in my sitemap, it shows Standard.

Text item=VacActionFan label="VacActionFan number[%.0f]"
Text item=VacActionFan label="VacActionFan string [%s]"

I’m at a loss on how to troubleshoot why this is happening.

@marcel_verpaalen

I did find this issue.

And this issue.

I’m not sure if this is the most current version of your code, but it definitely shows Standard as one of the options for the fan channel.

@mhilbush

Indeed that is exactly the error at hand here. As the fix is merged, this needs to be tested with the latest version of OH.

If not, maybe I’ll just work around it and make it a string channel. Than the problem should be gone as well.
Indeed standard is one of the option values. But it should give the id instead of the value