AllPlay Binding

This binding integrates devices compatible with Qualcomm AllPlay. The binding uses native libraries for the AllJoyn framework. Libraries for the following platforms are already included in the binding:

  • Linux ARM
  • Linux x86 (32 bit, AllJoyn v16.04a)
  • Linux x86-64 (64 bit, AllJoyn v16.04a)
  • Windows x86 (32 bit, AllJoyn v16.04a)
  • Windows x86-64 (64 bit, AllJoyn v16.04a)

The Windows libraries have a dependency on the Visual C++ Redistributable for Visual Studio 2015. If you are using Windows, please make sure to install these components before using the AllPlay binding.

If there is need for another architecture/platform, please open a ticket on GitHub so the missing native library can be added.

Supported Things

All AllPlay compatible speakers are supported by this binding. This includes for example the Panasonic ALL series. All AllPlay speakers are registered as an audio sink in the framework.

Discovery

The AllPlay devices are discovered through the AllJoyn discovery mechanism and are put in the Inbox upon discovery.

Binding Configuration

The binding has the following configuration options, which can be set for "binding:allplay":

ParameterNameDescriptionRequired
rewindSkipTimeInSecRewind skip time (s)Seconds to jump backwards if the rewind command is executedyes
fastForwardSkipTimeInSecFast forward skip time (s)Seconds to jump forward if the fastforward command is executedyes
callbackUrlCallback URLURL to use for playing audio streams, e.g. http://192.168.0.2:8080no

Thing Configuration

AllPlay Players are identified by their device ID (e.g. 9fbe37ca-d015-47a2-b76e-8fce7bc25687). Available configuration parameters are:

Parameter LabelParameter IDDescriptionRequiredDefault
Device IDdeviceIdThe device identifier identifies one certain speakertrue
Device NamedeviceNameThe device name of the speakerfalse
Volume step sizevolumeStepSizeStep size to use if the volume is changed using the increase/decrease commandtrue1
Zone Member SeparatorzoneMemberSeparatorSeparator which is used when sending multiple zone members to channel 'zonemembers'true,

Channels

The devices support the following channels:

Channel Type IDItem TypeDescription
clearzoneSwitchRemove the current speaker from the zone
controlPlayerControl the speaker, play/pause/next/previous/ffward/rewind
coverartImageImage data of cover art of the current song
coverarturlStringURL of the cover art of the current song
currentalbumStringName of the album currently playing
currentartistStringName of the artist currently playing
currentdurationNumberDuration in seconds of the track currently playing
currentgenreStringGenre of the track currently playing
currenttitleStringTitle of the track currently playing
currenturlStringURL of the track or radio station currently playing
currentuserdataStringCustom user data (e.g. name of radio station) of the track currently playing
inputStringInput of the speaker, e.g. Line-In (not supported by all speakers)
loopmodeStringLoop mode of the speaker (ONE, ALL, NONE)
muteSwitchSet or get the mute state of the master volume of the speaker (not supported by all speakers)
playstateStringState of the Speaker, e.g. PLAYING, STOPPED,..
shufflemodeSwitchToggle the shuffle mode of the speaker
stopSwitchStop the playback
streamStringPlay the given HTTP or file stream (file:// or http://)
volumeDimmerGet and set the volume of the speaker
volumecontrolSwitchFlag if the volume control is enabled (might be disabled if speaker is not master of the zone)
zoneidStringId of the Zone the speaker belongs to
zonemembersStringSet the zone members by providing a comma-separated list of device names.
(This channel is currently only for setting the zone members.
It does not update automatically if the zone members are changed from another source)

Audio Support

All AllPlay speakers are registered as an audio sink in the framework. Audio streams are sent to the stream channel.

Full Example

demo.things:

Thing allplay:speaker:mySpeaker [ deviceId="9fbe37ca-d015-47a2-b76e-8fce7bc25687"]

demo.items:

String All2Stream                           {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:stream"}
Player All2Control                          {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:control"}
Dimmer All2Volume    "Volume"               {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:volume"}
String All2Title     "Title [%s]"           {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:currenttitle"}
String All2State     "State [%s]"           {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:playstate"}
String All2Artist    "Artist [%s]"          {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:currentartist"}
String All2CoverUrl  "Cover Art URL [%s]"   {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:coverarturl"}

demo.sitemap:

sitemap demo label="Main Menu" {
    Frame label="All2" {
        Default item=All2Control
        Slider item=All2Volume
        Text item=All2Title
        Text item=All2Artist
        Text item=All2State
    }
}

demo.rules:

rule "Play Online Radio stream"
when
    Item All2OnlineRadio changed to ON
then
    All2Stream.sendCommand("http://chromaradio.com:8008/listen.pls")