[squeezebox] Add sleep channel (#10196)
Signed-off-by: Mark Hilbush <mark@hilbush.com>
This commit is contained in:
parent
3a19b29662
commit
9af7ae8884
|
@ -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
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue