openhab-docs/_addons_bindings/pulseaudio1/readme.md

108 lines
3.1 KiB
Markdown

---
id: pulseaudio
label: Pulseaudio
title: Pulseaudio - Bindings
type: binding
description: "This binding allows openHAB to monitor and control pulseaudio servers."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.pulseaudio/README.md
since: 1x
logo: images/addons/pulseaudio.png
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Pulseaudio Binding
This binding allows openHAB to monitor and control pulseaudio servers.
There is also a binding specifically for openHAB 2 [here](https://www.openhab.org/addons/bindings/pulseaudio/).
## Prerequisites
You need a running pulseaudio server whith module `module-cli-protocol-tcp` loaded and accessible by the server which runs your openHAB instance.
## Binding Configuration
This binding can be configured in the file `services/pulseaudio.cfg`.
| Property | Default | Required | Description |
|----------|---------|:--------:|-------------|
| `<ServerName>`.TBD | TBD | TBD | TBD |
## Item Configuration
The syntax is:
```
pulseaudio="<ServerName>:<SinkOrSourceName>:<command>"
```
where:
* `<ServerName>` is the name of the pulseaudio server as it is defined in your binding configuration.
* `<SinkOrSourceName>` is the name of a pulseaudio sink or source as it is defined on the related server (you can find out the names with the `pactl` command).
* the `<command>` section is optional and one of:
* EXISTS: queries if the item exists on the pulseaudio server or not
* MUTED: queries if the item is muted or not
* SLAVE_SINKS: queries the names of the members of a combined sink (must be bound to a string item)
Here are some examples of valid binding configuration strings:
```
pulseaudio="Main:combined-music"
pulseaudio="Main:combined-music:SLAVE_SINKS"
pulseaudio="Main:combined-music:EXISTS"
pulseaudio="Main:combined-music:MUTED"
```
As a result, your lines in the items file might look like the following:
```
Dimmer Sink_FF_Multiroom_Volume { pulseaudio="Main:combined-music" }
String Sink_FF_Multiroom_Slaves { pulseaudio="Main:combined-music:SLAVE_SINKS" }
Switch Sink_FF_Multiroom_Exists { pulseaudio="Main:combined-music:EXISTS" }
Switch Sink_FF_Multiroom_Muted { pulseaudio="Main:combined-music:MUTED" }
```
In order to find out the names of your pulseaudio sinks you can use the `pactl` command line tool on the server, which is running your pulseaudio instance:
```shell
pactl list sinks short
```
which returns something like this
```text
9 combined-music module-combine-sink.c s16le 2ch 44100Hz RUNNING
```
where `combined-music` is the name of the sink.
## Example
The Pulseaudio Binding can be used to e.g. to mute a sink or to change the volume of one.
items/pulseaudio.items
```
Switch Sink_FF_Multiroom_Muted { pulseaudio="Main:combined-music:MUTED" }
```
rules/pulseaudio.rule
```
rule "mute pulseaudio sink on incoming call"
when
Item Incoming_Call received update
then
if (Incoming_Call.state==ON) {
Sink_FF_Multiroom_Muted.sendCommand(ON)
} else {
Sink_FF_Multiroom_Muted.sendCommand(OFF)
}
end
```