Android TV Remote
The Android TV Remote integrationIntegrations connect and integrate Home Assistant with your devices, services, and more.
[Learn more] allows you to control an Android TV and launching apps. For this to work, the Android TV device needs to have Android TV Remote Service which is pre-installed on most devices (Fire TV devices are a notable exception).
For a quick introduction on how to get started with Android TV Remote, check out this video:
Configuration
To add the Android TV Remote integration to your Home Assistant instance, use this My button:
Android TV Remote can be auto-discovered by Home Assistant. If an instance was found, it will be shown as Discovered. You can then set it up right away.
If it wasn’t discovered automatically, don’t worry! You can set up a manual integration entry:
-
Browse to your Home Assistant instance.
-
In the bottom right corner, select the Add Integration button.
-
From the list, select Android TV Remote.
-
Follow the instructions on screen to complete the setup.
Media player
This integrationIntegrations connect and integrate Home Assistant with your devices, services, and more.
[Learn more] adds a media_player
with basic playback and volume controls. The media player provides volume information and display name of current active app on the Android TV. Due to API limitations, the integration will not display the playback status. It is recommended to use this integration together with Google Cast integration. Two media players can be combined into one using the Universal Media Player integration. See Using with Google Cast section for more details.
Using the media_player.play_media
service, you can launch applications via Deep Links
and switch channels. Only url
and channel
media types are supported.
Launching apps
You can pass any URL to the device. Using Deep Links
, you can launch some applications.
Examples of some Deep Links
for popular applications:
App | URL |
---|---|
YouTube |
https://www.youtube.com or vnd.youtube:// or vnd.youtube.launch://
|
Netflix |
https://www.netflix.com/title or netflix://
|
Prime Video | https://app.primevideo.com |
Disney+ | https://www.disneyplus.com |
Plex | plex:// |
Examples:
# Launch the Netflix app
service: media_player.play_media
data:
media_content_type: url
media_content_id: https://www.netflix.com/title
target:
entity_id: media_player.living_room_tv
# Open a specific YouTube video:
service: media_player.play_media
data:
media_content_type: url
media_content_id: https://www.youtube.com/watch?v=dQw4w9WgXcQ
target:
entity_id: media_player.living_room_tv
Switch channels
You can pass the channel number to switch channels. The channel number must be an integer.
Example:
# Change channel to number 15:
service: media_player.play_media
data:
media_content_type: channel
media_content_id: 15
target:
entity_id: media_player.living_room_tv
Using with Google Cast
Android TV Remote integrationIntegrations connect and integrate Home Assistant with your devices, services, and more.
[Learn more] provides information about the power status of the device and gives you the ability to control playback. However, it does not provide information about the currently playing content (media title, duration, play/pause state, etc.). In turn, Google Cast integration does not provide reliable information about the power status of the device (e.g. on Android TV Home Screen) and does not allow to control playback in Android apps without MediaSession support. However, it can display full information about the content being played in supported apps. For convenience, you can combine two media players into one using Universal Media Player integration. Universal Media Player will automatically select the appropriate active media player entity.
Replace media_player.living_room_tv_remote
with your Android TV Remote media player entity ID.
Replace media_player.living_room_tv_cast
with your Google Cast media player entity ID.
media_player:
- platform: universal
name: living_room_tv
unique_id: living_room_tv
device_class: tv
children:
- media_player.living_room_tv_remote
- media_player.living_room_tv_cast
browse_media_entity: media_player.living_room_tv_cast
commands:
turn_off:
service: media_player.turn_off
data:
entity_id: media_player.living_room_tv_remote
turn_on:
service: media_player.turn_on
data:
entity_id: media_player.living_room_tv_remote
volume_up:
service: media_player.volume_up
data:
entity_id: media_player.living_room_tv_remote
volume_down:
service: media_player.volume_down
data:
entity_id: media_player.living_room_tv_remote
Remote
The remote allows you to send key commands to your Android TV device with the remote.send_command
service.
The entity has the current_activity
attribute that shows the current foreground app on the Android TV.
Navigation:
- DPAD_UP
- DPAD_DOWN
- DPAD_LEFT
- DPAD_RIGHT
- DPAD_CENTER
- BUTTON_A
- BUTTON_B
- BUTTON_X
- BUTTON_Y
Volume Control:
- VOLUME_DOWN
- VOLUME_UP
- VOLUME_MUTE
- MUTE
Media Control:
- MEDIA_PLAY_PAUSE
- MEDIA_PLAY
- MEDIA_PAUSE
- MEDIA_NEXT
- MEDIA_PREVIOUS
- MEDIA_STOP
- MEDIA_RECORD
- MEDIA_REWIND
- MEDIA_FAST_FORWARD
TV Control:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- DEL
- ENTER
- CHANNEL_UP
- CHANNEL_DOWN
- F1
- F2
- F3
- F4
- F5
- F6
- F7
- F8
- F9
- F10
- F11
- F12
- TV
- PROG_RED
- PROG_GREEN
- PROG_YELLOW
- PROG_BLUE
Other:
- BUTTON_MODE
- EXPLORER
- MENU
- HOME
- INFO
- GUIDE
- TV_TELETEXT
- CAPTIONS
- DVR
- MEDIA_AUDIO_TRACK
- SETTINGS
- SEARCH
- ASSIST
If activity
is specified in remote.turn_on
it will open the specified URL in the associated app. See Launching apps section.
Examples of service calls:
# Open the currently selected item on the Android TV
service: remote.send_command
data:
command: DPAD_CENTER
target:
entity_id: remote.living_room_tv
# Long press on the currently selected item on the Android TV
service: remote.send_command
data:
command: DPAD_CENTER
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
# Launch YouTube
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.living_room_tv
# Open a specific YouTube video:
service: remote.turn_on
data:
activity: https://www.youtube.com/watch?v=dQw4w9WgXcQ
target:
entity_id: remote.living_room_tv
Dashboard example
You have to manually create buttons in Lovelace to send commands to the Android TV device or launch apps on it.
Below is an example for you to start with. Many of the buttons support long press.
Add a Manual card with the following code.
Replace all instances of living_room_tv
with your entity ID.
- To use the
replace all
functionality, inside the code editor, pressctrl+F
(orcommand+F
on Mac).
type: vertical-stack
cards:
- type: entities
entities:
- entity: remote.living_room_tv
- square: true
columns: 3
type: grid
cards:
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-up-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_UP
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-left-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_LEFT
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:circle
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:arrow-right-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_RIGHT
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:arrow-left
tap_action:
action: call-service
service: remote.send_command
data:
command: BACK
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: BACK
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:arrow-down-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_DOWN
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:home-outline
tap_action:
action: call-service
service: remote.send_command
data:
command: HOME
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: HOME
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- square: false
columns: 3
type: grid
cards:
- type: button
icon: mdi:skip-previous
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PREVIOUS
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_REWIND
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:play-pause
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PLAY_PAUSE
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_STOP
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:skip-next
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_NEXT
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_FAST_FORWARD
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:volume-off
tap_action:
action: call-service
service: remote.send_command
data:
command: MUTE
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:volume-medium
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_DOWN
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:volume-high
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_UP
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- square: false
columns: 4
type: grid
cards:
- type: button
icon: mdi:youtube
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:netflix
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.netflix.com/title
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Amazon_Prime_Video_logo.svg/450px-Amazon_Prime_Video_logo.svg.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://app.primevideo.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Disney%2B_logo.svg/440px-Disney%2B_logo.svg.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.disneyplus.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: entity
entity: remote.living_room_tv
attribute: current_activity
- type: media-control
entity: media_player.living_room_tv
Limitations and known issues
- The integration doesn’t work with Fire TV devices because they are missing the Android TV Remote Service. Attempts to sideload it haven’t been successful.
- If you cannot use the Google TV mobile app or the Google Home mobile app to send commands to the device, you cannot send commands with this integration either.
- Commands don’t work on Netflix. They don’t work from the Google TV mobile app or the Google Home mobile app either.
- Some devices, like Xiaomi, become unavailable after they are turned off and can’t be turned on with this integration.
- Some devices experience disconnects every 15 seconds. This is typically resolved by rebooting the Android TV device after the initial setup of the integration.
- If you are not able to connect to the Android TV device, or are asked to pair it again and again, try force-stopping the Android TV Remote Service and clearing its storage. On the Android TV device, go to settings > Apps > Show system apps. Then, select Android TV Remote Service > Storage > Clear storage. You will have to pair again.
- Some onscreen keyboards enabled by TV manufacturers do not support concurrent virtual and onscreen keyboard use. This presents whenever a text field is selected, such as “search” where a constant use the keyboard on your mobile device will show, preventing you from opening the onscreen keyboard to type. This can be overcome by either disabling your 3rd party keyboard and using the default Gboard keyboard or by unselecting Enable IME in the Configure page of the integration.