AllPlay binding: Looking for testers

First of all, thanks for your work @dominicdesu :slight_smile:

I was testing AllPlay’s binding for a while and everything works fine (With two Panasonic Speakers).

But I’ve a little problem. My network is segmented into vlans and OH and my speakers are in different networks, so multicast discovery is not working fine.

It’s possible to specify a fixed IP address for the AllPlay Thing ? (Like in the Chromecast binding)

Thanks, and again nice work :wink:

Hi,
unfortunately I am not aware of any connection mechanism other than multicast discovery.
Are there any AllPlay apps which are able to find all your AllPlay speakers? If yes, there is probably a way to implement it in the AllPlay binding as well, although I don’t know how. If no, it is probably not possible or very difficult…

@all: By the way, multiroom support is now available in the latest addons snapshot (=PR has been merged some days ago). No need to use the custom build anymore.

Hi,

I was playing with a multicast proxy (smcroute) and I forwarded SSDP traffic from Allplay devices network to the network where is installed OH.

Once forwarded the traffic, any system in the OH’s network can detect allplay devices (and control them):

image

But Allplay binding continues without detecting the speakers. But is more extrange, i can see traffic from my OH to Speakers (A connection is stablished from OH to Speaker’s port 2870).

Once forwarded the multicast SSDP traffic from one network to another, OH sees the Speaker, stablishes (and maintains) a connection with him, but does nothing (And other devices and apps in the network can control the speakers without problem).

How i can extract a binding debug log ? :slight_smile:

Thanks again @dominicdesu

Hi,

as a first step you could enable the allplay binding and allplay library (tchaikovsky) logs:

log4j2.logger.tchaikovsky.name = de.kaizencode.tchaikovsky
log4j2.logger.tchaikovsky.level = DEBUG

log4j2.logger.allplay.name = org.openhab.binding.allplay
log4j2.logger.allplay.level = DEBUG

@dominicdesu It tried to update to new binding version:

268 | Active   |  80 | 2.2.0.201709152241     | AllPlay Binding

I get my 2 speakers inside inbox. But when I try to add them as thing I get “ERROR: 409 (Conflict)” and in karaf console:

14:33:00.924 [WARN ] [g.discovery.internal.PersistentInbox] - Cannot create thing. No binding found that supports creating a thing of type allplay:speaker.

What to do?

Hm, this is not an error message from the binding but from the framework. Did you remove the custom build from the addons folder? I’d try to remove the things from the inbox, uninstall the binding, remove the binding from the addons folder and install the binding from the central repository again.
If this doesn’t help, we need to dig deeper…

Edit: Seems like there are other bindings with similar issues: OH2 Kodi: No binding found that supports creating a thing of type kodi:kodi
Possible that you need to upgrade your OH2?

@dominicdesu I’m on an older build #982. I never did use the addons folder. I instead use the addons.cfg. (removing entry: allplay). Then deleting the following: \userdata\tmp\mvn\org\openhab\binding\org.openhab.binding.allplay\2.2.0-SNAPSHOT\ and after this I put entry “allplay” back into addons.cfg. Then the latest Snapshot of the allplay.binding was installed.
I better should try to update the complete build from #982 to #1039. But I’ll try it later…Thanks for your support.:slight_smile:

Now I’m temporary back to 2.2.0.201707082234 | AllPlay Binding. And it’s running again!

Hi Guys,

i’m trying to get Allplay to work on OpenHab 2.1 Release - unfortunately, i get errors when starting the binding (version 2.1.0 as from remote repo)

2017-09-19 00:34:30.185 [ERROR] [org.openhab.binding.allplay         ] - [org.openhab.binding.allplay.internal.AllPlayHandlerFactory(271)] The activate method has thrown an exception
java.lang.NoClassDefFoundError: Could not initialize class de.kaizencode.tchaikovsky.AllPlay
	at org.openhab.binding.allplay.internal.AllPlayHandlerFactory.activate(AllPlayHandlerFactory.java:101)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_131]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_131]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_131]
	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_131]
	at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:224)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:617)
	at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:501)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:302)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:294)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:297)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:108)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:748)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:429)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:403)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:278)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)[31:org.apache.felix.scr:2.0.6]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)[31: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.internal.framework.EquinoxBundle.start(EquinoxBundle.java:392)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:411)[org.eclipse.osgi-3.10.101.v20150820-1432.jar:]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1287)[8:org.apache.karaf.features.core:4.0.8]
	at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:860)[8:org.apache.karaf.features.core:4.0.8]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1176)[8:org.apache.karaf.features.core:4.0.8]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:1074)[8:org.apache.karaf.features.core:4.0.8]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_131]
	at java.lang.Thread.run(Thread.java:748)[:1.8.0_131]

Would wanted to give the 2.2.0 SNAPSHOT version a try, but putting the tchaikovski.jar File from here:

into the addons directory did nothing (i uninstalled the former Bindng version before via PaperUI).

Any hints on the error or how i can get the SNAPSHOT version to run?

My openhab Server runs on a Windows 2008R2 (Windows Home Server 2011) - mostly without problems.

Thanks for any feedback!

Best regards,
Klaas

@Klaas_Mertens Did you also install Visual C++ from here?

https://www.microsoft.com/en-US/download/details.aspx?id=48145

@dominicdesu I updated to build 1039 now.

I read the docu of allplay, but I cannot find how to setup zonemembers? I cannot find the channel. In PaperUI --> Things --> My Allplay Device.

@Klaas_Mertens: Either what @Celaeno1 suggested, or the Windows version. The binding is based on a native library which has to be compiled separately for each target system and included in the binding. My guess is that the version compiled on Windows 10 should work for all other Windows versions as well, but I am not really sure.
Also, I need to specify in the binding for which Windows versions the native library should be used. Currently I am using an alias which should include Windows 2008R2, but if the suggestion by @Celaeno1 doesn’t work, I could try to add Windows 2008R2 manually to the list of supported OSes and we check again.

By the way, the tchaikovsky file is included in the binding and is used by openHAB automatically. It should normally not be necessary to install it manually.

@Celaeno1: You need to remove the speaker thing and rediscover it. Afterwards the newly added channels are visible. This is a feature/issue of openHAB.

Hi @dominicdesu

I have installed the Visual C++ as @Celaeno1 suggested - tried the 32-bit and 64-bit Version.
No luck.

The suggestion about Win2008R2 could be true - I found a lot of stuff not
working properly on Windows Home Server 2011(mosquitto for example).

Regarding the Tchaikovsky.jar - my question was around how to install a
snapshot version of your binding onto a 2.1release version of openhab.
Just copying the .jar File to the addons/ directory doesn’t do the trick.
What do I need to put into addons/ to install a snapshot version?

Thanks for your suggestions - community support is always the best support
one can get!

Best regards,
Klaas.

@Klaas_Mertens: You need to put the complete binding (org.openhab.binding.allplay-2.2.0-SNAPSHOT.jar) into the addons folder. tchaikovsky.jar is only a library used by the binding and will not work with openHAB by itself.

You can get the latest snapshot from here. However, the binding compiled for the latest openHAB 2.2.0 snapshot will probably not work for older versions (see some posts above, you can discover the speakers but not add them). Anyway, you would at least see if the strange error from the 2.1.0 binding version is gone…

1 Like

Thanks @dominicdesu!

Will try when back home tomorrow and report back - as long as the binding starts without errors, we’re one step further.

Best regards,
Klaas.

@Klaas_Mertens could you please also check if the are more errors/warnings in your log file?

There are @dominicdesu, but seems to be the same error as posted above.
Will put the full copy to pastebin and send tomorrow!

Thanks for the help - would be really great to get my Panasonic systems work with Openhab!

Best regards,
Klaas.

@dominicdesu Indeed, after I removed the speaker thing and rediscovered it, the channel “zonemembers” was available.
But how to configure this channel? I have two speakers. When I fill in e.g. “SpeakerA,SpeakerB” I get a WARNING message in karaf console. So, two speakers = two channels “zonemembers”.
Should I better fill in the following:
“zonemembers” of SpeakerA = “SpeakerB” and “zonemembers” of SpeakerB = “SpeakerA” ??

Hi @dominicdesu

unfortunately - no luck so far. :-/

Please see the full error log here: https://pastebin.com/HmUq3wde

Also tried to de-install all C++ Redistributables on the machine and install the 2017 Version from here:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

Even a test with the 2.2.0 SNAPSHOT did render the same results.

Could we try the Win2008R2 Server idea?

Thanks again for all your support! Really appreciated.

Best regards,
Klaas.

@Celaeno1: You choose one speaker which should be the master of the zone. Then you set all speakers, which should be in the same zone to channel “zonemembers” of the master speaker. That’s all you need to do. To control the zone, send commands to the master speaker.
Note that you have to send the speaker names as the speaker things are named in OpenHAB.
If you still get warnings, please post them here :sunglasses:

@Klaas_Mertens: Did you restart windows after installing the redistributables? Don’t know if this actually helps, just a guess.

Anyway, seems that the native library is missing a dependency on your system. To find out, which dependency this is, you can use DependencyWalker (this is what I used to identify a similar issue).
Just open Dependency Walker, and open the alljoyn_java.dll (path from your logs: C:\openhab20\userdata\cache\org.eclipse.osgi\243\0.cp\lib\x86-64\win\alljoyn_java.dll). Loock for any file where it says “Error opening file” which does not start with API-MS-WIN or EXT-MS-WIN. If the MSVCP120.dll is missing, this would be the C++ Redistibutable.
MissingLibraries