Sounds great @Lolodomo!
Please note that with the new openHAB 2 beta release, the way of confirming that a binding is working has changed - there is no need to leave the openHAB 1 repo at all, instead you can do a PR similar to this one: https://github.com/openhab/openhab/pull/3720/files
Add-ons that are added this way to openHAB 1 will automatically picked up by the distribution build and thus be available in the official packaging!
I tried Freebox binding 2.0 in openHAB2 beta 1 and it does not work. When I add manually a thing, I get this error:
01:07:13.504 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occured while calling thing handler factory 'org.openhab.binding.freebox.internal.FreeboxHandlerFactory@15a32b6': javax/net/ssl/HostnameVerifier
java.lang.NoClassDefFoundError: javax/net/ssl/HostnameVerifier
at java.lang.ClassLoader.defineClass1(Native Method)[:1.8.0]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)[:1.8.0]
at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:272)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:632)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:588)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:540)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:527)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0]
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:709)
at org.matmaul.freeboxos.internal.RestManager.<init>(RestManager.java:59)
at org.matmaul.freeboxos.FreeboxOsClient.<init>(FreeboxOsClient.java:52)
at org.openhab.binding.freebox.handler.FreeboxHandler.authorize(FreeboxHandler.java:97)
at org.openhab.binding.freebox.handler.FreeboxHandler.initialize(FreeboxHandler.java:145)
at org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory.registerHandler(BaseThingHandlerFactory.java:130)
at org.eclipse.smarthome.core.thing.internal.ThingManager$6.call(ThingManager.java:507)
at org.eclipse.smarthome.core.thing.internal.ThingManager$6.call(ThingManager.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0]
at java.lang.Thread.run(Thread.java:744)[:1.8.0]
Caused by: java.lang.ClassNotFoundException: javax.net.ssl.HostnameVerifier cannot be found by org.openhab.binding.freebox_2.0.0.b1
Trying to remove the thing caused another exception:
java.lang.NullPointerException
at org.eclipse.smarthome.core.thing.internal.ThingManager$1.statusUpdated(ThingManager.java:186)
at org.eclipse.smarthome.core.thing.internal.ThingManager.thingRemoving(ThingManager.java:388)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:209)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.remove(ThingRegistryImpl.java:105)
at org.eclipse.smarthome.core.thing.setup.ThingSetupManager.removeThing(ThingSetupManager.java:434)
at org.eclipse.smarthome.io.rest.core.thing.setup.ThingSetupManagerResource.removeThing(ThingSetupManagerResource.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0]
at java.lang.reflect.Method.invoke(Method.java:483)[:1.8.0]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)[10:com.eclipsesource.jaxrs.jersey-min:2.22.1]
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[12:com.eclipsesource.jaxrs.publisher:5.3.0.201512270850]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)[71:org.eclipse.jetty.servlet:9.2.10.v20150310]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[71:org.eclipse.jetty.servlet:9.2.10.v20150310]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:70)[135:org.ops4j.pax.web.pax-web-jetty:4.2.3]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[69:org.eclipse.jetty.security:9.2.10.v20150310]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:271)[135:org.ops4j.pax.web.pax-web-jetty:4.2.3]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[71:org.eclipse.jetty.servlet:9.2.10.v20150310]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[135:org.ops4j.pax.web.pax-web-jetty:4.2.3]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.Server.handle(Server.java:497)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[70:org.eclipse.jetty.server:9.2.10.v20150310]
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)[62:org.eclipse.jetty.io:9.2.10.v20150310]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[73:org.eclipse.jetty.util:9.2.10.v20150310]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[73:org.eclipse.jetty.util:9.2.10.v20150310]
at java.lang.Thread.run(Thread.java:744)[:1.8.0]
When I tried with the 1.8 version of the Freebox binding, here is the error I get at startup:
00:53:35.382 [WARN ] [org.apache.felix.fileinstall ] - Error while starting bundle: file:/home/pi/openhab/addons/org.openhab.binding.freebox-1.8.0.jar
org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.freebox [159]
Unresolved requirement: Import-Package: org.openhab.core.binding
at org.eclipse.osgi.container.Module.start(Module.java:434)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:]
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1245)[8:org.apache.felix.fileinstall:3.5.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1217)[8:org.apache.felix.fileinstall:3.5.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1207)[8:org.apache.felix.fileinstall:3.5.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:504)[8:org.apache.felix.fileinstall:3.5.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:358)[8:org.apache.felix.fileinstall:3.5.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:310)[8:org.apache.felix.fileinstall:3.5.0]
After creating a RFXCOM bridge thing manually with the Paper UI (automatic discovery was finding nothing) and then restart OH2, I get this exception in the logs:
Exception in thread "Thread-38" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at org.openhab.binding.rfxcom.internal.connector.RFXComSerialConnector$SerialReader.run(RFXComSerialConnector.java:178)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter cannot be found by org.openhab.binding.rfxcom_2.0.0.b1
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Weather binding 1.8 not working => issue created
Mios binding 1.8 not working => issue created
Netatmo binding 1.8 not working => issue created
RFXCOM 2.0 not working even with the last distro snapshot => issue created
I will test the fix for Freebox binding 2.0 when a new snapshot including this fix is available.
After testing several 1.8 bindings, it looks like there is a general problem with 1.x binding compatibility in openHAB2.
The error is always the same, something like:
org.osgi.framework.BundleException: Could not resolve module: xxxxxxxxxx
Unresolved requirement: Import-Package: xxxxxxx
This prevents the bundle to be started.
In case it can be solved without fixing the 1.x binding themselves, I think that could be a real good idea to put all 1.8 bindings in the addons sub-directory and then start openHAB2 to see what are the ones not starting due to unresolved requirements. This would require someone who knows how to fix that.
Then, when at least the 1.x bindings are starting, we could continue to test binding per binding and provide detailed feedback.
Sounds like a good plan. As the fix is very simple, it would be great if you could simply send PRs instead of only entering issues. This way we can very quickly resolve the import-package problems and see what else might be in the way.
Regarding openHAB2, I am just a basic user. I have not yet any IDE setup.
It was asked for testers to help testing the compatibility of 1.x bindings in openHAB2 and it is what I am currently doing for any bindings I am using in openHAB1.
@Lolodomo Ok, understood and I of course appreciate your help on testing nonetheless.
@maintainer, I need your help as I am drowning in support requests: Could you help adjusting the openHAB 1 add-ons by adding the required manifest entries and creating PRs for it? I would think that most of the issues of openHAB 1 add-ons should be solvable by this.
@Extrabannies, how are you installing this binding?
Are you just dropping in the old jar in the addons folder or are you using the feature:install ? @Kai, I guess that on OH2, new bindings should always be installed using the feature:install, as the karaf feature contains all the dependencies which should be installed together with the binding.
Davy, for openHAB 1 add-ons that are not yet in the distro, there is no feature defined at all, so feature:install won’t work! And people are used from openHAB 1 that they need to add all dependent bundles as well - but for most of them, there are no dependencies.
Hi Davy,
I unpacked the provided zip and as Kai mentioned extracted the necessary addons in it. Old items-, rules-, sitemap-, etc. files I copy/paste in.
Please advise if another method is required.
Thanks for all your help.
Cheers
Björn
PS: Release 1.8 works perfect so far! Great job!
For the RWESmarthome, there is already a karaf feature defined.
On the console, you can execute the command feature:list to view which bindings can be installed without having to place the jars in the addons folder.
To install the RWESmarthome, you can execute feature:install openhab-binding-rwesmarthome on the console. That should install it with all dependencies.
Ok, right - for this binding, it makes sense; but installation can then also be done either by installing it through the Paper UI or by adding it in addons.cfg - just to name two other options
For the addons folder, I was rather referring to this post.
I’m happy to test OH2, but I note that the GPIO Binding is not on either the OH2 Native list or the OH1 Compatable list. I have many Output Relays and Input Contacts using GPIO, is this binding likely to appear in the near future?
I also use MAPDB Persistance which doesn’t seem to be on the list, is there an alternative suitable for low write cycle SD Cards that only records the last state?
@Kai: I installed the last snapshot #87 to test your fix (Freebox binding) but unfortunately openHAB2 does not start anymore. I never get the access to the console.
The first error in my logs is:
2016-01-17 10:15:45.783 [WARN ] [url.mvn.internal.AetherBasedResolver] - Error resolving artifactorg.openhab.core:org.openhab.core.karaf:jar:2.0.0-SNAPSHOT:Could not find artifact org.openhab.core:org.openhab.core.karaf:jar:2.0.0-SNAPSHOT
shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact org.openhab.core:org.openhab.core.karaf:jar:2.0.0-SNAPSHOT
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)[4:org.ops4j.pax.url.mvn:2.4.3]
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)[4:org.ops4j.pax.url.mvn:2.4.3]
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)[4:org.ops4j.pax.url.mvn:2.4.3]
at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)[4:org.ops4j.pax.url.mvn:2.4.3]
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:573)[4:org.ops4j.pax.url.mvn:2.4.3]
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:528)[4:org.ops4j.pax.url.mvn:2.4.3]
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:506)[4:org.ops4j.pax.url.mvn:2.4.3]
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:481)[4:org.ops4j.pax.url.mvn:2.4.3]
at org.apache.karaf.features.internal.download.impl.MavenDownloadTask.download(MavenDownloadTask.java:34)[9:org.apache.karaf.features.core:4.0.3]
at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:58)[9:org.apache.karaf.features.core:4.0.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0]
at java.lang.Thread.run(Thread.java:744)[:1.8.0]
Caused by: shaded.org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.openhab.core:org.openhab.core.karaf:jar:2.0.0-SNAPSHOT
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:434)[4:org.ops4j.pax.url.mvn:2.4.3]
... 16 more
The jfrog snapshot repo url is already included in the online distro.
The error appears to be related to org.openhab.core.karaf, which should be included in the distribution (even in the online one).
I’ll download the same snapshot to see if I can reproduce the error.