Roku


The Roku integration allows you to control a Roku device.

Configuration

Adding Roku to your Home Assistant instance can be done via the user interface, by using this My button:

Roku can be auto-discovered by Home Assistant. If an instance was found, it will be shown as “Discovered”, which you can select to set it up right away.

Manual configuration steps

There is currently support for the following device types within Home Assistant:

  • Media Player
  • Remote

Remote

The roku remote platform allows you to send remote control buttons to a Roku device. It is automatically set up when a Roku is configured.

At the moment, the following buttons are supported:

  • back
  • backspace
  • channel_down
  • channel_up
  • down
  • enter
  • find_remote
  • forward
  • home
  • info
  • input_av1
  • input_hdmi1
  • input_hdmi2
  • input_hdmi3
  • input_hdmi4
  • input_tuner
  • left
  • literal
  • play
  • power
  • replay
  • reverse
  • right
  • search
  • select
  • up
  • volume_down
  • volume_mute
  • volume_up

A typical service call for pressing several buttons looks like this.

service: remote.send_command
target:
  entity_id: remote.roku
data:
  command:
    - left
    - left
    - select

Media Player

When the Home Assistant Roku integration is enabled and a Roku device has been configured, in the Home Assistant UI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device.

Source Automation

The media_player.select_source service may be used to launch specific applications/streaming channels on your Roku device.

Service data attribute Optional Description Example
entity_id no Target a specific media player.
source no An application name or application ID. Prime Video

Examples

action:
- service: media_player.select_source
  target:
    entity_id: media_player.roku
  data:
    source: "Prime Video"

Alternatively, the application id can be used for source. See Obtaining Application IDs.

action:
  - service: media_player.select_source
    target:
      entity_id: media_player.roku
    data:
      source: 20197

Obtaining Application IDs

The currently active application ID can be found in the Active App ID diagnostic sensor.

Alternatively, you can make a manual HTTP request (GET) to http://ROKU_IP:8060/query/apps, in either your browser or terminal, to retrieve a complete list of installed applications in XML format.

TV Channel Tuning

The media_player.play_media service may be used to tune to specific channels on your Roku TV device with OTA antenna.

Service data attribute Optional Description Example
entity_id no Target a specific media player.
media_content_id no A channel number. 5.1
media_content_type no A media type. channel

Example

action:
  - service: media_player.play_media
    target:
      entity_id: media_player.roku
    data:
      media_content_id: 5.1
      media_content_type: channel

Play on Roku

The media_player.play_media service may be used to send media URLs (primarily videos) for direct playback on your device. This feature makes use of the built-in PlayOnRoku application.

Service data attribute Optional Description Example
entity_id no Target a specific media player.
media_content_id no A media URL. http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
media_content_type no A media type. url
extra.format no A media format. Should be one of mp4 (supports mov and m4v), mp3, hls, ism (smooth streaming), dash (MPEG-DASH), mkv, mka, mks mp4
extra.name yes A name for the media. Big Buck Bunny
extra.thumbnail yes A thumbnail URL for the media.
extra.artist_name yes The name of the media artist. Blender

Example

action:
  - service: media_player.play_media
    target:
      entity_id: media_player.roku
    data:
      media_content_id: http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
      media_content_type: url
      extra:
        format: mp4
        name: Big Buck Bunny

Camera Stream Integration

The camera.play_stream service may be used to send camera streams (HLS) directly to your device. This feature requires the stream integration and makes use of the built-in PlayOnRoku application.

Example

action:
  service: camera.play_stream
    target:
      entity_id: camera.camera
    data:
      media_player: media_player.roku

Content Deeplinking

The media_player.play_media service may be used to deep link to content within an application.

Service data attribute Optional Description Example
entity_id no Target a specific media player.
media_content_id no A media identifier. 291097
media_content_type no A media type. app
extra.content_id no A unique content identifier passed to app. 8e06a8b7-d667-4e31-939d-f40a6dd78a88
extra.media_type no A media type passed to app. Should be one of movie, episode, season, series, shortFormVideo, special, live movie

Example

action:
  - service: media_player.play_media
    target:
      entity_id: media_player.roku
    data:
      media_content_id: 291097
      media_content_type: app
      extra:
        content_id: 8e06a8b7-d667-4e31-939d-f40a6dd78a88
        media_type: movie

Obtaining Content IDs

Content IDs are unique to each streaming service and vary in format but are often part of the video webpage URL. Here are some examples:

Service App ID URL Format Content ID Media Type
Disney Plus 291097 disneyplus.com/video/8e06a8b7-d667-4e31-939d-f40a6dd78a88 8e06a8b7-d667-4e31-939d-f40a6dd78a88 movie
Hulu 2285 hulu.com/series/american-dad-977c8e25-cde0-41b7-80ce-e746f2d2093f american-dad-977c8e25-cde0-41b7-80ce-e746f2d2093f series
Spotify 22297 open.spotify.com/playlist/5xddIVAtLrZKtt4YGLM1SQ spotify:playlist:5xddIVAtLrZKtt4YGLM1SQ playlist
YouTube 837 youtu.be/6ZMXE5PXPqU 6ZMXE5PXPqU live

Services

Service roku.search

This service allows you to emulate opening the search screen and entering the search keyword.

Service data attribute Optional Description Example
entity_id yes The entities to search on. media_player.roku
keyword no The keyword to search for. Space Jam