diff --git a/bundles/org.openhab.binding.roku/README.md b/bundles/org.openhab.binding.roku/README.md index b3d92ccff2e5f..a82007eaa14c7 100644 --- a/bundles/org.openhab.binding.roku/README.md +++ b/bundles/org.openhab.binding.roku/README.md @@ -7,7 +7,7 @@ The Roku device must support the Roku ECP protocol REST API. There are two supported thing types, which represent either a standalone Roku device or a Roku TV. A supported Roku streaming media player or streaming stick uses the `roku_player` id and a supported Roku TV uses the `roku_tv` id. -The binding functionality is the same for both types, but the Roku TV type adds additional button commands to the button channel dropdown. +The Roku TV type adds additional channels and button commands to the button channel dropdown for TV specific functionality. Multiple Things can be added if more than one Roku is to be controlled. ## Discovery @@ -33,17 +33,24 @@ The thing has a few configuration parameters: The following channels are available: -| Channel ID | Item Type | Description | -|-----------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| -| activeApp | String | A dropdown containing a list of all apps installed on the Roku. The app currently running is automatically selected. The list updates every 10 minutes. | -| button | String | Sends a remote control command the Roku. See list of available commands below. | -| playMode | String | The current playback mode ie: stop, play, pause (ReadOnly). | -| timeElapsed | Number:Time | The total number of seconds of playback time elapsed for the current playing title (ReadOnly). | -| timeTotal | Number:Time | The total length of the current playing title in seconds (ReadOnly). This data is not provided by all streaming apps. | +| Channel ID | Item Type | Description | +|--------------------|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| activeApp | String | A dropdown containing a list of all apps installed on the Roku. The app currently running is automatically selected. The list updates every 10 minutes. | +| button | String | Sends a remote control command the Roku. See list of available commands below. | +| playMode | String | The current playback mode ie: stop, play, pause (ReadOnly). | +| timeElapsed | Number:Time | The total number of seconds of playback time elapsed for the current playing title (ReadOnly). | +| timeTotal | Number:Time | The total length of the current playing title in seconds (ReadOnly). This data is not provided by all streaming apps. | +| activeChannel | String | A dropdown containing a list of available TV channels on the Roku TV. The channel currently tuned is automatically selected. The list updates every 10 minutes. | +| signalMode | String | The signal type of the current TV channel, ie: 1080i (ReadOnly). | +| signalQuality | Number:Dimensionless | The signal quality of the current TV channel, 0-100% (ReadOnly). | +| channelName | String | The name of the channel currently selected (ReadOnly). | +| programTitle | String | The name of the current TV program (ReadOnly). | +| programDescription | String | The description of the current TV program (ReadOnly). | +| programRating | String | The TV parental guideline rating of the current TV program (ReadOnly). | Some Notes: -* The values for `activeApp`, `playMode`, `timeElapsed` & `timeTotal` refresh automatically per the configured `refresh` interval (10 seconds minimum). +* The values for `activeApp`, `playMode`, `timeElapsed`, `timeTotal`, `activeChannel`, `signalMode`, `signalQuality`, `channelName`, `programTitle`, `programDescription` & `programRating` refresh automatically per the configured `refresh` interval (10 seconds minimum). **List of available button commands for Roku streaming devices:** Home @@ -81,24 +88,46 @@ PowerOff roku.things: -```java +``` +// Roku streaming media player roku:roku_player:myplayer1 "My Roku" [ hostName="192.168.10.1", refresh=10 ] -roku:roku_tv:myplayer1 "My Roku TV" [ hostName="192.168.10.1", refresh=10 ] + +// Roku TV +roku:roku_tv:mytv1 "My Roku TV" [ hostName="192.168.10.1", refresh=10 ] + ``` roku.items: -```java -String Player_ActiveApp "Current App: [%s]" { channel="roku:roku_player:myplayer1:activeApp" } -String Player_Button "Send Command to Roku" { channel="roku:roku_player:myplayer1:button" } +``` +// Roku streaming media player items: + +String Player_ActiveApp "Current App: [%s]" { channel="roku:roku_player:myplayer1:activeApp" } +String Player_Button "Send Command to Roku" { channel="roku:roku_player:myplayer1:button" } String Player_PlayMode "Status: [%s]" { channel="roku:roku_player:myplayer1:playMode" } Number:Time Player_TimeElapsed "Elapsed Time: [%d %unit%]" { channel="roku:roku_player:myplayer1:timeElapsed" } Number:Time Player_TimeTotal "Total Time: [%d %unit%]" { channel="roku:roku_player:myplayer1:timeTotal" } + +// Roku TV items: + +String Player_ActiveApp "Current App: [%s]" { channel="roku:roku_tv:mytv1:activeApp" } +String Player_Button "Send Command to Roku" { channel="roku:roku_tv:mytv1:button" } +String Player_PlayMode "Status: [%s]" { channel="roku:roku_tv:mytv1:playMode" } +Number:Time Player_TimeElapsed "Elapsed Time: [%d %unit%]" { channel="roku:roku_tv:mytv1:timeElapsed" } +Number:Time Player_TimeTotal "Total Time: [%d %unit%]" { channel="roku:roku_tv:mytv1:timeTotal" } +String Player_ActiveChannel "Current Channel: [%s]" { channel="roku:roku_tv:mytv1:activeChannel" } +String Player_SignalMode "Signal Mode: [%s]" { channel="roku:roku_tv:mytv1:signalMode" } +Number Player_SignalQuality "Signal Quality: [%d %%]" { channel="roku:roku_tv:mytv1:signalQuality" } +String Player_ChannelName "Channel Name: [%s]" { channel="roku:roku_tv:mytv1:channelName" } +String Player_ProgramTitle "Program Title: [%s]" { channel="roku:roku_tv:mytv1:programTitle" } +String Player_ProgramDescription "Program Description: [%s]" { channel="roku:roku_tv:mytv1:programDescription" } +String Player_ProgramRating "Program Rating: [%s]" { channel="roku:roku_tv:mytv1:programRating" } + ``` roku.sitemap: -```perl +``` sitemap roku label="Roku" { Frame label="My Roku" { Selection item=Player_ActiveApp icon="screen" @@ -106,6 +135,14 @@ sitemap roku label="Roku" { Text item=Player_PlayMode Text item=Player_TimeElapsed icon="time" Text item=Player_TimeTotal icon="time" + // The following items apply to Roku TVs only + Selection item=Player_ActiveChannel icon="screen" + Text item=Player_SignalMode + Text item=Player_SignalQuality + Text item=Player_ChannelName + Text item=Player_ProgramTitle + Text item=Player_ProgramDescription + Text item=Player_ProgramRating } } ``` diff --git a/bundles/org.openhab.binding.roku/src/main/java/org/openhab/binding/roku/internal/RokuBindingConstants.java b/bundles/org.openhab.binding.roku/src/main/java/org/openhab/binding/roku/internal/RokuBindingConstants.java index 76401a776f61e..3ce242b7c4450 100644 --- a/bundles/org.openhab.binding.roku/src/main/java/org/openhab/binding/roku/internal/RokuBindingConstants.java +++ b/bundles/org.openhab.binding.roku/src/main/java/org/openhab/binding/roku/internal/RokuBindingConstants.java @@ -15,6 +15,7 @@ import java.util.Set; import javax.measure.Unit; +import javax.measure.quantity.Dimensionless; import javax.measure.quantity.Time; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -52,9 +53,17 @@ public class RokuBindingConstants { public static final String PLAY_MODE = "playMode"; public static final String TIME_ELAPSED = "timeElapsed"; public static final String TIME_TOTAL = "timeTotal"; + public static final String ACTIVE_CHANNEL = "activeChannel"; + public static final String SIGNAL_MODE = "signalMode"; + public static final String SIGNAL_QUALITY = "signalQuality"; + public static final String CHANNEL_NAME = "channelName"; + public static final String PROGRAM_TITLE = "programTitle"; + public static final String PROGRAM_DESCRIPTION = "programDescription"; + public static final String PROGRAM_RATING = "programRating"; // Units of measurement of the data delivered by the API public static final Unit