Skip to content

Commit

Permalink
[squeezebox] Add sleep channel (openhab#10196)
Browse files Browse the repository at this point in the history
Signed-off-by: Mark Hilbush <mark@hilbush.com>
  • Loading branch information
mhilbush authored Feb 25, 2021
1 parent bf2f84c commit 72b8fe7
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 0 deletions.
1 change: 1 addition & 0 deletions bundles/org.openhab.binding.squeezebox/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ All devices support some of the following channels:
| numberPlaylistTracks | Number | Number of playlist tracks |
| playFavorite | String | ID of Favorite to play (channel's state options contains available favorites) |
| rate | Switch | "Like" or "unlike" the currently playing song (if supported by the streaming service) |
| sleep | Number | Power off the player in the specified number of minutes. Sending 0 cancels the timer |

## Example .Items File

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,5 @@ public class SqueezeBoxBindingConstants {
public static final String CHANNEL_MODEL = "model";
public static final String CHANNEL_FAVORITES_PLAY = "playFavorite";
public static final String CHANNEL_RATE = "rate";
public static final String CHANNEL_SLEEP = "sleep";
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import java.net.URI;
import java.net.URISyntaxException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
Expand Down Expand Up @@ -308,6 +309,16 @@ public void handleCommand(ChannelUID channelUID, Command command) {
squeezeBoxServerHandler.rate(mac, unlikeCommand);
}
break;
case CHANNEL_SLEEP:
if (command instanceof DecimalType) {
Duration sleepDuration = Duration.ofMinutes(((DecimalType) command).longValue());
if (sleepDuration.isNegative() || sleepDuration.compareTo(Duration.ofDays(1)) > 0) {
logger.debug("Sleep timer of {} minutes must be >= 0 and <= 1 day", sleepDuration.toMinutes());
return;
}
squeezeBoxServerHandler.sleep(mac, sleepDuration);
}
break;
default:
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,10 @@ public void rate(String mac, String rateCommand) {
}
}

public void sleep(String mac, Duration sleepDuration) {
sendCommand(mac + " sleep " + String.valueOf(sleepDuration.toSeconds()));
}

/**
* Send a generic command to a given player
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
<channel id="numberPlaylistTracks" typeId="numberPlaylistTracks"/>
<channel id="playFavorite" typeId="playFavorite"/>
<channel id="rate" typeId="rate"/>
<channel id="sleep" typeId="sleep"/>
</channels>

<properties>
Expand Down Expand Up @@ -304,4 +305,10 @@
<label>Like or Unlike Song</label>
<description>Likes or unlikes the current song (if the service supports it)</description>
</channel-type>
<channel-type id="sleep">
<item-type>Number</item-type>
<label>Sleep</label>
<description>Power off player in specified number of minutes</description>
<state pattern="%d"></state>
</channel-type>
</thing:thing-descriptions>

0 comments on commit 72b8fe7

Please sign in to comment.