[SOLVED] Z-Wave Binding Issues with Channels Using COMMAND_CLASS_CONFIGURATION

The config_decimal is always a Decimal type.

You should check the debug logs during initialisation to see what is happening. It’s likely that there will be some sort of error thrown during the thing init.

So if I wanted to use PaperUI to link to a Number item, do these channels need to be “typedef’d” like params’s 6, 80, and 42?

I see one large error, but not sure it’s related:

2018-07-12 06:03:02.514 [ERROR] [xtext.validation.CompositeEValidator] - Error executing EValidator
java.util.ConcurrentModificationException: null
	at org.eclipse.emf.common.util.AbstractEList$EIterator.checkModCount(AbstractEList.java:758) [67:org.eclipse.emf.common:2.11.0.v20150805-0538]
	at org.eclipse.emf.common.util.AbstractEList$EIterator.doNext(AbstractEList.java:712) [67:org.eclipse.emf.common:2.11.0.v20150805-0538]
	at org.eclipse.emf.common.util.AbstractEList$EIterator.next(AbstractEList.java:692) [67:org.eclipse.emf.common:2.11.0.v20150805-0538]
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:651) [23:com.google.guava:18.0.0]
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) [23:com.google.guava:18.0.0]
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) [23:com.google.guava:18.0.0]
	at java.lang.Iterable.forEach(Iterable.java:74) [?:?]
	at org.eclipse.xtext.xbase.validation.UniqueClassNameValidator.checkUniqueName(UniqueClassNameValidator.java:76) [156:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
	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.eclipse.xtext.validation.AbstractDeclarativeValidator$MethodWrapper.invoke(AbstractDeclarativeValidator.java:118) [152:org.eclipse.xtext:2.12.0.v20170518-0959]
	at org.eclipse.xtext.validation.AbstractDeclarativeValidator.internalValidate(AbstractDeclarativeValidator.java:312) [152:org.eclipse.xtext:2.12.0.v20170518-0959]
	at org.eclipse.xtext.validation.AbstractInjectableValidator.validate(AbstractInjectableValidator.java:71) [152:org.eclipse.xtext:2.12.0.v20170518-0959]
	at org.eclipse.xtext.validation.CompositeEValidator.validate(CompositeEValidator.java:151) [152:org.eclipse.xtext:2.12.0.v20170518-0959]
	at org.eclipse.emf.ecore.util.Diagnostician.doValidate(Diagnostician.java:171) [68:org.eclipse.emf.ecore:2.11.1.v20150805-0538]
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:158) [68:org.eclipse.emf.ecore:2.11.1.v20150805-0538]
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:137) [68:org.eclipse.emf.ecore:2.11.1.v20150805-0538]
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:108) [68:org.eclipse.emf.ecore:2.11.1.v20150805-0538]
	at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.validateModel(ModelRepositoryImpl.java:280) [126:org.eclipse.smarthome.model.core:0.10.0.oh230]
	at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:93) [126:org.eclipse.smarthome.model.core:0.10.0.oh230]
	at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:227) [126:org.eclipse.smarthome.model.core:0.10.0.oh230]
	at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.processIgnoredFiles(FolderObserver.java:137) [126:org.eclipse.smarthome.model.core:0.10.0.oh230]
	at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.addModelParser(FolderObserver.java:85) [126:org.eclipse.smarthome.model.core:0.10.0.oh230]
	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.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BindMethod.invoke(BindMethod.java:658) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1722) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:372) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) [39:org.apache.felix.scr:2.0.12]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1012) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:968) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) [39:org.apache.felix.scr:2.0.12]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [39:org.apache.felix.scr:2.0.12]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
	at org.eclipse.osgi.container.Module.doStart(Module.java:578) [?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:449) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1614) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2018-07-12 06:03:02.561 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'TestEzMultiPli.rules', using it anyway:
Error executing EValidator

Otherwise, I don’t see any errors related to initialization of node 17. Shall I send you a log?

Only Decimal is supported by the binding for configuration parameters.

What do you actually want to do? What is wrong with Decimal type? Sorry - I’m just a bit confused with what your use case is?

I don’t see anything in here that is linked to ZWave, so I don’t think it’s a ZWave issue.

I don’t know that there’s anything fundamentally wrong with a Decimal type, but I haven’t really gotten far enough to confirm for my use case. The original issue with Decimal (mentioned in the first thread and above) is that in the current version of openHAB, creating and linking items to channels in the UI seems to be impossible with Decimal type. Though, if I had to link items through the items files and the channels still worked, no big deal.

I doubt my use case is really very special. I just need too be able to set these configuration settings via rules (Play, and Repetitions are most important). As a workaround, I’ve already tested that I can do this via REST.

I did quickly scan the log for initialization of node 17, and I didn’t see any warnings or errors. But my expertise is obviously limited.

I really find it hard to believe that it’s not possible to link a decimal channel, to an item :confused:. Decimal type can be use with many different item types and I think it would be a rather large flaw if it was unusable? I’m pretty sure that people are using this channel as well.

Your first post doesn’t really make that clear. My understanding of the post is that the channels didn’t exist. The (so called) “error” that you listed doesn’t really relate to this either.

I thought your problem is just that the channels didn’t exist - not that you can’t link to number types, but I guess if you have tested the latest version and it’s still not working, then it’s not that?

So I’m a little confused, sorry, but maybe I’m missing something somewhere?

Posts 1 and 3 here by @kfealey do an excellent job outlining in detail the exact problem I’m experiencing with Decimal types: Item Type: Number or Decimal. It doesn’t seem that thread contains an a solution.

This us probably exacerbated by me spreading this info in multiple threads, so again I apologize :slight_smile:

To summarize, here are all the problems I’m having:

  1. Problem linking items to channels that use Decimal type in the ZW056 device
  2. Problems using those channels even when I am using some modified version of the database. There are apparently two different error types depending on how the database was fixed (my fix attached to this thread, and your fix from the official database)

That is quite an old thread you reference and there was some confusion about the difference is channel types and item types. Changes were made after this - please check if it is working now with the latest binding and the latest definition.

For the binding, I am working off of the development branch of your fork with a fetch as recently as last week. Is that not late enough? For openHAB I’m using released 2.3.0

In the logging sense I guess these are not errors, but they do seem likely to be the reasons why I can’t send commands to channels:

16:21:42.407 [DEBUG] [converter.ZWaveConfigurationConverter] - NODE 17: Config parameter 6 not found in converter

22:05:33.126 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 17: Command received zwave:device:937956ae:node17:config_decimal_param8 → 5
22:05:33.126 [WARN ] [nding.zwave.handler.ZWaveThingHandler] - NODE 17: No command converter set for command zwave:device:937956ae:node17:config_decimal_param8 type DecimalType

I think the newer “No command converter” log messages are due to the fact that the newly updated and exported ZW056 database file is missing “COMMAND_CLASS_” in the channel definitions. When I add these in, I am at least back to the first log message “Config parameter X not found in converter”

I.e.

<property name="binding:*:OnOffType">SWITCH_BINARY,BASIC</property>

should be:

<property name="binding:*:OnOffType">COMMAND_CLASS_SWITCH_BINARY,COMMAND_CLASS_BASIC</property>

Hmmm … Now that I’ve waited a while, one of the channels is working (haven’t tried others yet). I’m wondering now if it was because the node was not fully initialized. I do remember that the node was in the GET_CONFIG? state (not sure I’m recalling that correctly) for a while and now it’s not.

Now I’ll go see if I can link my Number Item with the Decimal channel through the items files. Edit: Yes this works.

This means that the binding hasn’t got as far as reading the configuration - this is one of the last things it does as part of the initialisation process.

This is because you are using the standard export, not the export for the development version. This will have a number of mismatches. I didn’t realise you were on the dev version as the bug I fixed in the converter to fix the channel export did not exist in the development version anyway…

So does this now mean that everything is in fact working? There’s no problem with the Decimal type - you can link it to many different item types and it works with the config parameter ok?

This all makes more sense now. When I had channels working earlier, it must have been that initialization was complete. In one of the times it should have been working, it had not worked for several hours, so maybe something had just hung up the initialization.

This makes me think I have a completely wrong understanding of the database export process. What I did was use the export feature on the database website choosing openHAB2. What should I have done in this case?

Yes, for my purposes it’s functional. Thank you for your help and patience. I still suspect that anyone using this device will have problems linking items to channels via the GUI, but I guess that’s not really a binding problem. I will point out that in the cases where there is a channel-type at the end of the XML file with an item-type of “Number”, the channel shows up in the GUI as “Number” and thus no linking problems. It looks like the pattern is that the database exporter is creating these only for channels having defined options. If it could generate these for others that don’t (Volume and Repetitions), it would workaround the GUI problem.

Why is this? If it worked for you, why is there a problem?

This is true, but if it doesn’t work it’s often the binding that gets blamed so I’d like to understand if there’s an issue still :wink: .

From memory, A Decimal type, which is extended by Percent and Number should work NumberItem, DimmerItem, RollerShutterItem, and possibly others. I’m happy to be told I’m missing something here, but I’d like to try and understand why it doesn’t work.

Correct. If there are no options,then it can use the standard channel - there’s no need to create extra channels in this case.

If there’s a GUI problem, then it should be reported and fixed though right? We shouldn’t mess up the binding and add hundreds of extra channels in order to work around a GUI problem (IMHO anyway).

I effectively had to workaround the GUI linking issue by using items files.

I’m probably not in a good position to tell exactly where the problem lies and it may even be debatable. All I can really see is that the UI shows the channel as using a Decimal type and in those cases I can’t create and link a compatible channel through the UI.

I would still like to know how to export the database appropriately. Can you point me to a resource?

But if there’s an issue, it would still be good to raise it so that someone can work out what’s wrong.

Sorry - it’s not easily possible at the moment for the development version. Once the development version is merged, then it will be available in the existing place.

I’d be happy to file an issue. Should I file it against the openHAB repository on GitHub?

Probably it’s best to start with ESH as PaperUI is mainly developed there.

Please post a link to the issue here as well as I’d like to keep an eye on it - just in case there’s something wrong in the binding (although if it can be linked in the item files, then I’d be surprised :wink: ).

Thanks.

Thanks. So this does appear to be an issue with the binding incorrectly defining the Decimal item type - what has thrown me is that it seems to be possible to link to the unknown type using the item files - are you really sure that this actually worked? If so, that would also be a bug in the system.