openhab-addons/bundles/org.openhab.binding.amplipi
Kai Kreuzer f25cc8d14a
[amplipi] Initial contribution of AmpliPi binding (#10983)
* Initial contribution of AmpliPi binding

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* change http client from cxf jax-rs to Jetty

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* applied spotless

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Remove Jackson dependency

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Add support for input handling

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Clean up, improvements and documentation

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Remove unused password from configuration class

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Remove example properties file

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* revert change in .gitignore

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Update README

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Address review feedback

Signed-off-by: Kai Kreuzer <kai@openhab.org>

* Handle ExecutionException as network error

Signed-off-by: Kai Kreuzer <kai@openhab.org>
2021-08-01 12:25:29 +02:00
..
src [amplipi] Initial contribution of AmpliPi binding (#10983) 2021-08-01 12:25:29 +02:00
amplipi-api.yml [amplipi] Initial contribution of AmpliPi binding (#10983) 2021-08-01 12:25:29 +02:00
NOTICE [amplipi] Initial contribution of AmpliPi binding (#10983) 2021-08-01 12:25:29 +02:00
pom.xml [amplipi] Initial contribution of AmpliPi binding (#10983) 2021-08-01 12:25:29 +02:00
README.md [amplipi] Initial contribution of AmpliPi binding (#10983) 2021-08-01 12:25:29 +02:00

AmpliPi Binding

This binding supports the multi room audio system AmpliPi from MicroNova.

Supported Things

The AmpliPi itself is modeled as a Bridge of type controller. Every available zone as well as group is managed as an individual Thing of type zone resp. group.

Discovery

Once the AmpliPi announces itself through mDNS (still a pending feature), it will be automatically discovered on the network.

As soon as the AmpliPi is online, its zones and groups are automatically retrieved and added as Things to the Inbox.

Thing Configuration

The controller Bridge has two configuration parameters:

Parameter Required Description
hostname yes The hostname or IP address of the AmpliPi on the network
refreshInterval no The time to wait between two polling requests for receiving state updates. Defaults to 10 seconds.

Both the zone and group Things only require a single configuration parameter id, which corresponds to their id on the AmpliPi.

Channels

These are the channels of the controller Bridge:

Channel Type Description
preset Number Allows setting a pre-configured preset. The available options are dynamically read from the AmpliPi.
input1 String The selected input of source 1
input2 String The selected input of source 2
input3 String The selected input of source 3
input4 String The selected input of source 4

The zone and group Things have the following channels:

Channel Type Description
volume Dimmer The volume of the zone/group
mute Switch Mutes the zone/group
source Number The source (1-4) that this zone/group is playing

Full Example

amplipi.things:

Bridge amplipi:controller:1 "My AmpliPi" [ hostname="amplipi.local" ] {
    zone zone2 "Living Room" [ id=1 ]
}

amplipi.items:

Number      Preset      "Preset"                { channel="amplipi:controller:1:preset" }
String      Input1      "Input 1"               { channel="amplipi:controller:1:input1" }
String      Input2      "Input 2"               { channel="amplipi:controller:1:input2" }
String      Input3      "Input 3"               { channel="amplipi:controller:1:input3" }
String      Input4      "Input 4"               { channel="amplipi:controller:1:input4" }

Dimmer      VolumeZ2    "Volume Zone2"          { channel="amplipi:zone:1:zone2:volume" }
Switch      MuteZ2      "Mute Zone2"            { channel="amplipi:zone:1:zone2::mute" }
Number      SourceZ2    "Source Zone2"          { channel="amplipi:zone:1:zone2::source" }

amplipi.sitemap:

sitemap amplipi label="Main Menu"
{
    Frame label="AmpliPi" {
        Selection item=Preset
        Selection item=Input1
        Selection item=Input2
        Selection item=Input3
        Selection item=Input4
    }
    Frame label="Living Room Zone" {
        Slider item=VolumeZ2 label="Volume Zone 1 [%.1f %%]"
        Switch item=MuteZ2
        Selection item=SourceZ2
    }
}