mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-18 06:46:58 +00:00
Android TV Remote integration documentation (#26659)
Co-authored-by: Marc Randolph <mrand@users.noreply.github.com> Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This commit is contained in:
parent
23bd12fb6e
commit
d0cf5e012f
357
source/_integrations/androidtv_remote.markdown
Normal file
357
source/_integrations/androidtv_remote.markdown
Normal file
@ -0,0 +1,357 @@
|
|||||||
|
---
|
||||||
|
title: Android TV Remote
|
||||||
|
description: Instructions on how to integrate Android TV remotes into Home Assistant.
|
||||||
|
ha_category:
|
||||||
|
- Remote
|
||||||
|
ha_release: 2023.5
|
||||||
|
ha_iot_class: Local Push
|
||||||
|
ha_config_flow: true
|
||||||
|
ha_codeowners:
|
||||||
|
- '@tronikos'
|
||||||
|
ha_quality_scale: platinum
|
||||||
|
ha_domain: androidtv_remote
|
||||||
|
ha_zeroconf: true
|
||||||
|
ha_platforms:
|
||||||
|
- diagnostics
|
||||||
|
- remote
|
||||||
|
ha_integration_type: device
|
||||||
|
---
|
||||||
|
|
||||||
|
The Android TV Remote integration allows you to control an Android TV device by sending [commands](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt) and launching apps. For this to work the Android TV device needs to have [Android TV Remote Service](https://play.google.com/store/apps/details?id=com.google.android.tv.remote.service) which is pre-installed on most devices.
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
## Entity
|
||||||
|
|
||||||
|
This integration adds a `remote` entity which turns on/off the Android TV device.
|
||||||
|
The entity has the `current_activity` attribute that shows the current foreground app on the Android TV.
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
You can use the `remote.turn_off`, `remote.turn_on`, `remote.toggle`, and `remote.send_command` services from the [remote](/integrations/remote/) platform.
|
||||||
|
|
||||||
|
For a list of the most common commands you can send to the Android TV via `remote.send_command` see: [TvKeys](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt).
|
||||||
|
For a full list see [here](https://github.com/tronikos/androidtvremote2/blob/main/src/androidtvremote2/remotemessage.proto#L90).
|
||||||
|
|
||||||
|
If `activity` is specified in `remote.turn_on` it will open the specified URL in the associated app.
|
||||||
|
|
||||||
|
Examples of URLs to pass as activity for some popular apps:
|
||||||
|
|
||||||
|
| App | URL |
|
||||||
|
| --- | --- |
|
||||||
|
| YouTube | https://www.youtube.com
|
||||||
|
| Netflix | https://www.netflix.com/title
|
||||||
|
| Prime Video | https://app.primevideo.com
|
||||||
|
| Disney+ | https://www.disneyplus.com
|
||||||
|
|
||||||
|
Examples of service calls:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Open the currently selected item on the Android TV
|
||||||
|
service: remote.send_command
|
||||||
|
data:
|
||||||
|
command: DPAD_CENTER
|
||||||
|
target:
|
||||||
|
entity_id: remote.living_room_tv
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# 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
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Launch YouTube
|
||||||
|
service: remote.turn_on
|
||||||
|
data:
|
||||||
|
activity: https://www.youtube.com
|
||||||
|
target:
|
||||||
|
entity_id: remote.living_room_tv
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# 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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{% details "Lovelace example" %}
|
||||||
|
|
||||||
|
Replace all instances of `living_room_tv` with your entity ID.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
{% enddetails %}
|
BIN
source/images/integrations/androidtv_remote/lovelace_example.png
Normal file
BIN
source/images/integrations/androidtv_remote/lovelace_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Loading…
x
Reference in New Issue
Block a user