From d0cf5e012fffa5a95a40dc8eef7b390924358353 Mon Sep 17 00:00:00 2001 From: tronikos Date: Mon, 17 Apr 2023 00:50:34 -0700 Subject: [PATCH] Android TV Remote integration documentation (#26659) Co-authored-by: Marc Randolph Co-authored-by: Franck Nijhof --- .../_integrations/androidtv_remote.markdown | 357 ++++++++++++++++++ .../androidtv_remote/lovelace_example.png | Bin 0 -> 26354 bytes 2 files changed, 357 insertions(+) create mode 100644 source/_integrations/androidtv_remote.markdown create mode 100644 source/images/integrations/androidtv_remote/lovelace_example.png diff --git a/source/_integrations/androidtv_remote.markdown b/source/_integrations/androidtv_remote.markdown new file mode 100644 index 00000000000..ff4874af3dd --- /dev/null +++ b/source/_integrations/androidtv_remote.markdown @@ -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. + +![Screenshot Android TV Remote example](/images/integrations/androidtv_remote/lovelace_example.png) + +{% 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 %} diff --git a/source/images/integrations/androidtv_remote/lovelace_example.png b/source/images/integrations/androidtv_remote/lovelace_example.png new file mode 100644 index 0000000000000000000000000000000000000000..ac68b166ad1ac2f23fc3951309df81236b8e0f03 GIT binary patch literal 26354 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 ByoLY( literal 0 HcmV?d00001