Zwave / Cannot change name or location of one specific device. Others work

Hi Guys,

I can’t change the name or the location of my Fibaro FGSD002 Smoke sensor. Doesn’t work in thing configuration of PaperUI, nor in Habmin. Habmin says “thing updated”, but it isn’t. And PaperUI says

Error - 404 not found

followed by

Error - 500 internal server error

The log says:

2016-12-11 17:02:37.144 [INFO ] [ome.io.rest.core.thing.ThingResource] - Received HTTP PUT request for update config at 'things/zwave:device:158bb98dc23:node8/config' for the unknown thing 'zwave:device:158bb98dc23:node8'.

I could name it during discovery, that worked. But I couldn’t change it now and couldn’t add a location.

The device itself is working and I’ve found the device in the json db.

The other devices can all be renamed / added a location.

Delete the device (and xml) and re-adding it hasn’t changed anything.

Really strange. Any hints are appreciated. Is this more related to the zwave binding or to OH2 in general?

I am using OH2 with a quite recent snapshot (#629 from about two weeks).

Normally this would indicate that the thing is unmanaged - ie that you’ve configured this through text files. However, given that I expect you’ll tell me that you didn’t do this ( :slight_smile: ), I’m not sure why it wouldn’t work.

Is there anything else logged in the openhab logfile - maybe enable full debug logging…

I’ve done the thing discovery through Habmin. As usual. Only the item configuration is done through text files. And so I did with my other zwave devices.

I’ve enabled DEBUG for org.eclipse.smarthome.io.rest and got this:

2016-12-11 17:35:31.762 [DEBUG] [thome.io.rest.core.item.ItemResource] - Received HTTP GET request at 'items'
2016-12-11 17:35:31.799 [DEBUG] [io.rest.JSONResponse$ExceptionMapper] - exception during REST Handling
java.lang.IllegalArgumentException: Duplicate channels zwave:device:158bb98dc23:node8:alarm_general
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:157)[103:org.eclipse.smarthome.core.thing:0.9.0.201612010841]
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:149)[103:org.eclipse.smarthome.core.thing:0.9.0.201612010841]
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:145)[103:org.eclipse.smarthome.core.thing:0.9.0.201612010841]
	at org.eclipse.smarthome.core.thing.binding.builder.ThingBuilder.withChannel(ThingBuilder.java:64)
	at org.eclipse.smarthome.core.thing.util.ThingHelper.merge(ThingHelper.java:223)[103:org.eclipse.smarthome.core.thing:0.9.0.201612010841]
	at org.eclipse.smarthome.io.rest.core.thing.ThingResource.update(ThingResource.java:403)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_111]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_111]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[155:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[156:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[11:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[79:org.eclipse.jetty.servlet:9.2.14.v20151106]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[79:org.eclipse.jetty.servlet:9.2.14.v20151106]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:70)[170:org.ops4j.pax.web.pax-web-jetty:4.2.4]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[77:org.eclipse.jetty.security:9.2.14.v20151106]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:271)[170:org.ops4j.pax.web.pax-web-jetty:4.2.4]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[79:org.eclipse.jetty.servlet:9.2.14.v20151106]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[170:org.ops4j.pax.web.pax-web-jetty:4.2.4]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.Server.handle(Server.java:499)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[78:org.eclipse.jetty.server:9.2.14.v20151106]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[70:org.eclipse.jetty.io:9.2.14.v20151106]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[81:org.eclipse.jetty.util:9.2.14.v20151106]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[81:org.eclipse.jetty.util:9.2.14.v20151106]
	at java.lang.Thread.run(Thread.java:745)[:1.8.0_111]
2016-12-11 17:35:31.846 [INFO ] [ome.io.rest.core.thing.ThingResource] - Received HTTP PUT request for update config at 'things/zwave:device:158bb98dc23:node8/config' for the unknown thing 'zwave:device:158bb98dc23:node8'.

Maybe this line is the cause?

java.lang.IllegalArgumentException: Duplicate channels zwave:device:158bb98dc23:node8:alarm_general

Maybe. I’m aware there’s a database export issue with some devices and I need to change the way channels are named to avoid this… I was hoping to leave it for a while and incorporate it into the development branch as it will mean breaking everyones system…

:frowning:

Anyway, that may not be the issue here (directly at least) since I just checked the database, and it doesn’t have this channel for this device. I might well have deleted it yesterday, so I’d suggest to update to the latest binding with the new definition for the FGSD002 and see if it helps…

I want to, but I can’t at the moment. I’ve installed OH2 through openhabian, so I only get the latest apt-get snapshot. Just updated to the recent build and this is my zwave binding:

179 | Active | 80 | 2.0.0.201612091712 | ZWave Binding

This build surely doesn’t include your latest definitions you did yesterday. I have to wait until the newest binding find it’s way into the apt-get repo, haven’t I?

Yes - I guess so. I don’t know when the apt build is done so I can’t comment on when it will make it into the update - sorry.

With the latest binding I now can update name and location. Well, sort of… In Habmin it works without problems. In PaperUI it also works, but I still get a little error pop up and this log entry:

2016-12-12 21:25:50.218 [INFO ] [ome.io.rest.core.thing.ThingResource] - Received HTTP PUT request for update config at ‘things/zwave:device:158bb98dc23:node8/config’ for the unknown thing ‘zwave:device:158bb98dc23:node8’.

Well,but the thing isn’t unknown?! Ok, I do ignore this since it’s just an INFO and the device is working…