Xiaomi Robot Vacuum Binding

Is there a current working procedure to getting a Roborock vacuum to work with this binding? If I pair the vacuum with the Roborock app, it is not found by the binding. If I use the Xiaomi app, I receive an error within the app “Failed to start extension, try again”.
Has anyone recently added a vacuum and had success getting it into this binding?

It indeed does not work with Roborock app, as that uses different communication.
You have to somehow get it paired with the Xiaomi app.

i get this error at log,any ideas?running 2.5.9.

2020-10-07 21:24:13.888 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 

java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)

	at org.eclipse.jetty.client.HttpClient.checkHost(HttpClient.java:510) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newHttpRequest(HttpClient.java:495) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:453) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.executeUrlAndGetReponse(HttpUtil.java:212) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:438) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:417) ~[?:?]

	at org.openhab.binding.miio.internal.cloud.CloudConnector.getMap(CloudConnector.java:141) ~[?:?]

	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.getMap(MiIoVacuumHandler.java:585) ~[?:?]

	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.lambda$7(MiIoVacuumHandler.java:521) ~[?:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_265]

	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_265]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_265]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_265]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_265]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_265]

	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]

Same here, round about one day after a restart I get that error message almost every 30 seconds:

020-10-08 14:30:43.086 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)
	at org.eclipse.jetty.client.HttpClient.checkHost(HttpClient.java:510) ~[?:?]
	at org.eclipse.jetty.client.HttpClient.newHttpRequest(HttpClient.java:495) ~[?:?]
	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:453) ~[?:?]
	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]
	at org.eclipse.smarthome.io.net.http.HttpUtil.executeUrlAndGetReponse(HttpUtil.java:212) ~[?:?]
	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:438) ~[?:?]
	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:417) ~[?:?]
	at org.openhab.binding.miio.internal.cloud.CloudConnector.getMap(CloudConnector.java:141) ~[?:?]
	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.getMap(MiIoVacuumHandler.java:585) ~[?:?]
	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.lambda$7(MiIoVacuumHandler.java:521) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_265]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_265]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_265]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_265]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_265]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_265]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265

@marcel_verpaalen, any idea if this is related to the miio binding at all?

263 │ Active │ 80 │ 2.5.10.202010030407 │ openHAB Add-ons :: Bundles :: Xiaomi Mi IO Binding

Looks like the debug log catched an error:

08-Okt-2020 14:42:12.651 [DEBUG] [ab.binding.miio.internal.handler.MiIoVacuumHandler] - Periodic update for 'miio:vacuum:0F8F154D' (miio:vacuum)
08-Okt-2020 14:42:12.653 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":563,"method":"get_dnd_timer","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 1)
08-Okt-2020 14:42:12.654 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":564,"method":"get_clean_summary","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 2)
08-Okt-2020 14:42:12.654 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":565,"method":"get_status","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 3)
08-Okt-2020 14:42:12.667 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":566,"method":"miIO.info","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 3)
08-Okt-2020 14:42:12.668 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":567,"method":"get_consumable","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 4)
08-Okt-2020 14:42:12.668 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":568,"method":"get_map_v1","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 5)
08-Okt-2020 14:42:12.695 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: DND_GET, result: [{"start_hour":20,"start_minute":0,"end_hour":6,"end_minute":0,"enabled":0}], fullresponse: {"result":[{"start_hour":20,"start_minute":0,"end_hour":6,"end_minute":0,"enabled":0}],"id":563}
08-Okt-2020 14:42:12.716 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: CLEAN_SUMMARY_GET, result: [162141,2766180000,290,[1601359191,1601358827,1601358629,1600322825,1600322066,1600321862,1600321411,1600321119,1600320796,1600168750,1600168509,1600168239,1600168116,1600168009,1600167828,1599984519,1599982194,1599981986,1599981862,1599981694]], fullresponse: {"result":[162141,2766180000,290,[1601359191,1601358827,1601358629,1600322825,1600322066,1600321862,1600321411,1600321119,1600320796,1600168750,1600168509,1600168239,1600168116,1600168009,1600167828,1599984519,1599982194,1599981986,1599981862,1599981694]],"id":564}
08-Okt-2020 14:42:12.732 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: GET_STATUS, result: [{"msg_ver":1,"msg_seq":1353,"state":8,"battery":100,"clean_time":637,"clean_area":13312500,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"fan_power":104,"dnd_enabled":0,"map_status":3,"lock_status":0}], fullresponse: {"result":[{"msg_ver":1,"msg_seq":1353,"state":8,"battery":100,"clean_time":637,"clean_area":13312500,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"fan_power":104,"dnd_enabled":0,"map_status":3,"lock_status":0}],"id":565}
08-Okt-2020 14:42:12.751 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: MIIO_INFO, result: {"hw_ver":"Linux","fw_ver":"3.5.4_0948","ap":{"ssid":"ossipower","bssid":"C0:25:06:61:CF:45","rssi":-57},"netif":{"localIp":"192.168.2.36","mask":"255.255.255.0","gw":"192.168.2.1"},"model":"roborock.vacuum.m1s","mac":"50:EC:50:0E:5A:26","token":"62673476347a4334306a3674544d4664","life":39897}, fullresponse: {"partner_id":"","id":566,"code":0,"message":"ok","result":{"hw_ver":"Linux","fw_ver":"3.5.4_0948","ap":{"ssid":"ossipower","bssid":"C0:25:06:61:CF:45","rssi":-57},"netif":{"localIp":"192.168.2.36","mask":"255.255.255.0","gw":"192.168.2.1"},"model":"roborock.vacuum.m1s","mac":"50:EC:50:0E:5A:26","token":"62673476347a4334306a3674544d4664","life":39897}}
08-Okt-2020 14:42:12.766 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: CONSUMABLES_GET, result: [{"main_brush_work_time":143348,"side_brush_work_time":143348,"filter_work_time":143348,"sensor_dirty_time":35552}], fullresponse: {"result":[{"main_brush_work_time":143348,"side_brush_work_time":143348,"filter_work_time":143348,"sensor_dirty_time":35552}],"id":567}
08-Okt-2020 14:42:12.806 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: GET_MAP, result: ["ruby2%2F261035341%2F7"], fullresponse: {"result":["ruby2%2F261035341%2F7"],"id":568}
08-Okt-2020 14:42:12.811 [DEBUG] [openhab.binding.miio.internal.cloud.CloudConnector] - Getting vacuum map ruby2%2F261035341%2F7 from Xiaomi cloud server: 'cn'
08-Okt-2020 14:42:12.812 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Send request: {"obj_name":"ruby2%2F261035341%2F7"} to https://api.io.mi.com/app/home/getmapfileurl
08-Okt-2020 14:42:13.160 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Error while executing request to https://api.io.mi.com/app/home/getmapfileurl :org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header
08-Okt-2020 14:42:13.160 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Received message is invalid JSON: 
08-Okt-2020 14:42:42.669 [DEBUG] [ab.binding.miio.internal.handler.MiIoVacuumHandler] - Periodic update for 'miio:vacuum:0F8F154D' (miio:vacuum)
08-Okt-2020 14:42:42.669 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":569,"method":"get_dnd_timer","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 1)
08-Okt-2020 14:42:42.675 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":570,"method":"get_clean_summary","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 2)
08-Okt-2020 14:42:42.676 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":571,"method":"get_status","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 3)
08-Okt-2020 14:42:42.677 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":572,"method":"get_consumable","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 4)
08-Okt-2020 14:42:42.677 [DEBUG] [ing.miio.internal.transport.MiIoAsyncCommunication] - Command added to Queue {"id":573,"method":"get_map_v1","params":[]} -> 192.168.2.36 (Device: 0F8F154D token: 62673476XXXXXXXXXXXXXXXX544D4664 Queue: 5)
08-Okt-2020 14:42:42.745 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: DND_GET, result: [{"start_hour":20,"start_minute":0,"end_hour":6,"end_minute":0,"enabled":0}], fullresponse: {"result":[{"start_hour":20,"start_minute":0,"end_hour":6,"end_minute":0,"enabled":0}],"id":569}
08-Okt-2020 14:42:42.765 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: CLEAN_SUMMARY_GET, result: [162141,2766180000,290,[1601359191,1601358827,1601358629,1600322825,1600322066,1600321862,1600321411,1600321119,1600320796,1600168750,1600168509,1600168239,1600168116,1600168009,1600167828,1599984519,1599982194,1599981986,1599981862,1599981694]], fullresponse: {"result":[162141,2766180000,290,[1601359191,1601358827,1601358629,1600322825,1600322066,1600321862,1600321411,1600321119,1600320796,1600168750,1600168509,1600168239,1600168116,1600168009,1600167828,1599984519,1599982194,1599981986,1599981862,1599981694]],"id":570}
08-Okt-2020 14:42:42.798 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: GET_STATUS, result: [{"msg_ver":1,"msg_seq":1354,"state":8,"battery":100,"clean_time":637,"clean_area":13312500,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"fan_power":104,"dnd_enabled":0,"map_status":3,"lock_status":0}], fullresponse: {"result":[{"msg_ver":1,"msg_seq":1354,"state":8,"battery":100,"clean_time":637,"clean_area":13312500,"error_code":0,"map_present":1,"in_cleaning":0,"in_returning":0,"in_fresh_state":1,"lab_status":1,"fan_power":104,"dnd_enabled":0,"map_status":3,"lock_status":0}],"id":571}
08-Okt-2020 14:42:42.820 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: CONSUMABLES_GET, result: [{"main_brush_work_time":143348,"side_brush_work_time":143348,"filter_work_time":143348,"sensor_dirty_time":35552}], fullresponse: {"result":[{"main_brush_work_time":143348,"side_brush_work_time":143348,"filter_work_time":143348,"sensor_dirty_time":35552}],"id":572}
08-Okt-2020 14:42:42.843 [DEBUG] [.binding.miio.internal.handler.MiIoAbstractHandler] - Received response for 0F8F154D type: GET_MAP, result: ["ruby2%2F261035341%2F8"], fullresponse: {"result":["ruby2%2F261035341%2F8"],"id":573}
08-Okt-2020 14:42:42.844 [DEBUG] [openhab.binding.miio.internal.cloud.CloudConnector] - Getting vacuum map ruby2%2F261035341%2F8 from Xiaomi cloud server: 'cn'
08-Okt-2020 14:42:42.845 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Send request: {"obj_name":"ruby2%2F261035341%2F8"} to https://api.io.mi.com/app/home/getmapfileurl
08-Okt-2020 14:42:43.753 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Error while executing request to https://api.io.mi.com/app/home/getmapfileurl :org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header
08-Okt-2020 14:42:43.753 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Received message is invalid JSON: 
08-Okt-2020 14:43:02.079 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Send request: {"getVirtualModel":false,"getHuamiDevices":0} to https://api.io.mi.com/app/home/device_list
08-Okt-2020 14:43:03.027 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Error while executing request to https://api.io.mi.com/app/home/device_list :org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header
08-Okt-2020 14:43:03.028 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Response is not a json object: ''
08-Okt-2020 14:43:03.028 [DEBUG] [enhab.binding.miio.internal.cloud.MiCloudConnector] - Send request: {"getVirtualModel":false,"getHuamiDevices":0} to https://de.api.io.mi.com/app/home/device_list

Edit: setting the refresh interval of the vacuum Thing to zero suppresses the error message.

I have seen this in my log as well. As no code has changed in this area since a few months, I think Xiaomi changed something in their cloud, maybe requiring more frequent refreshes of the cookies.
I confirmed that loggin on again fixes the issue, so the fix I have in mind is to re-do the login process if this error is received.

NB: Is anybody seeing the same “HTTP protocol violation: Authentication challenge without WWW-Authenticate header” in 2.5.8 or lower? If it is really only the latest, it can also be something in the OH framework changed… that would narrow the hunt for the issue.

1 Like

@Constantinos_Contis looks like an issue indeed. Can you confirm you have a valid county defined in your thing. The main reason this can happen is if the county of your vacuum thing has an character in it that can’t be translated to an url, or maybe only a space. (as I check for empty character)

i am in Greece and i use country code “de” ,no invalid characters no spaces.

@marcel_verpaalen

Hi,

is it possible to change the blue background color of the map?

Same issue here: java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)

Country code is “de” as well.
Started a few weeks ago I think.

Full stack trace:

2020-10-25 15:37:45.094 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 

java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)

	at org.eclipse.jetty.client.HttpClient.checkHost(HttpClient.java:510) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newHttpRequest(HttpClient.java:495) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:453) ~[?:?]

	at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.executeUrlAndGetReponse(HttpUtil.java:212) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:438) ~[?:?]

	at org.eclipse.smarthome.io.net.http.HttpUtil.downloadData(HttpUtil.java:417) ~[?:?]

	at org.openhab.binding.miio.internal.cloud.CloudConnector.getMap(CloudConnector.java:141) ~[?:?]

	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.getMap(MiIoVacuumHandler.java:585) ~[?:?]

	at org.openhab.binding.miio.internal.handler.MiIoVacuumHandler.lambda$7(MiIoVacuumHandler.java:521) ~[?:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_252]

	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_252]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_252]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_252]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]

	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]

Stack trace is is talking about the method getMap(). Commented out my map Image item but no difference.

@avdlee what version you are on, and did this happen few days after an upgrade?

As the code of this part of the binding did not change since 7 months, I’m trying to understand what changed.

NB: Is anybody seeing the same “HTTP protocol violation: Authentication challenge without WWW-Authenticate header” in 2.5.8 or lower? If it is really only the latest, it can also be something in the OH framework changed… that would narrow the hunt for the issue.

I’m on version 2.5.9

I could be that it started when I upgraded my OH version a few weeks ago, not sure sorry

It is not something that is selectable in the binding.
You can recompile it with your preferred colors. Change them here openhab-addons/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/robot/RRMapDraw.java at main · openhab/openhab-addons · GitHub

np, I made a attempt to fix at least the nasty stacktrace… still trying to understand the rootcause of the problem, (OH or something changed in the Xiaomi cloud) as the code wasn’t changed.

Hi,

im also suffering from that nasty stack trace in my logs. Any chance to get the fix as a snapshot version I can install? Im on OH 2.5.9.

yes, the fix got accepted and merged in 3.0.
For 2.5.x it is now as well submitted. Expect it to be merged and available in snapshot shortly.

Hey! Just orderd a new Roborock S5 Max and am looking to integrate it into OH.
However i cant seem to be able to find a comprehensive HowTo on which binding is needed and what app i need on my phone. I understand the Xiaomi Mi IO binding is needed and that there are two apps i.e. roborock and Xiaomi Home, but i can’t make sense of what if what.
I’d appreciate if anyone would point me in the right direction.

@TRIROG You’ll need to use the Xiaomi Home app, together with the Xiaomi Mi IO binding.
Using the rockrobo app, the communication is different and it won’t work.

i just got a MiAirPurifier3 and it works fine with the binding,auto discovered token too…very nice!I just have a silly problem…it states the temperature with “21.500000” C not “21.5”.How can i fix this eliminate the last 5 zeros?I use it to my custom template habpanel widget and “21.500000 C” doesnt looks good.

also there is a slight delay when i give a command,is that normal?

You can try the following:
Download the json file for your device… I expect it to be https://github.com/openhab/openhab-addons/blob/main/bundles/org.openhab.binding.miio/src/main/resources/database/zhimi.airpurifier.mb3-miot.json (but check your model)

than in the piece that is having

{
				"property": "temperature",
				"siid": 3,
				"piid": 8,
				"friendlyName": "Environment-Temperature",
				"channel": "Temperature",
				"channelType": "miot_float",
				"type": "Number",
				"refresh": true,
				"actions": []
			},

change the channeltype to "channelType": "temperature",
Let me know if that improves it, than I can adjust it in the source.

btw, better move this topic to the air purifiers topic to avoid confusion with the vacuums :slight_smile: