-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[mpd]: Music Player Daemon initial contribution (#7870)
Signed-off-by: Stefan Roellin <[email protected]>
- Loading branch information
1 parent
ce5d4d8
commit 5d100e9
Showing
29 changed files
with
2,031 additions
and
0 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<classpath> | ||
<classpathentry kind="src" output="target/classes" path="src/main/java"> | ||
<attributes> | ||
<attribute name="optional" value="true"/> | ||
<attribute name="maven.pomderived" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> | ||
<attributes> | ||
<attribute name="maven.pomderived" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry kind="src" output="target/test-classes" path="src/test/java"> | ||
<attributes> | ||
<attribute name="optional" value="true"/> | ||
<attribute name="maven.pomderived" value="true"/> | ||
<attribute name="test" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> | ||
<attributes> | ||
<attribute name="maven.pomderived" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> | ||
<attributes> | ||
<attribute name="maven.pomderived" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry kind="output" path="target/classes"/> | ||
</classpath> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<projectDescription> | ||
<name>org.openhab.binding.mpd</name> | ||
<comment></comment> | ||
<projects> | ||
</projects> | ||
<buildSpec> | ||
<buildCommand> | ||
<name>org.eclipse.jdt.core.javabuilder</name> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
<buildCommand> | ||
<name>org.eclipse.m2e.core.maven2Builder</name> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
</buildSpec> | ||
<natures> | ||
<nature>org.eclipse.jdt.core.javanature</nature> | ||
<nature>org.eclipse.m2e.core.maven2Nature</nature> | ||
</natures> | ||
</projectDescription> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
This content is produced and maintained by the openHAB project. | ||
|
||
* Project home: https://www.openhab.org | ||
|
||
== Declared Project Licenses | ||
|
||
This program and the accompanying materials are made available under the terms | ||
of the Eclipse Public License 2.0 which is available at | ||
https://www.eclipse.org/legal/epl-2.0/. | ||
|
||
== Source Code | ||
|
||
https://github.com/openhab/openhab-addons |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
# MPD Binding | ||
|
||
[Music Player Daemon (MPD)](http://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 | ||
|
||
``` | ||
mpd:mpd:music [ ipAddress="192.168.1.2", port=6600 ] | ||
``` | ||
|
||
#### Items | ||
|
||
``` | ||
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 | ||
|
||
``` | ||
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 | ||
|
||
``` | ||
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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
|
||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<parent> | ||
<groupId>org.openhab.addons.bundles</groupId> | ||
<artifactId>org.openhab.addons.reactor.bundles</artifactId> | ||
<version>2.5.8-SNAPSHOT</version> | ||
</parent> | ||
|
||
<artifactId>org.openhab.binding.mpd</artifactId> | ||
|
||
<name>openHAB Add-ons :: Bundles :: MPD Binding</name> | ||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<features name="org.openhab.binding.mpd-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"> | ||
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository> | ||
|
||
<feature name="openhab-binding-mpd" description="MPD Binding" version="${project.version}"> | ||
<feature>openhab-runtime-base</feature> | ||
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.mpd/${project.version}</bundle> | ||
</feature> | ||
</features> |
48 changes: 48 additions & 0 deletions
48
...enhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/MPDBindingConstants.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/** | ||
* Copyright (c) 2010-2020 Contributors to the openHAB project | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information. | ||
* | ||
* This program and the accompanying materials are made available under the | ||
* terms of the Eclipse Public License 2.0 which is available at | ||
* http://www.eclipse.org/legal/epl-2.0 | ||
* | ||
* SPDX-License-Identifier: EPL-2.0 | ||
*/ | ||
package org.openhab.binding.mpd.internal; | ||
|
||
import org.eclipse.jdt.annotation.NonNullByDefault; | ||
import org.eclipse.smarthome.core.thing.ThingTypeUID; | ||
|
||
/** | ||
* The {@link MPDBindingConstants} class defines common constants, which are | ||
* used across the whole binding. | ||
* | ||
* @author Stefan Röllin - Initial contribution | ||
*/ | ||
@NonNullByDefault | ||
public class MPDBindingConstants { | ||
|
||
private static final String BINDING_ID = "mpd"; | ||
|
||
// List of all Thing Type UIDs | ||
public static final ThingTypeUID THING_TYPE_MPD = new ThingTypeUID(BINDING_ID, "mpd"); | ||
|
||
// List of all Channel ids | ||
public static final String CHANNEL_CONTROL = "control"; | ||
public static final String CHANNEL_CURRENT_ALBUM = "currentalbum"; | ||
public static final String CHANNEL_CURRENT_ARTIST = "currentartist"; | ||
public static final String CHANNEL_CURRENT_NAME = "currentname"; | ||
public static final String CHANNEL_CURRENT_SONG = "currentsong"; | ||
public static final String CHANNEL_CURRENT_SONG_ID = "currentsongid"; | ||
public static final String CHANNEL_CURRENT_TITLE = "currenttitle"; | ||
public static final String CHANNEL_CURRENT_TRACK = "currenttrack"; | ||
public static final String CHANNEL_STOP = "stop"; | ||
public static final String CHANNEL_VOLUME = "volume"; | ||
|
||
// Config Parameters | ||
public static final String PARAMETER_IPADDRESS = "ipAddress"; | ||
public static final String PARAMETER_PORT = "port"; | ||
public static final String UNIQUE_ID = "uniqueId"; | ||
} |
52 changes: 52 additions & 0 deletions
52
....openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/MPDConfiguration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/** | ||
* Copyright (c) 2010-2020 Contributors to the openHAB project | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information. | ||
* | ||
* This program and the accompanying materials are made available under the | ||
* terms of the Eclipse Public License 2.0 which is available at | ||
* http://www.eclipse.org/legal/epl-2.0 | ||
* | ||
* SPDX-License-Identifier: EPL-2.0 | ||
*/ | ||
package org.openhab.binding.mpd.internal; | ||
|
||
import org.eclipse.jdt.annotation.NonNullByDefault; | ||
|
||
/** | ||
* The {@link MPDConfiguration} class contains fields mapping thing configuration parameters. | ||
* | ||
* @author Stefan Röllin - Initial contribution | ||
*/ | ||
@NonNullByDefault | ||
public class MPDConfiguration { | ||
|
||
private String ipAddress = ""; | ||
private Integer port = 0; | ||
private String password = ""; | ||
|
||
public String getIpAddress() { | ||
return ipAddress; | ||
} | ||
|
||
public void setIpAddress(String ipAddress) { | ||
this.ipAddress = ipAddress; | ||
} | ||
|
||
public Integer getPort() { | ||
return port; | ||
} | ||
|
||
public void setPort(Integer port) { | ||
this.port = port; | ||
} | ||
|
||
public String getPassword() { | ||
return password; | ||
} | ||
|
||
public void setPassword(String password) { | ||
this.password = password; | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
.../org.openhab.binding.mpd/src/main/java/org/openhab/binding/mpd/internal/MPDException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/** | ||
* Copyright (c) 2010-2020 Contributors to the openHAB project | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information. | ||
* | ||
* This program and the accompanying materials are made available under the | ||
* terms of the Eclipse Public License 2.0 which is available at | ||
* http://www.eclipse.org/legal/epl-2.0 | ||
* | ||
* SPDX-License-Identifier: EPL-2.0 | ||
*/ | ||
package org.openhab.binding.mpd.internal; | ||
|
||
import org.eclipse.jdt.annotation.NonNullByDefault; | ||
|
||
/** | ||
* The {@link MPDException} class is used for any exception thrown by the binding | ||
* | ||
* @author Stefan Röllin - Initial contribution | ||
*/ | ||
@NonNullByDefault | ||
public class MPDException extends Exception { | ||
private static final long serialVersionUID = 1L; | ||
|
||
public MPDException() { | ||
} | ||
|
||
public MPDException(String message) { | ||
super(message); | ||
} | ||
} |
Oops, something went wrong.