OH2 Z-Wave refactoring and testing... and SECURITY

I’m getting the same error on all of my 20 devices, unfortunately no errors in debug log:

2017-10-11 16:31:22.817 [ERROR] [st.core.internal.thing.ThingResource] - Exception during HTTP PUT request for update config at 'things/zwave:device:15ca6a108b9:node10/config' for thing 'zwave:device:15ca6a108b9:node10': null

zwave development binding version 2.2.0.201710012213

This is how it looks in PaperUI: the association group is bound to node 1 (which in fact is the controller). Trying to set it to “openHAB Controller” via PaperUI gives again the same error in openhab.log.

I can confirm this behaviour. I noticed that one of my dimmers did not update its state in the UI when I switched it manually by physical switch. So I decided to have a look at the associations if association group 1 for controller updates was set to the controller. In Habmin it shows that it apparently is set correctly:

However, looking at the same node 160 in PaperUI tells a different story:

So obviously one of the two is not telling the truth. The reporting from PaperUI would explain the dimmer’s behaviour (assocaition group 1 is initial, not set to controller).
However it is indeed not possble to set the association neither with Habmin nor with PaperUI.

The exception in OHLOG is:

2017-10-11 20:30:55.845 [ERROR] [ome.io.rest.core.thing.ThingResource] - Exception during HTTP PUT request for update config at 'things/zwave:device:ZWOG:node160/config' for thing 'zwave:device:ZWOG:node160': java.math.BigDecimal cannot be cast to java.lang.Integer

@chris : Do you have any idea?

I am using OH Snapshot 1036 with Zwave Dev Binding version 2.2.0.201710012213.

I suspect that PaperUI doesn’t handle this interface correctly. If you check the configuration file, what does it show?

The xml file in the Zwave folder?

<associationGroups>
    <entry>
      <int>1</int>
      <associationGroup>
        <index>1</index>
        <associations>
          <associationMember>
            <node>1</node>
            <endpoint>0</endpoint>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
    <entry>
      <int>2</int>
      <associationGroup>
        <index>2</index>
        <associations/>
      </associationGroup>
    </entry>

If I pasted the correct detail from the XML it seems to say indeed that node 1 is member of associations group 1.

No - the configuration - either from the configuration file (ie the json) or the REST interface. That said, the XML shows that the association is set.

Ok, in the JSON file it has the same info:

 "group_1": [
            "node_1_0"
          ],

How can I acces this?

Just go to the dashboard and select the REST interface. It might be easier to look in the json file though if you’re not familiar.

Same info as what? It looks ok right?

Yes it looks correct. Same info as in the xml file and as in Habmin.

The items that I have that through errors when saving associations (newly added or had the associations removed and readded) are missing <endpoint>0</endpoint> in the associationGroups section of the xml. In spot checking some of my other devices, I am finding some others that I do not recall touching that are also missing <endpoint>0</endpoint>. The jsondb file shows the same as the xmls.

  <associationGroups>
    <entry>
      <int>1</int>
      <associationGroup>
        <index>1</index>
        <associations>
          <associationMember>
            <node>1</node>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
  </associationGroups>

  "group_1": [
    "node_1"
  ],

The missing endpoint is perfectly ok in itself. There are just different ways to set associations (multichannel, or the normal association class, and the multichannel has 2 options in itself).

Really it’s hard to say what’s happening without the log showing the error, which appears to be an issue. I’ll see if I can find this tonight.

Edit:

I get the same error but with a 500 error response when I send this in the body through the REST UI or from command line:

{"group_1":["node_1_0"]}

But this goes through without error:

{"test_1":["node_1_0"]}

I have a test in the binding that I believe does exactly this and it seems to work ok. Is this for a specific device or all devices?

https://github.com/openhab/org.openhab.binding.zwave/blob/development/src/test/java/org/openhab/binding/zwave/test/handler/ZWaveThingHandlerTest.java#L127

Let’s see if we can get better logging in ESH.

For all zwave devices, I can create and modify everything I’ve tried, except for group_1. I get the error when trying to modify group_1, or even trying to create it when it does not exist. One thing I noted was that if a device has {"group_1":["node_1_0"]} and I send the same, there is no error, but the configuration changes to {“group_1”:[“node_1”]}. Sending it a second time gets the 500 error.

For non-wave devices, it was mixed results. I can modify Network Health devices as I wish, even with group_1. For Zigbee devices, I get a 200 response but nothing is changed in the configuration, no matter what I try to create or modify.

Understood… I was curious to test out the REST UI for configuration of Things, so tested this out while playing with it.

So the next question then - does group_1 in all your devices allow multiple nodes in the group, or are they all lifeline type groups that only allow 1 node?

If instead of {"group_1":["node_1_0"]} you use {"group_1":"node_1_0"} what happens? Both formats should work and both will be used.

Thanks.

All of my devices can have multiple associations for group_1.

This gave the same error.

Ok, thanks. Not sure if it helps too much, but I’ll take a look at the code in this area and see if I can spot something before we get decent logging added…

2 Likes

@chris , in version 2.2.0.201710012213, were you possibly working in an area that could cause these errors for one of my newly added devices? They could very well be self inflicted though (ugly story) :roll_eyes:.

After an OH startup (before initialized):

2017-Oct-13 01:58:34.997 [ERROR] [eclipse.smarthome.core.thing.internal.ThingManager] - Exception occurred while initializing handler of thing 'zwave:device:07cb40a2:node91': java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) [?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:206) [?:?]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.callAsynchronous(SafeMethodCaller.java:194) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:83) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:67) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.doInitializeHandler(ThingManager.java:633) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.initializeHandler(ThingManager.java:568) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.registerAndInitializeHandler(ThingManager.java:955) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.thingUpdated(ThingManager.java:443) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:217) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:140) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:1) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:183) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:1) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:57) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:81) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractManagedProvider.update(AbstractManagedProvider.java:126) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.update(AbstractRegistry.java:215) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$2.run(ThingManager.java:302) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NullPointerException
        at java.util.Collections$UnmodifiableMap.<init>(Collections.java:1446) ~[?:?]
        at java.util.Collections.unmodifiableMap(Collections.java:1433) ~[?:?]
        at org.openhab.binding.zwave.internal.protocol.commandclass.ZWaveConfigurationCommandClass.getParameters(ZWaveConfigurationCommandClass.java:189) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.updateNodeProperties(ZWaveThingHandler.java:1485) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.bridgeStatusChanged(ZWaveThingHandler.java:494) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialize(ZWaveThingHandler.java:177) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$6.call(ThingManager.java:636) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$6.call(ThingManager.java:1) ~[?:?]
        at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
        ... 3 more

After an OH startup (after initialized):

2017-Oct-13 17:46:25.066 [ERROR] [eclipse.smarthome.core.thing.internal.ThingManager] - Exception occurred during notification about bridge status change on thing 'zwave:device:07cb40a2:node91': null
java.lang.NullPointerException: null
        at java.util.Collections$UnmodifiableMap.<init>(Collections.java:1446) [?:?]
        at java.util.Collections.unmodifiableMap(Collections.java:1433) [?:?]
        at org.openhab.binding.zwave.internal.protocol.commandclass.ZWaveConfigurationCommandClass.getParameters(ZWaveConfigurationCommandClass.java:189) [219:org.openhab.binding.zwave:2.2.0.201710012213]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.updateNodeProperties(ZWaveThingHandler.java:1485) [219:org.openhab.binding.zwave:2.2.0.201710012213]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.bridgeStatusChanged(ZWaveThingHandler.java:494) [219:org.openhab.binding.zwave:2.2.0.201710012213]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$9.run(ThingManager.java:787) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

After changing a Label in Habmin:

2017-Oct-13 02:29:30.744 [ERROR] [eclipse.smarthome.core.thing.internal.ThingManager] - Exception occurred while calling thing updated at ThingHandler 'org.openhab.binding.zwave.handler.ZWaveThingHandler@6ac2236d': java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) [?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:206) [?:?]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.callAsynchronous(SafeMethodCaller.java:194) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:83) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:67) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.thingUpdated(ThingManager.java:423) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:217) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:140) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyListenersAboutUpdatedElement(ThingRegistryImpl.java:1) [107:org.eclipse.smarthome.core.thing:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:183) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:1) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:57) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:81) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.core.common.registry.AbstractManagedProvider.update(AbstractManagedProvider.java:126) [100:org.eclipse.smarthome.core:0.9.0.201709260841]
        at org.eclipse.smarthome.io.rest.core.internal.thing.ThingResource.update(ThingResource.java:347) [117:org.eclipse.smarthome.io.rest.core:0.9.0.201709260841]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [159:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [160:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [157:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [157:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [157:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [157:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [157:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [17:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) [87:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [87:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [173:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [84:org.eclipse.jetty.security:9.3.14.v20161028]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [173:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [87:org.eclipse.jetty.servlet:9.3.14.v20161028]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [173:org.ops4j.pax.web.pax-web-jetty:6.0.6]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.Server.handle(Server.java:534) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [86:org.eclipse.jetty.server:9.3.14.v20161028]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [78:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [78:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [78:org.eclipse.jetty.io:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [89:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [89:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [89:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [89:org.eclipse.jetty.util:9.3.14.v20161028]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [89:org.eclipse.jetty.util:9.3.14.v20161028]
        at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NullPointerException
        at java.util.Collections$UnmodifiableMap.<init>(Collections.java:1446) ~[?:?]
        at java.util.Collections.unmodifiableMap(Collections.java:1433) ~[?:?]
        at org.openhab.binding.zwave.internal.protocol.commandclass.ZWaveConfigurationCommandClass.getParameters(ZWaveConfigurationCommandClass.java:189) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.updateNodeProperties(ZWaveThingHandler.java:1485) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.bridgeStatusChanged(ZWaveThingHandler.java:494) ~[?:?]
        at org.openhab.binding.zwave.handler.ZWaveThingHandler.initialize(ZWaveThingHandler.java:177) ~[?:?]
        at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:190) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$4.call(ThingManager.java:427) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$4.call(ThingManager.java:1) ~[?:?]
        at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?]
        ... 1 more

Nope - not touched anything in the configuration management for a while. My guess is that there may be an issue with XMLs and the list isn’t loading correctly.

1 Like