[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>
This commit is contained in:
91
bundles/org.openhab.binding.amplipi/README.md
Normal file
91
bundles/org.openhab.binding.amplipi/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# AmpliPi Binding
|
||||
|
||||
This binding supports the multi room audio system [AmpliPi](http://www.amplipi.com/) from [MicroNova](http://www.micro-nova.com/).
|
||||
|
||||
|
||||
## 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
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user