openhab-addons/bundles/org.openhab.binding.mpd/README.md

103 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

# MPD Binding
[Music Player Daemon (MPD)](https://www.musicpd.org/) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol.
With the openHAB MPD binding you can control Music Player Daemons.
## Supported Things
This binding supports one ThingType: mpd
## Discovery
If zeroconf is enabled in the Music Player Daemon, it is discovered. Each Music Player daemon requires a unique zeroconf_name for correct discovery.
## Thing Configuration
The ThingType mpd requires the following configuration parameters:
| Parameter Label | Parameter ID | Description | Required |
|-----------------|--------------|--------------------------------------------------------------------------|----------|
| IP Address | ipAddress | Host name or IP address of the Music Player Daemon | yes |
| Port | port | Port number on which the Music Player Daemon is listening. Default: 6600 | yes |
| Password | password | Password to access the Music Player Daemon | no |
## Channels
The following channels are currently available:
| Channel Type ID | Item Type | Description |
|-----------------|-----------|---------------------------|
| control | Player | Start/Pause/Next/Previous |
| volume | Dimmer | Volume in percent |
| stop | Switch | Stop playback |
| currentalbum | String | Current album |
| currentartist | String | Current artist |
| currentname | String | Current name |
| currentsong | Number | Current song |
| currentsongid | Number | Current song id |
| currenttitle | String | Current title |
| currenttrack | Number | Current track |
## Full Example
### Thing
```java
mpd:mpd:music [ ipAddress="192.168.1.2", port=6600 ]
```
### Items
```java
Switch morning_music "Morning music"
Player mpd_music_player "Player" { channel = "mpd:mpd:music:control" }
Dimmer mpd_music_volume "Volume [%d %%]" { channel = "mpd:mpd:music:volume" }
Switch mpd_music_stop "Stop" { channel = "mpd:mpd:music:stop" }
String mpd_music_album "Album [%s]" { channel = "mpd:mpd:music:currentalbum" }
String mpd_music_artist "Artist [%s]" { channel = "mpd:mpd:music:currentartist" }
String mpd_music_name "Name [%s]" { channel = "mpd:mpd:music:currentname" }
Number mpd_music_song "Song [%d]" { channel = "mpd:mpd:music:currentsong" }
Number mpd_music_song_id "Song Id [%d]" { channel = "mpd:mpd:music:currentsongid" }
String mpd_music_title "Title [%s]" { channel = "mpd:mpd:music:currenttitle" }
Number mpd_music_track "Track [%d]" { channel = "mpd:mpd:music:currenttrack" }
```
### Sitemap
```perl
Frame label="Music" {
Default item=mpd_music_player
Slider item=mpd_music_volume
Switch item=mpd_music_stop
Text item=mpd_music_album
Text item=mpd_music_artist
Text item=mpd_music_name
Text item=mpd_music_song
Text item=mpd_music_song_id
Text item=mpd_music_title
Text item=mpd_music_track
}
```
### Rule
```java
rule "turn on morning music"
when
Item morning_music changed to ON
then
val actions = getActions("mpd","mpd:mpd:music")
if(actions === null) {
logWarn("myLog", "actions is null")
return
}
actions.sendCommand("clear")
actions.sendCommand("load", "MorningMusic");
actions.sendCommand("shuffle");
actions.sendCommand("play");
end
```