FS20 integration into openhab2

Hi, I am trying to get FS20 devices working with my openhab2 version 2.4.0 and the FS20 Binding (binding-fs201 - 1.13.0) an a RasperryPi 3 B+
I installed a CUL USB Stick V3.
However I cannot get that work.
I added the fs20 binding,
I created a fs20.cfg in serices containing
device=serial:/dev/ttyACM0

I created an Item file atelierTest.items with the following content
Switch PowerSwitch
“FS20 Schalter 1”
|
(gAtelierTest)
{fs20=“93B500”}

I see in my UI a Button, an can switch it on and off, I see a message in the karafe screen
PowerSwitch changed from OFF to ON, and the tehn some JAVA exceptions:

11:27:14.054 [WARN ] [org.apache.karaf.services.eventadmin ] - EventAdmin: Exception during event dispatch [org.osgi.service.event.Event [topic=openhab/command/PowerSwitch] {item=PowerSwitch, bridgemarker=true, command=ON, timestamp=1549189634038} | {org.osgi.service.event.EventHandler, org.osgi.service.cm.ManagedService}={service.id=491, service.bundleid=250, service.scope=bundle, event.topics=openhab/command/*, service.pid=org.openhab.fs20, component.name=org.openhab.binding.fs20.binding, component.id=336} | Bundle(org.openhab.binding.fs20_1.13.0 [250])]
java.lang.NullPointerException: null
	at org.openhab.binding.fs20.internal.FS20Binding.internalReceiveCommand(FS20Binding.java:73) ~[?:?]
	at org.openhab.core.binding.AbstractBinding.receiveCommand(AbstractBinding.java:94) ~[?:?]
	at org.openhab.core.events.AbstractEventSubscriber.handleEvent(AbstractEventSubscriber.java:45) ~[?:?]
	at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:415) [3:org.apache.karaf.services.eventadmin:4.2.1]
	at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutBlacklistTiming(HandlerTask.java:82) [3:org.apache.karaf.services.eventadmin:4.2.1]
	at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:104) [3:org.apache.karaf.services.eventadmin:4.2.1]
	at org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:166) [3:org.apache.karaf.services.eventadmin:4.2.1]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	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) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]

Does anyone got this to work, and could help me please.
I already added my mobilealerts items, as well as HUE and SONOS, and my final things to integrate are FS20 switches (from Conrad - FS20 AS1)

Any help. maybe with some additional explanations are welcome

Also, how to check if my CUL is seeing traffic from my FS20 Remote Controls

Hi, I see also the following in the logs :

17:43:05.725 [DEBUG] [org.openhab.io.gcal                  ] - ServiceEvent REGISTERED - {org.osgi.service.cm.ManagedService}={service.id=480, service.bundleid=240, service.scope=bundle, service.pid=org.openhab.gcal, component.name=org.openhab.binding.gcal.eventdownloader, component.id=327} - org.openhab.io.gcal
17:43:06.077 [DEBUG] [org.openhab.binding.fs20             ] - BundleEvent STARTING - org.openhab.binding.fs20
17:43:06.085 [DEBUG] [b.binding.fs20.internal.FS20Activator] - FS20 binding has been started.
17:43:06.087 [DEBUG] [org.openhab.binding.fs20             ] - BundleEvent STARTED - org.openhab.binding.fs20
17:43:06.141 [DEBUG] [org.openhab.core.compat1x            ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.model.item.BindingConfigReader}={service.id=490, service.bundleid=196, service.scope=singleton} - org.openhab.core.compat1x
17:43:07.682 [DEBUG] [org.openhab.binding.fs20             ] - ServiceEvent REGISTERED - {org.openhab.model.item.binding.BindingConfigReader, org.openhab.binding.fs20.FS20BindingProvider}={service.id=489, service.bundleid=250, service.scope=bundle, component.name=org.openhab.binding.fs20.genericbindingprovider, component.id=337} - org.openhab.binding.fs20
17:43:07.693 [DEBUG] [org.openhab.io.transport.cul         ] - BundleEvent [unknown:512] - org.openhab.io.transport.cul
17:43:07.697 [DEBUG] [org.openhab.io.transport.cul         ] - BundleEvent STARTING - org.openhab.io.transport.cul
17:43:07.704 [DEBUG] [openhab.io.transport.cul.CULActivator] - CUL transport has been started.
17:43:07.708 [INFO ] [.eclipse.smarthome.model.script.Sauna] - Sauna Schalter is aus, tue nichts
17:43:07.723 [DEBUG] [.io.transport.cul.internal.CULManager] - Registering class org.openhab.io.transport.cul.internal.serial.CULSerialHandlerImpl for device type serial
17:43:07.729 [DEBUG] [.io.transport.cul.internal.CULManager] - Registering class org.openhab.io.transport.cul.internal.network.CULNetworkHandlerImpl for device type network
17:43:07.731 [DEBUG] [org.openhab.io.transport.cul         ] - BundleEvent STARTED - org.openhab.io.transport.cul
17:43:07.746 [DEBUG] [hab.binding.fs20.internal.FS20Binding] - Activating FS20 binding
17:43:07.749 [WARN ] [.io.transport.cul.CULLifecycleManager] - CUL config is NULL, doing nothing
17:43:07.753 [DEBUG] [hab.binding.fs20.internal.FS20Binding] - Received new config
17:43:07.753 [DEBUG] [org.openhab.binding.fs20             ] - ServiceEvent REGISTERED - {org.osgi.service.event.EventHandler, org.osgi.service.cm.ManagedService}={service.id=491, service.bundleid=250, service.scope=bundle, event.topics=openhab/command/*, service.pid=org.openhab.fs20, component.name=org.openhab.binding.fs20.binding, component.id=336} - org.openhab.binding.fs20
17:43:07.757 [DEBUG] [.io.transport.cul.internal.CULManager] - Trying to open device serial:/dev/ttyACM0 in mode SLOW_RF
17:43:07.757 [DEBUG] [org.openhab.binding.weather          ] - BundleEvent STARTING - org.openhab.binding.weather
17:43:07.759 [DEBUG] [.io.transport.cul.internal.CULManager] - Searching class for device type serial
17:43:07.764 [DEBUG] [weather.internal.bus.WeatherActivator] - Weather binding has been started.
17:43:07.765 [DEBUG] [org.openhab.binding.weather          ] - BundleEvent STARTED - org.openhab.binding.weather
17:43:07.775 [DEBUG] [.internal.serial.CULSerialHandlerImpl] - Opening serial CUL connection for /dev/ttyACM0
17:43:07.800 [DEBUG] [org.openhab.core.compat1x            ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.model.item.BindingConfigReader}={service.id=493, service.bundleid=196, service.scope=singleton} - org.openhab.core.compat1x
17:43:07.828 [WARN ] [.io.transport.cul.CULLifecycleManager] - Can't open CUL
org.openhab.io.transport.cul.CULDeviceException: gnu.io.NoSuchPortException
	at org.openhab.io.transport.cul.internal.serial.CULSerialHandlerImpl.openHardware(CULSerialHandlerImpl.java:111) ~[251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.io.transport.cul.internal.AbstractCULHandler.open(AbstractCULHandler.java:163) ~[251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.io.transport.cul.internal.CULManager.createNewHandler(CULManager.java:150) ~[251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.io.transport.cul.internal.CULManager.getOpenCULHandler(CULManager.java:85) ~[251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.io.transport.cul.CULLifecycleManager.open(CULLifecycleManager.java:86) [251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.io.transport.cul.CULLifecycleManager.config(CULLifecycleManager.java:74) [251:org.openhab.io.transport.cul:1.13.0]
	at org.openhab.binding.fs20.internal.FS20Binding.updated(FS20Binding.java:94) [250:org.openhab.binding.fs20:1.13.0]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1102) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1058) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:138) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:105) [9:org.apache.felix.configadmin:1.9.4]
	at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: gnu.io.NoSuchPortException
	at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:273) ~[?:?]
	at org.openhab.io.transport.cul.internal.serial.CULSerialHandlerImpl.openHardware(CULSerialHandlerImpl.java:87) ~[?:?]
	... 14 more
17:43:07.880 [ERROR] [org.apache.felix.configadmin         ] - [org.osgi.service.event.EventHandler, org.osgi.service.cm.ManagedService, id=491, bundle=250/mvn:org.openhab.binding/org.openhab.binding.fs20/1.13.0]: Unexpected problem updating configuration org.openhab.fs20
java.lang.NullPointerException: null
	at org.openhab.io.transport.cul.CULLifecycleListenerListenerRegisterer.open(CULLifecycleListenerListenerRegisterer.java:21) ~[?:?]
	at org.openhab.io.transport.cul.CULLifecycleManager.open(CULLifecycleManager.java:92) ~[?:?]
	at org.openhab.io.transport.cul.CULLifecycleManager.config(CULLifecycleManager.java:74) ~[?:?]
	at org.openhab.binding.fs20.internal.FS20Binding.updated(FS20Binding.java:94) ~[?:?]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) ~[9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1102) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1058) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:138) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:105) [9:org.apache.felix.configadmin:1.9.4]
	at java.lang.Thread.run(Thread.java:748) [?:?]
17:43:08.138 [DEBUG] [org.openhab.binding.weather          ] - ServiceEvent REGISTERED - {org.osgi.service.cm.ManagedService, org.osgi.service.event.EventHandler}={service.id=494, service.bundleid=259, service.scope=bundle, event.topics=openhab/command/*, service.pid=org.openhab.weather, component.name=org.openhab.binding.weather, component.id=338} - org.openhab.binding.weather
17:43:08.140 [WARN ] [g.weather.internal.bus.WeatherBinding] - Unable to find any configuration settings for weather binding. Check openhab.cfg.
17:43:08.143 [ERROR] [org.apache.felix.configadmin         ] - [org.osgi.service.cm.ManagedService, org.osgi.service.event.EventHandler, id=494, bundle=259/mvn:org.openhab.binding/org.openhab.binding.weather/1.13.0]: Updating property weather of configuration org.openhab.weather caused a problem: Unable to find any configuration settings for weather binding. Check openhab.cfg.
org.osgi.service.cm.ConfigurationException: weather : Unable to find any configuration settings for weather binding. Check openhab.cfg.
	at org.openhab.binding.weather.internal.bus.WeatherBinding.updated(WeatherBinding.java:76) ~[?:?]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) ~[9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1102) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1058) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:138) [9:org.apache.felix.configadmin:1.9.4]
	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:105) [9:org.apache.felix.configadmin:1.9.4]
	at java.lang.Thread.run(Thread.java:748) [?:?]
17:43:08.150 [DEBUG] [org.openhab.binding.weather          ] - ServiceEvent REGISTERED - {org.openhab.model.item.binding.BindingConfigReader, org.openhab.binding.weather.WeatherBindingProvider}={service.id=492, service.bundleid=259, service.scope=bundle, component.name=org.openhab.binding.weather.genericbindingprovider, component.id=339} - org.openhab.binding.weather
17:43:08.196 [DEBUG] [g.weather.internal.gfx.WeatherServlet] - Starting up weather servlet at /weather
17:43:08.260 [DEBUG] [org.openhab.binding.weather          ] - ServiceEvent REGISTERED - {javax.servlet.ServletContext}={osgi.web.version=1.13.0, osgi.web.contextpath=/, service.id=495, osgi.web.symbolicname=org.openhab.binding.weather, service.bundleid=259, service.scope=singleton, osgi.web.contextname=custom} - org.openhab.binding.weather
17:43:08.669 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'mqtt:systemBroker:embedded-mqtt-broker' changed from UNINITIALIZED to INITIALIZING
17:43:08.692 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'mqtt:systemBroker:embedded-mqtt-broker' changed from INITIALIZING to ONLINE
17:43:08.969 [INFO ] [smarthome.event.RuleAddedEvent       ] - Rule '4be8b357-70fc-409c-8498-de1de6d11162' has been added.
17:43:08.977 [INFO ] [smarthome.event.RuleStatusInfoEvent  ] - 4be8b357-70fc-409c-8498-de1de6d11162 updated: UNINITIALIZED
17:43:09.080 [INFO ] [smarthome.event.RuleStatusInfoEvent  ] - 4be8b357-70fc-409c-8498-de1de6d11162 updated: IDLE
17:43:09.249 [ERROR] [automation.module.script.defaultscope] - bundle org.eclipse.smarthome.automation.module.script.defaultscope:0.10.0.oh240 (273)[org.eclipse.smarthome.automation.module.script.defaultscope.internal.DefaultScriptScopeProvider(353)] : The addThingActions method has thrown an exception
java.lang.NullPointerException: null
	at org.eclipse.smarthome.automation.module.script.defaultscope.internal.DefaultScriptScopeProvider.addThingActions(DefaultScriptScopeProvider.java:125) ~[?:?]
	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.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.invoke(BindMethod.java:42) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1809) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.bindDependency(DependencyManager.java:1637) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.bind(DependencyManager.java:1625) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:301) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
	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:891) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [?:?]
	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.start(Module.java:467) [?:?]
	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) [?:?]
17:43:09.266 [ERROR] [automation.module.script.defaultscope] - bundle org.eclipse.smarthome.automation.module.script.defaultscope:0.10.0.oh240 (273)[org.eclipse.smarthome.automation.module.script.defaultscope.internal.DefaultScriptScopeProvider(353)] : The addThingActions method has thrown an exception
java.lang.NullPointerException: null
	at org.eclipse.smarthome.automation.module.script.defaultscope.internal.DefaultScriptScopeProvider.addThingActions(DefaultScriptScopeProvider.java:125) ~[?:?]
	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.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.invoke(BindMethod.java:42) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1809) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.bindDependency(DependencyManager.java:1637) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.bind(DependencyManager.java:1625) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:301) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
	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:891) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [?:?]
	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.start(Module.java:467) [?:?]
	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) [?:?]
17:43:10.354 [DEBUG] [org.openhab.core                     ] - BundleEvent STARTING - org.openhab.core
17:43:12.390 [DEBUG] [org.openhab.core                     ] - BundleEvent STARTED - org.openhab.core

I have read this thread and many others on FS20 integration in openhab2, with little success. So here is what I did:

  • installed openHAB 2.5.6 (latest version) on Raspberry Pi 2B, using default openHabian unattended installation - works
  • attached my nanoCUL 868 MHz to the Raspi, it shows up without problems as serial device /dev/ttyUSB0 (or as /dev/serial/by-id/xxxx), also the messages in /var/log/messages look ok; I used the same device with fhem before without problems
  • searched for FS20 binding in documentation - found here
  • added /etc/openhab2/services/fs20.cfg file according to documentation, with device=serial:/dev/ttyUSB0 configuration
  • searched for FS20 binding in paperUI - does not exist
  • enabled installation of 1.x addons in paperUI - still FS20 binding does not show up
  • restarted openhab2 service - no change
  • rebooted Raspi - no change
  • installed addons locally via sudo apt-get install openhab2-addons - no change (even after restart/reboot)
  • installed addon org.openhab.binding.fs20-1.14.0.jar manually into /usr/share/openhab2/addons directory - get the following error when openHAB tries to activate the bundle:

    2020-07-08 22:27:09.354 [WARN ] [org.apache.felix.fileinstall ] - Error while starting bundle: file:/usr/share/openhab2/addons/org.openhab.binding.fs20-1.14.0.jar
    org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.fs20 [231]
    Unresolved requirement: Import-Package: org.openhab.core.binding

So I must say I have no idea what else to try. From my experience with OSGi and the above error message it seems that I would probably need to install another bundle that provides the missing package that the old 1.x addon expects, but somehow does not find on 2.x. But as the documentation says that FS20 is supported I would really like to get it working - ideally not manually installing bundles but rather clicking INSTALL in the paperUI :wink:
So any suggestions would be more than welcome!

Cheers, Peter

Since there is only a 1.x version, enabling 1.x should make the binding visible in the Add-ons section for installation. But you won’t be able to configure or see anything else in PaperUI as it’s a 1.x binding. So if it won’t show up, there might be something else wrong. Do you see other 1.x bindings?

Manual installation doesn’t work as it is dependent on the cul transport feature. What might work is to also install the maxcul binding, which will install that dependency. It needs to be installed and not dropping in the jar file, because that will cause the same problem. But that is also a 1.x binding. So if you didn’t see the FS20 binding, you might not see the other bindings either.

On a side note. It looks like the FS20 products have been discontinued, making the change someone will create 2.x version of the binding less likely.

Thanks for your reply.

Do you see other 1.x bindings?

Actually no. Looking through the list of bindings all have version 2.5.6, which is the version of the server.

[…] also install the maxcul binding […] But that is also a 1.x binding.

As expected it does not show up, filtering for “max” only shows binding-max and binding-powermax, both version 2.5.6.

It looks like the FS20 products have been discontinued

Not quite. ELV still delivers quite a number of products to this system. I don’t know whether they develop new products though. But the system is very widely used, especially as it is established on the market since a long time (at least 15 years) and at a reasonable price.

What else could I check or do to get the 1.x bindings show up? As said, I have been using a bog standard installation following the instructions to set up openhabian unattended on a brand new SD card…

Finally I made it work! Here are the steps, as reference for those that might run into similar problems:

  1. Further reading through the installation instructions for addons I found the option to manually install addons via editing the file /etc/openhab2/services/addons.cfg. So I added the following properties and values in this file (note that the file was completely commented before, so the changes from PaperUI seem to have been stored elsewhere; anyway I kept the hue binding as I already had this configured via PaperUI):

    package = standard
    remote = true
    legacy = true
    binding = hue,fs201

    This was doing the trick! Once I saved the file the FS20 addon was installed and magically also all other 1.x addons appeared in the PaperUI.

  2. Next, the FS20 addon raised the well-known Can't open CUL error (just search this forum), and following the experience in this post I added the following magic flag to /usr/share/openhab2/start.sh:

    #!/bin/sh
    SERIAL_PORTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0"

    exec “${RUNTIME}/bin/karaf” “${SERIAL_PORTS}” “${@}”

  3. Now I needed to find out what to put into the /etc/openhab2/items/fs20.items file. For this I stopped the openHAB service and started it manually on the command line in debug mode:

    sudo service openhab2 stop
    sudo openhab-cli start --debug

    This opens the openHAB shell (Karaf shell) where I enabled debugging for the relevant bundles:

    openhab> log:set DEBUG org.openhab.binding.fs20
    openhab> log:set DEBUG org.openhab.io.transport.cul
    openhab> log:tail

    The last command shows all incoming log messages (can be stopped by Ctrl-C). When pressing an FS20 hardware control switch the magic code of this switch is shown as DEBUG message in the console window. The address consists of the so-called FS20 hose code and the address/sub-address of the switch in HEX notation.
    Side note: I found this page handy for verifying the house code and address and understanding the mapping: basically every number in the FS20 code scheme (1-4) is translated to 2 bits (00…11) in the HEX code for openHAB, accordingly, leading to 2 bytes house code (= 4 HEX nibbles = 8 numbers in FS20 notation) and 1 byte address (= 2 HEX nibbles = 4 numbers in FS20 notation), so a total of 3 bytes.

  4. Sometimes it was useful to restart the bundle, for example if I unplugged the CUL and wanted to make sure it gets reconfigured or simply to ensure a clean restart:

    openhab> bundle:restart org.openhab.binding.fs20

    Again, looking at the log and debug messages helped in finding some of the issues.

  5. Now I populated the /etc/openhab2/items/fs20.items file, e.g. like this content:

    Switch PowerSocket1 "Funk-Schalter 1" { fs20="C952F0" }
  1. Finally I created a simple sitemap file /etc/openhab2/sitemaps/fs20.sitemap:
    sitemap fs20 label="Smart Home FS20"
    {
        Frame label="Demo"
        {
            Switch item=PowerSocket1
        }
    }

The last step made the switch appear in the Basic UI. As expected the UI follows the status when I press the buttons on my FS20 hardware switch externally, plus I can toggle the connected power socket by operating the switch in the Basic UI.

Nothing of the above shows up in the PaperUI, so the configuration is all manual in the mentioned files.

What I am still missing is to create a respective thing in PaperUI (as it seems recommended not to do it manually via things file). However, I seem not be able to do it as the configured FS20 binding does not show up in PaperUI under Configuration>Bindings. Any suggestion?

Quite a journey… hope this helps if others run into similar problems. Have fun!

You cannot. Things are a OHv2 thing, as is PaperUI. FS20 binding is v1.