[squeezebox] Add sleep channel (#10196)

Signed-off-by: Mark Hilbush <mark@hilbush.com>
This commit is contained in:
Mark Hilbush 2021-02-25 16:56:02 -05:00 committed by GitHub
parent 3a19b29662
commit 9af7ae8884
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 0 deletions

View File

@ -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

View File

@ -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";
}

View File

@ -16,6 +16,7 @@ import static org.openhab.binding.squeezebox.internal.SqueezeBoxBindingConstants
import java.net.URI;
import java.net.URISyntaxException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -308,6 +309,16 @@ public class SqueezeBoxPlayerHandler extends BaseThingHandler implements Squeeze
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;
}

View File

@ -301,6 +301,10 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
}
}
public void sleep(String mac, Duration sleepDuration) {
sendCommand(mac + " sleep " + String.valueOf(sleepDuration.toSeconds()));
}
/**
* Send a generic command to a given player
*

View File

@ -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>
@ -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>