Xiaomi Robot Vacuum Binding

Just a short comment as i faced something similar, but it might not solve your issue.

Got 3 devices (2 air purifiers, 1 roborock) running on SG server and they had this offline/comms error since some time (and turned to online when I manually “paused” them and re-activated).

I then did put the binding into debug log mode and watched what is actually happening and found out that the tokens all changed (for whatever reason).
Updating them fixed it for me.

Do you see any strange stuff in the debug log?

using the “de” server i get

2022-01-02 13:25:38.044 [INFO ] [miio.internal.cloud.MiCloudConnector] - Repeated errors logging on to Xiaomi cloud. Cleaning stored cookies

Fyi. Topic on the connection issue wrt cloud.

I have done some digging and concluded the following:

  1. The tokens seems to have changed
  2. However letting the binding grab the tokens does not work
  3. Even if I enter incorrect login info for the Xiaomi Cloud I will still see my devices. So I guess these are cached somehow?
  4. Solution: Manually get the tokens from Android app like back in the days.

So basically I think the cloud login is broken, but to the user it is not apparent as devices from the cloud pop up when adding a thing in the binding (they seem to be cached as they appear even when I enter username: blablabla and password: blablabla… and so forth.

Conclusion: Tokens seems to have changed as the servers went haywire. The login from OpenHAB seems to not work, therefore no new token could be retrieved.

Edit: Actually I think the binding pulls an old token from the server. If I manually update the token to the one extracted from the Android app it works just fine. However… I noticed that the binding automatically changes the token to a non working one after a few minutes. I have gone around this by removing my cloud login from the binding.

You can also pull the new tokens from the log as I mentioned, by putting the binding into debug log mode (not via Inbox). At least that worked for me.

the only thing that its not working for me is the map image for my roborock…

That makes sense… it is the only thing that depends on the cloud integration.

Most devices should work well, maybe need to resort to the old ways of getting the token

I got :
2022-01-03 16:33:28.096 [DEBUG] [miio.internal.cloud.MiCloudConnector] - Send request to https://de.api.io.mi.com/app/home/getmapfileurl with data ‘{“obj_name”:“tanos%2F260223555%2F7”}’

2022-01-03 16:33:28.278 [DEBUG] [miio.internal.cloud.MiCloudConnector] - Error while executing request to https://de.api.io.mi.com/app/home/getmapfileurl :org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header

2022-01-03 16:33:28.279 [DEBUG] [miio.internal.cloud.MiCloudConnector] - Received message is invalid JSON:

2022-01-03 16:33:28.280 [DEBUG] [g.miio.internal.cloud.CloudConnector] - Map download from server de returned

Does this header error have to do with the token?

@wtichelen your error looks like you had difficulties with the cloud connectivity.
Suggest to restart openhab and update cloud password (if that has changed) to force a new logon and full clean of any cookies.

Since i updated to OH3 the rule does not work anymore :frowning:

==> /logs/openhab.log <==

2022-02-16 11:43:11.643 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert '2022-02-16T11:43:11.639586+01:00[Europe/Berlin]' to a state type which item 'zKuecheLastUpdate' accepts: [DateTimeType, UnDefType].

2022-02-16 11:43:11.805 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert '2022-02-16T11:43:11.801799+01:00[Europe/Berlin]' to a state type which item 'zKuecheLastUpdate' accepts: [DateTimeType, UnDefType].

==> /logs/events.log <==

2022-02-16 11:43:11.799 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'zKueche' received command ON


==> /logs/openhab.log <==

2022-02-16 11:43:20.903 [INFO ] [openhab.core.model.script.zone.rules] - zoneAction command received: start

2022-02-16 11:43:20.905 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'robo-2' failed: Could not cast NULL to org.openhab.core.library.types.DateTimeType; line 60, column 37, length 21 in robo

anyone has a clue ?

ok looks better with the time thing with changeing so l delete :

val lastUpdate = now

and change this :
updateItem.postUpdate(lastUpdate.toString())

to

updateItem.postUpdate(new DateTimeType())

but still errors at all

2022-02-16 11:54:49.212 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'zKueche' received command ON

2022-02-16 11:54:49.213 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'zKueche' changed from OFF to ON

2022-02-16 11:54:49.218 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'zKuecheLastUpdate' changed from 2022-02-16T11:54:48.169828+0100 to 2022-02-16T11:54:49.216679+0100

2022-02-16 11:54:49.219 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gZoneLastUpdate' changed from 2022-02-16T11:54:48.183601+0100 to 2022-02-16T11:54:49.216679+0100 through zKuecheLastUpdate

==> /logs/openhab.log <==

2022-02-16 11:54:50.485 [INFO ] [openhab.core.model.script.zone.rules] - zoneAction command received: start

2022-02-16 11:54:50.502 [INFO ] [openhab.core.model.script.zone.rules] - 17-zEsszimmer is ON. {zoneType:room; zoneCoordinates: 17}

2022-02-16 11:54:50.522 [INFO ] [openhab.core.model.script.zone.rules] - 20-zKueche is ON. {zoneType:room; zoneCoordinates: 20}

2022-02-16 11:54:50.526 [INFO ] [openhab.core.model.script.zone.rules] - sending cmd to device: app_segment_clean[17, 20]

2022-02-16 11:54:50.527 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'robo-2' failed: The name 'actionCommand' cannot be resolved to an item or type; line 118, column 9, length 13 in robo


map is not loading on xiaomi app ,is the euro server down or is it only me?

I have the binding working fine in OH 3.0. However, the binding stops working after upgrading to OH3.1 or OH3.2. I have the following error when the binding starts:

2022-03-15 22:41:28.770 [DEBUG] [ernal.basic.MiIoDatabaseWatchService] - Started miio basic devices local databases watch service. Watching for database files at path: /opt/openhab2/conf/misc/miio
2022-03-15 22:41:28.781 [ERROR] [ernal.basic.MiIoDatabaseWatchService] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService(448)] : Error during instantiation of the implementation object
java.lang.reflect.InvocationTargetException: null
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
	at org.apache.felix.scr.impl.inject.internal.ComponentConstructorImpl.newInstance(ComponentConstructorImpl.java:316) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:286) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:115) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:1000) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:973) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:918) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:216) ~[org.eclipse.osgi-3.16.300.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:213) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:114) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:656) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:88) ~[?:?]
	at org.apache.felix.scr.impl.inject.internal.ComponentConstructorImpl.newInstance(ComponentConstructorImpl.java:284) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:286) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:115) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:1000) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:973) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:918) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:216) ~[org.eclipse.osgi-3.16.300.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:213) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:114) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:656) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:88) ~[?:?]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:675) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2556) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:2075) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:2058) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:443) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:301) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1200) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1121) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:928) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:864) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1152) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:114) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:957) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:873) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:496) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:929) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:915) ~[?:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:133) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:984) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:752) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1271) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1222) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1200) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1121) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:928) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:864) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1152) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:114) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:957) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:873) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:496) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:929) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:915) ~[?:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:133) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:984) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:752) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:437) ~[?:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:667) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:305) ~[?:?]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:554) ~[?:?]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:70) ~[?:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:421) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) ~[?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) ~[osgi.core-7.0.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:945) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:232) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:499) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.container.Module.start(Module.java:486) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:445) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:464) ~[org.eclipse.osgi-3.16.300.jar:?]
	at org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1160) ~[?:?]
	at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1041) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.NoSuchMethodError: 'com.google.gson.JsonElement com.google.gson.JsonParser.parseReader(java.io.Reader)'
	at org.openhab.binding.miio.internal.Utils.convertFileToJSON(Utils.java:108) ~[?:?]
	at org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService.populateDatabase(MiIoDatabaseWatchService.java:115) ~[?:?]
	at org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService.<init>(MiIoDatabaseWatchService.java:70) ~[?:?]
	... 117 more
2022-03-15 22:41:28.830 [DEBUG] [ernal.basic.MiIoDatabaseWatchService] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService(448)] : Failed creating the component instance; see log for reason
2022-03-15 22:41:28.831 [DEBUG] [ernal.basic.MiIoDatabaseWatchService] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService(448)] : Querying state satisfied
2022-03-15 22:41:28.831 [DEBUG] [ernal.basic.MiIoDatabaseWatchService] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService(448)] : Changed state from satisfied to satisfied
2022-03-15 22:41:28.835 [WARN ] [ing.miio.internal.MiIoHandlerFactory] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.MiIoHandlerFactory(446)] : Could not get service from ref {org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService}={service.id=1053, service.bundleid=317, service.scope=bundle, component.name=org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService, component.id=448}
2022-03-15 22:41:28.836 [ERROR] [ing.miio.internal.MiIoHandlerFactory] - bundle org.openhab.binding.miio:3.2.0 (317)[org.openhab.binding.miio.internal.MiIoHandlerFactory(446)] : Error during instantiation of the implementation object: Unable to get service for reference $002

Anyone has any suggest how to make it work again? I’m running OH as manual install in Ubuntu 18.

The error seems to indicate an too old version of the gson package.
as you have a Caused by: java.lang.NoSuchMethodError: 'com.google.gson.JsonElement com.google.gson.JsonParser.parseReader(java.io.Reader)' normally gson version with oh3.2 is v2.8.9
This parseReader method is available from v 2.8.6, maybe part of the update went wrong?

Thank you for the quick response.
You are correct that the issue is due to the older gson version. I had gson-2.8.5.jar in addons folder. Replacing it with gson-2.8.9.jar fixes the issue.

I am using your binding with my Roborock S7.
The channels with “Last Cleaning Details” are always NULL.
ie:

  • miio:vacuum:b4d440fb02:cleaning#last_clean_start_time
  • miio:vacuum:b4d440fb02:cleaning#last_clean_end_time
  • miio:vacuum:b4d440fb02:cleaning#last_clean_record

I can just write the DateTimes into the items via rules but I don’t think that’s how it’s meant to work.

Additionally the log want’s me to show you this:

2022-03-24 22:18:04.629 [INFO ] [.miio.internal.robot.RRMapFileParser] - Unknown blocktype (pls report to author)
2022-03-24 22:18:04.634 [DEBUG] [.miio.internal.robot.RRMapFileParser] - Blocktype: 18
2022-03-24 22:18:04.640 [DEBUG] [.miio.internal.robot.RRMapFileParser] - Header len: 8   data len: 0 
2022-03-24 22:18:04.644 [DEBUG] [.miio.internal.robot.RRMapFileParser] - H: 12 00 08 00 00 00 00 00
2022-03-24 22:18:04.714 [INFO ] [.miio.internal.robot.RRMapFileParser] - Unknown blocktype (pls report to author)
2022-03-24 22:18:04.719 [DEBUG] [.miio.internal.robot.RRMapFileParser] - Blocktype: 19
2022-03-24 22:18:04.725 [DEBUG] [.miio.internal.robot.RRMapFileParser] - Header len: 12   data len: 0 
2022-03-24 22:18:04.731 [DEBUG] [.miio.internal.robot.RRMapFileParser] - H: 13 00 0C 00 00 00 00 00 00 00 00 00

I expect you are using an older version of the binding. Block 18 & 19 were added some 8 months ago. If you update this message will be gone.
If you want to supress these messages from the log I think you can do a
log:set WARN org.openhab.binding.miio.internal.robot.RRMapFileParser

Yes you are right ofc.
I updated openhab from 3.1.1 to 3.2.
The items for cleaning history are still null though.
Any idea about that?

Hello guys. I recently bought the Dreame Bot L10 Pro.
It would be great to add support for this robot. In my wifi it has the name dreame-vacuum-p2029. As I can see on GitHub, similar robots are already implemented. OH already detects it as a generic device.
How easy or complicated is the implementation? If possible I can support.

you should try the ‘create experimental support switch’ for the miot devices, most likely the majority of channels will work.
Try it and share the created file