[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 |
|
| numberPlaylistTracks | Number | Number of playlist tracks |
|
||||||
| playFavorite | String | ID of Favorite to play (channel's state options contains available favorites) |
|
| 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) |
|
| 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
|
## Example .Items File
|
||||||
|
|
||||||
|
|
|
@ -68,4 +68,5 @@ public class SqueezeBoxBindingConstants {
|
||||||
public static final String CHANNEL_MODEL = "model";
|
public static final String CHANNEL_MODEL = "model";
|
||||||
public static final String CHANNEL_FAVORITES_PLAY = "playFavorite";
|
public static final String CHANNEL_FAVORITES_PLAY = "playFavorite";
|
||||||
public static final String CHANNEL_RATE = "rate";
|
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.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.time.Duration;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -308,6 +309,16 @@ public class SqueezeBoxPlayerHandler extends BaseThingHandler implements Squeeze
|
||||||
squeezeBoxServerHandler.rate(mac, unlikeCommand);
|
squeezeBoxServerHandler.rate(mac, unlikeCommand);
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
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
|
* Send a generic command to a given player
|
||||||
*
|
*
|
||||||
|
|
|
@ -84,6 +84,7 @@
|
||||||
<channel id="numberPlaylistTracks" typeId="numberPlaylistTracks"/>
|
<channel id="numberPlaylistTracks" typeId="numberPlaylistTracks"/>
|
||||||
<channel id="playFavorite" typeId="playFavorite"/>
|
<channel id="playFavorite" typeId="playFavorite"/>
|
||||||
<channel id="rate" typeId="rate"/>
|
<channel id="rate" typeId="rate"/>
|
||||||
|
<channel id="sleep" typeId="sleep"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -304,4 +305,10 @@
|
||||||
<label>Like or Unlike Song</label>
|
<label>Like or Unlike Song</label>
|
||||||
<description>Likes or unlikes the current song (if the service supports it)</description>
|
<description>Likes or unlikes the current song (if the service supports it)</description>
|
||||||
</channel-type>
|
</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>
|
</thing:thing-descriptions>
|
||||||
|
|
Loading…
Reference in New Issue