3rd Party Bluetooth Binding. Beta testers needed

@vizras, you are using wrong “pipe” symbol https://en.wikipedia.org/wiki/Broken_pipe

“|” - is correct one.

hey @vizras, can you pls jump into a chat to resolve your issue?

Will do, thanks for the quick responses, you are a star.

I installed the version 1.1.1, still the same errors…

2018-03-01 23:02:25.160 [ERROR] [.eclipse.smarthome.binding.bluetooth] - [binding.bluetooth(274)] The activate method has thrown an exception
java.lang.IllegalStateException: GATT spec registry file is missing
	at org.sputnikdev.bluetooth.gattparser.spec.BluetoothGattSpecificationReader.readRegistryFromClassPath(BluetoothGattSpecificationReader.java:426) ~[?:?]
	at org.sputnikdev.bluetooth.gattparser.spec.BluetoothGattSpecificationReader.readServicesRegistryFromClassPath(BluetoothGattSpecificationReader.java:257) ~[?:?]
	at org.sputnikdev.bluetooth.gattparser.spec.BluetoothGattSpecificationReader.<init>(BluetoothGattSpecificationReader.java:96) ~[?:?]
	at org.sputnikdev.bluetooth.gattparser.BluetoothGattParserFactory.getSpecificationReader(BluetoothGattParserFactory.java:59) ~[?:?]
	at org.sputnikdev.bluetooth.gattparser.BluetoothGattParserFactory.getDefault(BluetoothGattParserFactory.java:74) ~[?:?]
	at org.sputnikdev.esh.binding.bluetooth.internal.BluetoothHandlerFactory.getGattParser(BluetoothHandlerFactory.java:131) ~[?:?]
	at org.sputnikdev.esh.binding.bluetooth.internal.BluetoothHandlerFactory.activate(BluetoothHandlerFactory.java:58) ~[?:?]
	at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source) ~[?:?]
	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) ~[?:?]
	at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) ~[?:?]
	at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) ~[?:?]
	at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) ~[?:?]
	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:307) ~[?:?]
	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:299) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:298) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) ~[?:?]
	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) ~[?:?]
	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:496) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72) ~[?:?]
	at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:651) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2201) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1829) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeUnbindMethod(SingleComponentManager.java:395) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:375) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:291) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1241) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1136) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:996) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1175) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) ~[?:?]
	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.unregister(ServiceRegistrationImpl.java:222) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:909) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:874) ~[?:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:139) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterService(AbstractComponentManager.java:951) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:806) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:788) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:580) ~[?:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.disposeComponents(ConfigurableComponentHolder.java:706) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:523) ~[?:?]
	at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:439) ~[?:?]
	at org.apache.felix.scr.impl.Activator.access$300(Activator.java:54) ~[?:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.destroy(Activator.java:293) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender$2.run(AbstractExtender.java:285) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.destroyExtension(AbstractExtender.java:307) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.bundleChanged(AbstractExtender.java:181) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) ~[?:?]
	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:156) ~[?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) ~[?:?]
	at org.eclipse.osgi.container.Module.doStop(Module.java:634) ~[?:?]
	at org.eclipse.osgi.container.Module.stop(Module.java:498) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.stop(EquinoxBundle.java:410) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.stop(EquinoxBundle.java:422) ~[?:?]
	at org.eclipse.smarthome.extensionservice.marketplace.internal.BindingExtensionHandler.uninstall(BindingExtensionHandler.java:100) ~[?:?]
	at org.eclipse.smarthome.extensionservice.marketplace.internal.MarketplaceExtensionService.uninstall(MarketplaceExtensionService.java:246) ~[?:?]

I filled in COM3

What about the error: GATT spec registry file is missing ??

Hi @Celaeno1, I’m sorry to keep asking you to double check what version you are running. But the MarketPlace plugin in OH might have not updated versions. Can you please post here the result of:

openhab> bundle:list | grep bluetooth

Or even just without “grep” part:

openhab> bundle:list

@vkolotov

261 │ Active   │  80 │ 1.1.0                  │ org.sputnikdev:org.eclipse.smarthome.binding.bluetooth.transport.bluegiga
262 │ Waiting  │  80 │ 1.1.1                  │ org.sputnikdev:org.eclipse.smarthome.binding.bluetooth

The binding.bluetooth is Waiting

Hi Vlad,

Sorry, how do I turn discover unknown attributes on?

cheers,

Pim

Hi @Pim_Verschueren,

it is here

Nothing else shows up

@Pim_Verschueren, That’s because your device is offline, the screenshot clearly shows that :slight_smile:

I’m not sure why this happens, does your scales turn off automatically?

was the wrong pic, sorry :stuck_out_tongue:3

The scale turns it self off I guess as you’re not using it. On my other test openhab instance I kept the scale online and it (obviously) immediately receives updates.

Great, pls keep watching, it might reveal some more channels…

1 Like

@Pim_Verschueren, good news, that characteristic is what we need (0000181d)!
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.weight_scale.xml

glad I could help, but this all Chinese to me mate :slight_smile: But let me know what I can do to help and I will try to get you as much info as I can.

@Pim_Verschueren, what I need is… Try to make some samples, e.g. by measuring some weight and then taking notes of that channel shows. I’ll have to decode it and make it working.

ok, so that code vs the weight?

Yep, that hex code (array) and weight as well as rough time when a weigh measured.

01:30
[a2, 4c, 63, e2, 07, 02, 01, 0f, 2f, 1c]
127.100
-
01:45
[a2, fc, 62, e2, 07, 02, 01, 0f, 31, 00]
126.700
- 
01:55
a2, 80, 02, e2, 07, 02, 01, 0f, 35, 04
3.200

Hey @Celaeno1 and @vizras , I found an issue in OH 2.3.0 (or maybe even earlier version) which prevents actually editing binding config. When you click save it actually does not get though to the binding. I’m working on a fix… Windows OS is affected. Stay tuned.



OH 2.2.0