I'm experiencing a weird behavior of the Xiaomi MiHome binding.
After reboot I noticed that my setup doesn't respond.
My setup has a textual config aligned the same way described in the docs of this binding
The binding should work properly.
My sensors are "UNINITIALIZED" whereas the gateway has "UNINITIALIZED - BRIDGE_UNINITIALIZED" status.
Here's the Null Pointer Exception:
2017-07-09 20:20:56.805 [ThingAddedEvent ] - Thing 'mihome:bridge:f0b42XXXXXX' has been added.
2017-07-09 20:20:56.839 [hingStatusInfoChangedEvent] - 'mihome:bridge:f0b42XXXXXX' changed from UNINITIALIZED to INITIALIZING
2017-07-09 20:20:56.859 [hingStatusInfoChangedEvent] - 'mihome:bridge:f0b42XXXXXX' changed from INITIALIZING to UNINITIALIZED (HANDLER_INITIALIZING_ERROR)
==> /var/log/openhab2/openhab.log <==
2017-07-09 20:20:56.857 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occurred while initializing handler of thing 'mihome:bridge:f0b42XXXXXX': java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)[:1.8.0_121]
at java.util.concurrent.FutureTask.get(FutureTask.java:206)[:1.8.0_121]
at org.eclipse.smarthome.core.common.SafeMethodCaller.callAsynchronous(SafeMethodCaller.java:194)
at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:83)
at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:67)
at org.eclipse.smarthome.core.thing.internal.ThingManager.doInitializeHandler(ThingManager.java:738)
at org.eclipse.smarthome.core.thing.internal.ThingManager.initializeHandler(ThingManager.java:664)
at org.eclipse.smarthome.core.thing.internal.ThingManager.access$12(ThingManager.java:639)
at org.eclipse.smarthome.core.thing.internal.ThingManager$2.apply(ThingManager.java:681)
at org.eclipse.smarthome.core.thing.internal.ThingManager$2.apply(ThingManager.java:1)
at org.eclipse.smarthome.config.core.BundleProcessorVetoManager.applyActionFor(BundleProcessorVetoManager.java:124)[98:org.eclipse.smarthome.config.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.thing.internal.ThingManager.registerAndInitializeHandler(ThingManager.java:1016)
at org.eclipse.smarthome.core.thing.internal.ThingManager.thingAdded(ThingManager.java:464)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:212)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:131)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:1)
at org.eclipse.smarthome.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:126)[102:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:51)[102:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:70)[102:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:74)[102:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.lambda$18(GenericThingProvider.java:984)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at java.util.ArrayList.forEach(ArrayList.java:1251)[:1.8.0_121]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.createThingsFromModelForThingHandlerFactory(GenericThingProvider.java:987)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.access$1(GenericThingProvider.java:950)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.lambda$0(GenericThingProvider.java:234)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at java.util.concurrent.ConcurrentHashMap$KeySetView.forEach(ConcurrentHashMap.java:4649)[:1.8.0_121]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.apply(GenericThingProvider.java:236)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.apply(GenericThingProvider.java:1)[137:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.config.core.BundleProcessorVetoManager.bundleFinished(BundleProcessorVetoManager.java:68)[98:org.eclipse.smarthome.config.core:0.9.0.201706270841]
at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor.informListeners(AbstractAsyncBundleProcessor.java:253)[101:org.eclipse.smarthome.config.xml:0.9.0.201706270841]
at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor.access$3(AbstractAsyncBundleProcessor.java:251)[101:org.eclipse.smarthome.config.xml:0.9.0.201706270841]
at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor$1.run(AbstractAsyncBundleProcessor.java:242)[101:org.eclipse.smarthome.config.xml:0.9.0.201706270841]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Caused by: java.lang.NullPointerException
at org.openhab.binding.mihome.internal.socket.XiaomiBridgeSocket.setupSocket(XiaomiBridgeSocket.java:45)[212:org.openhab.binding.mihome:2.2.0.201707082234]
at org.openhab.binding.mihome.internal.socket.XiaomiSocket.<init>(XiaomiSocket.java:68)[212:org.openhab.binding.mihome:2.2.0.201707082234]
at org.openhab.binding.mihome.internal.socket.XiaomiBridgeSocket.<init>(XiaomiBridgeSocket.java:30)[212:org.openhab.binding.mihome:2.2.0.201707082234]
at org.openhab.binding.mihome.handler.XiaomiBridgeHandler.initialize(XiaomiBridgeHandler.java:100)[212:org.openhab.binding.mihome:2.2.0.201707082234]
at org.eclipse.smarthome.core.thing.internal.ThingManager$9.call(ThingManager.java:741)[109:org.eclipse.smarthome.core.thing:0.9.0.201706270841]
at org.eclipse.smarthome.core.thing.internal.ThingManager$9.call(ThingManager.java:1)[109:org.eclipse.smarthome.core.thing:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181)[102:org.eclipse.smarthome.core:0.9.0.201706270841]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_121]
... 1 more
==> /var/log/openhab2/events.log <==
2017-07-09 20:20:56.927 [ThingAddedEvent ] - Thing 'mihome:gateway:f0b42XXXXXX' has been added.
2017-07-09 20:20:56.931 [hingStatusInfoChangedEvent] - 'mihome:gateway:f0b42XXXXXX' changed from UNINITIALIZED to UNINITIALIZED (BRIDGE_UNINITIALIZED)
2017-07-09 20:20:56.934 [ThingAddedEvent ] - Thing 'mihome:86sw2:158d00012a7bb4' has been added.
2017-07-09 20:20:56.937 [hingStatusInfoChangedEvent] - 'mihome:86sw2:158d00012a7bb4' changed from UNINITIALIZED to UNINITIALIZED (BRIDGE_UNINITIALIZED)
2017-07-09 20:20:56.939 [ThingAddedEvent ] - Thing 'mihome:sensor_switch:158d00013f9a48' has been added.
CC: @pboos @tavalin @dimalo @CoolWombat
Also, when I search for Things from Inbox, NPEs show up as well:
2017-07-09 20:40:33.652 [ERROR] [nternal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types '[mihome:bridge]' on 'XiaomiBridgeDiscoveryService'!
java.lang.NullPointerException
at org.openhab.binding.mihome.internal.socket.XiaomiDiscoverySocket.setupSocket(XiaomiDiscoverySocket.java:45)
at org.openhab.binding.mihome.internal.socket.XiaomiSocket.<init>(XiaomiSocket.java:68)
at org.openhab.binding.mihome.internal.socket.XiaomiDiscoverySocket.<init>(XiaomiDiscoverySocket.java:32)
at org.openhab.binding.mihome.internal.discovery.XiaomiBridgeDiscoveryService.startScan(XiaomiBridgeDiscoveryService.java:60)
at org.eclipse.smarthome.config.discovery.AbstractDiscoveryService.startScan(AbstractDiscoveryService.java:199)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:392)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScans(DiscoveryServiceRegistryImpl.java:377)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:221)
at org.eclipse.smarthome.io.rest.core.discovery.DiscoveryResource.scan(DiscoveryResource.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[161:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[162:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[159:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[159:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[159:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[159:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[159:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[13:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[85:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[85:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[176:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[83:org.eclipse.jetty.security:9.2.19.v20160908]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[176:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[85:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[176:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.Server.handle(Server.java:499)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[84:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[75:org.eclipse.jetty.io:9.2.19.v20160908]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[87:org.eclipse.jetty.util:9.2.19.v20160908]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[87:org.eclipse.jetty.util:9.2.19.v20160908]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Anybody any ideas, why the slf4j factory seems to fail on initializing a logger?
From the stacktrace I see the NPE is thrown when calling the logger.
looked through #2416 and there, the "static" keywords were removed in the process of static code analysis. can that affect the loggers not being initialized? especially when all the other classes have the same logger definition... There are actual instances of the classes, so no need for the loggers to be static...
This is caused by the order classes are initialized in. The main problem is that you call setupSocket from the constructor (of XiaomiSocket) but at that moment the class XiaomiDiscoverySocket has not yet been fully initialized. Common practice is not to call overridable methods from your constructor. Can this help you?
Maybe some of the logic can be moved to initializeinstead?
@dimalo Is there any progress with this?
implemented like @martinvw suggested...
Could you provide a jar to test for the reporters? Thanks!
@dimalo Thanks! I've just tested the jar from https://openhab.jfrog.io/openhab/libs-pullrequest-local/org/openhab/binding/org.openhab.binding.mihome/2.2.0-SNAPSHOT/ 15/7/2017 file size 81,520 bytes and can confirm that it is working now. I am assuming that the changes has flowed through yeah?
That is weird, the file in that link above has now changed and the new filesize is 81,443 bytes and no longer works.
@dimalo thank you so much for continuous effort on this!
I've downloaded the JAR form @CoolWombat's link:
232 | Active | 80 | 2.2.0.201707151254 | Xiaomi Mi Smart Home Binding
Rebooted my RPI3 and unfortunately I'm still experiencing the exceptions:
2017-07-15 19:20:03.934 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'xiaomi.things'
2017-07-15 19:20:04.047 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occurred while calling thing updated at ThingHandler 'org.openhab.binding.mihome.handler.XiaomiBridgeHandler@183ba0': java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)[:1.8.0_121]
at java.util.concurrent.FutureTask.get(FutureTask.java:206)[:1.8.0_121]
at org.eclipse.smarthome.core.common.SafeMethodCaller.callAsynchronous(SafeMethodCaller.java:194)
at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:83)
at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:67)
at org.eclipse.smarthome.core.thing.internal.ThingManager.thingUpdated(ThingManager.java:524)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:221)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:144)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:1)
at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:177)[103:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:57)[103:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:82)[103:org.eclipse.smarthome.core:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.lambda$18(GenericThingProvider.java:978)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at java.util.ArrayList.forEach(ArrayList.java:1251)[:1.8.0_121]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.createThingsFromModelForThingHandlerFactory(GenericThingProvider.java:987)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.access$1(GenericThingProvider.java:950)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.lambda$0(GenericThingProvider.java:234)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at java.util.concurrent.ConcurrentHashMap$KeySetView.forEach(ConcurrentHashMap.java:4649)[:1.8.0_121]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.apply(GenericThingProvider.java:236)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider$1.apply(GenericThingProvider.java:1)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.config.core.BundleProcessorVetoManager.applyActionFor(BundleProcessorVetoManager.java:124)
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.lambda$3(GenericThingProvider.java:304)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at java.lang.Iterable.forEach(Iterable.java:75)[:1.8.0_121]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.createThingsFromModel(GenericThingProvider.java:306)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.modelChanged(GenericThingProvider.java:820)[138:org.eclipse.smarthome.model.thing:0.9.0.201706270841]
at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:286)[127:org.eclipse.smarthome.model.core:0.9.0.201706270841]
at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:120)[127:org.eclipse.smarthome.model.core:0.9.0.201706270841]
at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:234)[127:org.eclipse.smarthome.model.core:0.9.0.201706270841]
at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:297)[127:org.eclipse.smarthome.model.core:0.9.0.201706270841]
at org.eclipse.smarthome.core.service.WatchQueueReader.run(WatchQueueReader.java:206)[103:org.eclipse.smarthome.core:0.9.0.201706270841]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Caused by: java.lang.NullPointerException
at org.openhab.binding.mihome.handler.XiaomiBridgeHandler.dispose(XiaomiBridgeHandler.java:111)[232:org.openhab.binding.mihome:2.2.0.201707151254]
at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:190)[110:org.eclipse.smarthome.core.thing:0.9.0.201706270841]
at org.eclipse.smarthome.core.thing.internal.ThingManager$7.call(ThingManager.java:528)[110:org.eclipse.smarthome.core.thing:0.9.0.201706270841]
at org.eclipse.smarthome.core.thing.internal.ThingManager$7.call(ThingManager.java:1)[110:org.eclipse.smarthome.core.thing:0.9.0.201706270841]
at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181)[103:org.eclipse.smarthome.core:0.9.0.201706270841]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_121]
... 1 more
==> /var/log/openhab2/events.log <==
2017-07-15 19:20:04.087 [ThingUpdatedEvent ] - Thing 'mihome:bridge:f0b429ccxxxx' has been updated.
2017-07-15 19:20:04.094 [ThingUpdatedEvent ] - Thing 'mihome:gateway:f0b429ccxxxx' has been updated.
2017-07-15 19:20:04.101 [ThingUpdatedEvent ] - Thing 'mihome:86sw2:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.105 [ThingUpdatedEvent ] - Thing 'mihome:sensor_switch:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.107 [ThingUpdatedEvent ] - Thing 'mihome:sensor_switch:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.110 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.113 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.117 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.126 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.132 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.140 [ThingUpdatedEvent ] - Thing 'mihome:sensor_magnet:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.147 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.153 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.159 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.162 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.165 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.168 [ThingUpdatedEvent ] - Thing 'mihome:sensor_motion:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.172 [ThingUpdatedEvent ] - Thing 'mihome:sensor_ht:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.180 [ThingUpdatedEvent ] - Thing 'mihome:sensor_ht:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.183 [ThingUpdatedEvent ] - Thing 'mihome:sensor_ht:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.185 [ThingUpdatedEvent ] - Thing 'mihome:sensor_ht:158d000XXXXXXXX' has been updated.
2017-07-15 19:20:04.188 [ThingUpdatedEvent ] - Thing 'mihome:sensor_ht:158d000XXXXXXXX' has been updated.
My things file:
Bridge mihome:bridge:f0b429cXXXXX "Xiaomi Gateway" [ serialNumber="f0b429cXXXXX", ipAddress="192.168.0.3", port=9898, key="3hgsymyoz9kow92h", pollingInterval=6000 ] {
Thing mihome:gateway:f0b429cXXXXX "Xiaomi Mi Smart Home Gateway" [itemId="f0b429cXXXXX"]
Thing mihome:86sw2:158d000XXXXXX "Aqara Wireless Wall Switch" [itemId="158d000XXXXXX"]
Thing mihome:sensor_switch:158d000XXXXXX "Xiaomi Mi Wireless Switch" [itemId="158d000XXXXXX"]
Thing mihome:sensor_switch:158d000XXXXXX "Cat Feeder Switch" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Bedroom Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Boiler Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Front Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Office Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Studio Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_magnet:158d000XXXXXX "Toilet Door" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Bedroom Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Corridor Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Kitchen Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Living Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Office Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_motion:158d000XXXXXX "Studio Motion" [itemId="158d000XXXXXX"]
Thing mihome:sensor_ht:158d000XXXXXX "Bedroom Temperature" [itemId="158d000XXXXXX"]
Thing mihome:sensor_ht:158d000XXXXXX "Boiler Temperature" [itemId="158d000XXXXXX"]
Thing mihome:sensor_ht:158d000XXXXXX "Kid 1 Temperature" [itemId="158d000XXXXXX"]
Thing mihome:sensor_ht:158d000XXXXXX "Kid 2 Temperature" [itemId="158d000XXXXXX"]
Thing mihome:sensor_ht:158d000XXXXXX "Office Temperature" [itemId="158d000XXXXXX"]
}
When I removed all the things from above and run discovery, I got this exception:
2017-07-15 19:23:41.362 [ERROR] [nternal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types '[mihome:bridge]' on 'XiaomiBridgeDiscoveryService'!
java.lang.NullPointerException
at org.openhab.binding.mihome.internal.socket.XiaomiDiscoverySocket.setupSocket(XiaomiDiscoverySocket.java:45)
at org.openhab.binding.mihome.internal.socket.XiaomiSocket.<init>(XiaomiSocket.java:68)
at org.openhab.binding.mihome.internal.socket.XiaomiDiscoverySocket.<init>(XiaomiDiscoverySocket.java:32)
at org.openhab.binding.mihome.internal.discovery.XiaomiBridgeDiscoveryService.startScan(XiaomiBridgeDiscoveryService.java:60)
at org.eclipse.smarthome.config.discovery.AbstractDiscoveryService.startScan(AbstractDiscoveryService.java:199)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:392)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScans(DiscoveryServiceRegistryImpl.java:377)
at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:221)
at org.eclipse.smarthome.io.rest.core.discovery.DiscoveryResource.scan(DiscoveryResource.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[162:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[163:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[14:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[86:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[86:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[177:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[84:org.eclipse.jetty.security:9.2.19.v20160908]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[177:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[86:org.eclipse.jetty.servlet:9.2.19.v20160908]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[177:org.ops4j.pax.web.pax-web-jetty:4.3.0]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.Server.handle(Server.java:499)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[85:org.eclipse.jetty.server:9.2.19.v20160908]
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[76:org.eclipse.jetty.io:9.2.19.v20160908]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[88:org.eclipse.jetty.util:9.2.19.v20160908]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[88:org.eclipse.jetty.util:9.2.19.v20160908]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Am I doing something wrong? 馃
The only version that works with my things file is this one:
org.openhab.binding.mihome-2.1.0-SNAPSHOT.jar.zip
org.openhab.binding.mihome-2.2.0-SNAPSHOT.jar.zip
This is from my local mvn build today - 81524kB
Please confirm, if that's working
@kubawolanin @dimalo The working version I was using from that link I provided with the size of 81,520 bytes is -
223 | Active | 80 | 2.2.0.201707150839 | Xiaomi Mi Smart Home Binding
However, the current version from the same location of file size 81,443 bytes no longer works. Looks like I might have just downloaded the working version before it got updated with whatever changes that broke it.
@dimalo I can confirm that the version you have just provided with file size of 81,524 bytes is working fine -
224 | Active | 80 | 2.2.0.201707150819 | Xiaomi Mi Smart Home Binding
It works! 馃槃
Turns out that I've made a huge mistake - instead of unpacking dimalo's jar, I've just renamed .jar.zip to .jar -.-
Thank you!
Alright, hope the build system will produce the same outcome.
Thanks everyone for testing. I'm quite limited at the moment...
Hi all,
what this error mean?
18:51:13.168 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate command 'OFF' for item 'Plug_Switch' to handler for channel 'mihome:sensor_plug:158d0001XXXXXX:power', because no thing with the UID 'mihome:sensor_plug:158d0001XXXXXX' could be found.
How to add this binding?
Most helpful comment
Alright, hope the build system will produce the same outcome.
Thanks everyone for testing. I'm quite limited at the moment...