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

[quote=“mcqwerty, post:1198, topic:21653”]
Since this seems to work in Domiticz using OpenZwave is there anything I/we can do to give you more info?
[/quote]Not really I think. The protocol is pretty clear, and as it works really well with every other device I’ve got I don’t think there’s a problem with my implementation. I think there’s something about Schlages implementation - possibly timing - that’s different.

I’ll see if I can get myself one off eBay - the problem is since they aren’t available in the UK I can’t actually use it once I’m done testing which is making me think twice at the moment… Since these devices seem to be really popular in the US, it would be good to find out what’s up!

I’d love to offer up my Schlage BE469 as a loaner for testing, but just as your thought of how much it costs to procure off eBay, it’s going to cost close $75 just to ship it to you! :stuck_out_tongue: Then we’d be stuck having to get it back here too.

Is it possible you have Amazon Prime and can pick one up off there? If it has prime shipping it’s free, “borrow” it for 30 days, then send it back with a response of something isn’t working? I don’t like doing it, but at times I will admit I’ve done it. Feels like I’m breaking rules so I only use that option when I must. Aka for the expensive stuff like this.

I did look on Amazon, but they only come from the US so I’m a bit worried that returns might not be possible (and given the price is twice that on eBay, I don’t wanna get stuck with it).

However, I like your thinking :slight_smile: .

Ahhh, gotcha. I’m not aware how Amazon operates in other countries. That’s something I hadn’t considered.

The only other thought I had, was my last resort for trying to figure out my last issue. It’s possible I could set you up with a VPN access to a spare Pine64 I have running the latest OH snapshot (or whatever version). It has a separate ZWave module that I can use to separate from my regular running instance. This way you can remote in and get access to the actual OH interface if that helps and/or the low level communication with the ZWave module. The downside is any attempts at pairing activity, we’d have to try and co-ordinate a time that works best on both sides, and I can setup a remote session to work over with you.

Quite intricate, but putting it out there as an option to help out the binding. Obviously not something I could spin up overnight, but shouldn’t be too hard to get setup and available.

Thanks @Mike_Bagdanoff and @5iver I was not using the same security key. I added the key from Domoticz to OH and restarted.
Then I had to reinitialise the Thing as suggested by @5iver, it only took one reinitialisation and my BE469 now shows as using security!

I am now able to remotely lock and unlock by commanding a switch item linked to the ‘Door Lock’ channel. However the state of the item does not change when the lock is locked or unlocked at the device.
There are additional channels on the BE469 Thing that according to my experimentation behave as follows:

  • ‘Alarm’ Switch - Does nothing if commanded and the state never updates. (What is this for?)
  • ‘Alarm (access)’ Number -
    • 1 = locked manually
    • 2 = unlocked manually
    • 5 = locked with keypad
    • 6 = unlocked with keypad
  • 'Alarm (number) Number - Always matches ‘Alarm (access)’ - (Is this as expected? Why two properties?)
  • ‘Battery Level’ Number - Always shows 1% (I believe this is a known issue that @chris is working on)

It seems logical that numbers 3 and 4 in 'Alarm (access) ’ and ‘Alarm (number)’ would represent locked remotely and unlocked remotely respectively but I have never seen either of these two numbers reported.
For fun I tried commanding these properties but it had no effect.

@5iver Are these findings consistent with what you are seeing?

Success!

Correct. You’ll need to use a rule to set the state based on the alarm notification. I use Alarm (number). My guess is that Alarm (access) is redundant and should be removed from the db, but I left it when I put in Alarm (number), which is how other locks were setup.

That is my understanding.

Here is a portion of my setup to show how I’m handling the alarm notifications to keep the lock states in sync. I used to run a script to poll the zwave log file in OH1 with security binding (which provided the alarm types you see in the comments… wonder why these changed) and the user that had entered a code. I’m still undecided what to do when jammed, as the lock may be locked or unlocked when jammed. To discuss further, we should start a new thread… this one is already over bloated!

Items:

Switch 	Lock_EntranceFront 					    "Lock (Front Entrance) [MAP(lock.map):%s]" 					<lock>		(gUS_EntranceFront,gLock,gSleep_Security) 	{channel="zwave:device:07cb40a2:node183:lock_door"}
Number 	Lock_EntranceFront_Battery 			    "Lock (Front Entrance): Battery [%d%%]" 					<energy>	(gUS_EntranceFront,gBattery) 				{channel="zwave:device:07cb40a2:node183:battery-level"}
Number 	Lock_EntranceFront_Alarm_Type 		    "Lock (Front Entrance): Alarm Type [%d]" 					<shield>	(gUS_EntranceFront) 					    {channel="zwave:device:07cb40a2:node183:alarm_number"}

rule "Lock: Update lock states after alarm events (Lock_EntranceFront)"
when
	Item Lock_EntranceFront_Alarm_Type received update
then
    logDebug("Rules", "Lock: Alarm events: Lock_EntranceFront_Alarm_Type.state=[{}]",Lock_EntranceFront_Alarm_Type.state)
    //21:locked manually, 22:unlocked manually, 18:locked with keypad, 19:unlocked with keypad, 16:wrong code entered too many times (#?), 5:tamper, 26:jammed, 161:failed user code attempt
    //21=1, 22=2, 18=5, 19=6, 26=11
    if (Lock_EntranceFront_Alarm_Type.state == 1 || Lock_EntranceFront_Alarm_Type.state == 5) {
		Lock_EntranceFront.postUpdate(ON)
        logDebug("Rules", "Lock: Alarm events: Lock_EntranceFront updated to ON (locked)")
    }
    else if (Lock_EntranceFront_Alarm_Type.state == 2 || Lock_EntranceFront_Alarm_Type.state == 6) {
        if (Lock_EntranceFront_Alarm_Type.state == 6 && (Presence.state.toString == "Away" || Presence.state.toString == "Sleep")) {
            Presence.sendCommand("Home")
            val String textMessage = "Lock_EntranceFront unlocked with code, so Presence has been changed to Home"
            logDebug("Rules", "Lock: " + textMessage)
            SMS_Notification.sendCommand(textMessage)
        }
        Lock_EntranceFront.postUpdate(OFF)
        US_HallwayEntrance_Dimmer.sendCommand("100")
		logDebug("Rules", "Lock: Alarm events: Lock_EntranceFront updated to OFF (unlocked)")
	}
    else if (Lock_EntranceFront_Alarm_Type.state == 11) {
        SMS_Notification.sendCommand("Lock_EntranceFront is jammed")
    }
end

I have just tried the July 1 jar with OH Snapshot 972 & 975 and the binding fails:

2017-07-04 09:36:15.320 [DEBUG] [org.openhab.binding.zwave           ] - BundleEvent UNRESOLVED - org.openhab.binding.zwave
2017-07-04 09:36:15.323 [DEBUG] [org.openhab.binding.zwave           ] - BundleEvent UPDATED - org.openhab.binding.zwave
2017-07-04 09:36:15.544 [DEBUG] [org.openhab.binding.zwave           ] - BundleEvent RESOLVED - org.openhab.binding.zwave
2017-07-04 09:36:15.545 [DEBUG] [org.openhab.binding.zwave           ] - BundleEvent STARTING - org.openhab.binding.zwave
2017-07-04 09:36:15.552 [DEBUG] [inding.zwave.internal.ZWaveActivator] - Z-Wave binding started. Version 2.1.0.201707012252
2017-07-04 09:36:15.705 [DEBUG] [org.openhab.binding.zwave           ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.core.ConfigOptionProvider, org.eclipse.smarthome.config.core.ConfigDescriptionProvider}={component.name=org.openhab.binding.zwave.ConfigDescription, component.id=93, service.id=214, service.bundleid=176, service.scope=bundle} - org.openhab.binding.zwave
2017-07-04 09:36:15.706 [DEBUG] [org.openhab.binding.zwave           ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.events.EventFactory}={component.name=org.openhab.binding.zwave.event.BindingEventFactory, component.id=94, service.id=216, service.bundleid=176, service.scope=bundle} - org.openhab.binding.zwave
2017-07-04 09:36:15.708 [DEBUG] [org.openhab.binding.zwave           ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={component.name=org.openhab.binding.zwave.internal.ZWaveHandlerFactory, component.id=96, service.id=217, service.bundleid=176, service.scope=bundle} - org.openhab.binding.zwave
2017-07-04 09:36:15.725 [ERROR] [org.openhab.binding.zwave           ] - FrameworkEvent ERROR - org.openhab.binding.zwave
org.osgi.framework.ServiceException: Exception in org.apache.felix.scr.impl.manager.SingleComponentManager.getService()
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:222)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:648)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2201)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1714)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:371)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127)[32:org.apache.felix.scr:2.0.6]
        at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:914)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:886)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:873)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:940)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:740)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:429)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:403)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:278)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)[32:org.apache.felix.scr:2.0.6]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)[org.osgi.core-6.0.0.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:902)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:165)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:75)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:67)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:102)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:466)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.Module.start(Module.java:457)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:717)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:491)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:437)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:955)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1336)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
Caused by: java.lang.NoClassDefFoundError: org/eclipse/smarthome/core/i18n/TranslationProvider
        at java.lang.Class.getDeclaredMethods0(Native Method)[:1.8.0_131]
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)[:1.8.0_131]
        at java.lang.Class.getDeclaredMethods(Class.java:1975)[:1.8.0_131]
        at org.apache.felix.scr.impl.inject.ActivateMethod.getSortedMethods(ActivateMethod.java:196)
        at org.apache.felix.scr.impl.inject.ActivateMethod.doFindMethod(ActivateMethod.java:85)
        at org.apache.felix.scr.impl.inject.BaseMethod.findMethod(BaseMethod.java:173)
        at org.apache.felix.scr.impl.inject.BaseMethod.access$400(BaseMethod.java:39)
        at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.resolve(BaseMethod.java:560)
        at org.apache.felix.scr.impl.inject.BaseMethod$NotResolved.methodExists(BaseMethod.java:582)
        at org.apache.felix.scr.impl.inject.BaseMethod.methodExists(BaseMethod.java:515)
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:300)
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:294)
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:297)
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:108)
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906)
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879)
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823)
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_131]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        ... 64 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.smarthome.core.i18n.TranslationProvider cannot be found by org.openhab.binding.zwave_2.1.0.201707012252
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:389)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_131]
        ... 84 more
2017-07-04 09:36:16.623 [ERROR] [io.openhabcloud.internal.CloudClient] - Socket.IO error: not authorized
2017-07-04 09:36:17.143 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'garage.items'
2017-07-04 09:36:18.786 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'waterrecirc.rules'
2017-07-04 09:36:19.181 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'garagedoors.rules'
2017-07-04 09:36:19.343 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'outdoorlights.rules'
2017-07-04 09:36:19.515 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'pantrylight.rules'
2017-07-04 09:36:19.657 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'autolock.rules'
2017-07-04 09:36:20.715 [WARN ] [org.openhab.binding.zwave           ] - FrameworkEvent WARNING - org.openhab.binding.zwave
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:648)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2201)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1714)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:371)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127)[32:org.apache.felix.scr:2.0.6]
        at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:914)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:886)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:873)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:940)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:740)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:429)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:403)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:278)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)[32:org.apache.felix.scr:2.0.6]
        at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)[32:org.apache.felix.scr:2.0.6]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)[org.osgi.core-6.0.0.jar:]
        at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)[org.osgi.core-6.0.0.jar:]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:902)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:165)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:75)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:67)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:102)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:466)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.Module.start(Module.java:457)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:717)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:491)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:437)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:955)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1336)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
etc...

You need to be using OH2.1 or OH2.2 snapshot as a change was made to ESH that breaks compatibility with the binding a few weeks back.

#975 is the latest 2.2.0 snapshot.

Ok - sorry - I’m not sure what to suggest - the error is caused by the class that was changed not being found. This is all I can say!

sorry I responded to the email… I wasn’t shouting :wink:

No problem ;). 975 is a little old - I think it should still be compatible, but I think somewhere you must have an inconsistent runtime. Otherwise I don’t know why the translation provider is not found.

Hoping maybe someone can help me out here. I’m using the release OpenHAB 2.1 with Chris’s July 1st Zwave binding. I’ve been able to pair my Yale lock (YRD246) securely and am able to unlock/lock the front door remotely, but I can’t get things like user codes to populate. I have re-initialized the node; unpaired and repaired to the controller; reset my controller; re-installed OpenHAB. Really at a loss.

The only thing I’ve noticed is that I see this in the node.xml

<entry>
            <commandClass>COMMAND_CLASS_USER_CODE</commandClass>
            <COMMAND__CLASS__USER__CODE>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              **<numberOfUsersSupported>-6</numberOfUsersSupported>**
              <userCodeList/>
            </COMMAND__CLASS__USER__CODE>

-6 supported users doesn’t seem like a valid input here and can’t be right as this lock supports up to 250.

Probably there’s a signed / unsigned issue. I thought I’d fixed this, but maybe not (or maybe there’s a regression). I will take a look…

Please can you provide me a full debug log file showing the initialisation of this device. Please delete the XML for the node, and restart the binding. Don’t post the log here - either email it to me or open a ticket on my website (you need to register, then you can open a ticket).

@chris - correct me if I’m wrong, but he shouldn’t be seeing the user codes? You had indicated the issue where if you were over a certain number of user codes, this wouldn’t show up due to a change you had made. I know I’ve been glad I set those up once before that update came along. :slight_smile:

So if user codes is the only thing missing, you’re probably in good shape. I’m in the same boat with the Yale lock that has 250 user codes. Chris had noted that there is a bit of an issue in polling the device EVERY time the system restarts and so it taxes the battery a bit. Or at least potentially could be taxing it pretty hard.

I think user codes should work - but there is a bug. I think I fixed this previously, but then I changed the implementation when I added support for hex codes (for the RFID keypads). If there’s more than 128 codes, then it doesn’t work at the moment - I’ll fix that tonight hopefully.

The issue you’re talking about with devices with lots of codes is something I don’t have a ‘fix’ for. It’s not really a problem unless you restart the binding often in which case it might hit the battery a little as it takes a minute or three to download all the codes.

So, I’ll fix the issue with the number of codes, and we can see if there’s then another problem - your memory might be better than mine, and maybe there’s another issue :wink: .

No, that’s what it was I believe. I’m not sure what had happened, I think you just ended up limiting it to a number (128 apparently) for the time being. I don’t recall that there was another “issue” per chance, but I think you had a purpose. Unfortunately I don’t know what that was. :wink:

Happy to test out new version when larger than 128 is supported again and report back. I’ll be happy to be able to test it out again and alter codes if needed. I can definitely validate it does take awhile to poll for all the codes though. I wish there was a way to be able to reduce it or a call to just report back which codes are “used” so that you wouldn’t have to poll everything. But I think thats a larger argument for the ZWave standard/community. :slight_smile:

Here are a few more exceptions that make it through to the console:

openhab> bundle:restart 9
openhab> Exception in thread "Thread-2588" java.lang.NullPointerException
        at org.openhab.binding.zwave.internal.protocol.serialmessage.AddNodeMessageClass.handleRequest(AddNodeMessageClass.java:154)
        at org.openhab.binding.zwave.internal.protocol.ZWaveController.handleIncomingRequestMessage(ZWaveController.java:228)
        at org.openhab.binding.zwave.internal.protocol.ZWaveController.handleIncomingMessage(ZWaveController.java:196)
        at org.openhab.binding.zwave.internal.protocol.ZWaveTransactionManager$ZWaveReceiveThread.run(ZWaveTransactionManager.java:546)

Exception in thread "Timer-46" java.lang.NullPointerException
        at org.openhab.binding.zwave.internal.protocol.ZWaveNode$WakeupTimerTask.run(ZWaveNode.java:1407)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

Exception in thread "Thread-414" java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437)
        at java.util.HashMap$ValueIterator.next(HashMap.java:1466)
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer.doDynamicStages(ZWaveNodeInitStageAdvancer.java:936)
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer.access$10(ZWaveNodeInitStageAdvancer.java:932)
        at org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer$1.run(ZWaveNodeInitStageAdvancer.java:202)

Installed the latest build and now battery percentages are working properly.