mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-27 19:26:50 +00:00
Add emulated_roku docs (#6928)
* Add emulated_roku docs * Update emulated_roku docs * Update emulated_roku docs * Update emulated_roku docs to remove yaml configuration * Add yaml configuration sample * Added emulated_roku API warning, clarified setup and troubleshooting * Add troubleshooting for Docker UPnP discovery * Update emulated_roku release version * Remove emulated_roku qa_scale
This commit is contained in:
parent
0d63a66565
commit
769246b341
125
source/_components/emulated_roku.markdown
Normal file
125
source/_components/emulated_roku.markdown
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Emulated Roku"
|
||||||
|
description: "Instructions on how to set up Emulated Roku within Home Assistant."
|
||||||
|
date: 2019-01-10 08:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: home-assistant.png
|
||||||
|
ha_category: Hub
|
||||||
|
ha_release: 0.86.0
|
||||||
|
ha_iot_class: "Local Push"
|
||||||
|
---
|
||||||
|
|
||||||
|
This component integrates an emulated Roku API into Home Assistant,
|
||||||
|
so remotes such as Harmony and Android apps can connect to it through WiFi as it were a Roku player.
|
||||||
|
Home Assistant will see key presses and app launches as Events, which you can use as triggers for automations.
|
||||||
|
Multiple Roku servers may be started if you run out of buttons by specifying multiple server entries.
|
||||||
|
|
||||||
|
<p class='note'>
|
||||||
|
Windows is not supported because Home Assistant uses `ProactorEventLoop` which does not support UDP sockets.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='note warning'>
|
||||||
|
This component opens an unauthenticated API on the host, allowing anything on the local network to access
|
||||||
|
your Home Assistant instance through the automations you create with emulated Roku as the trigger.
|
||||||
|
Using a proxy with whitelist for IP addresses is recommended. (set `advertise_ip` to the proxy's ip or DNS name)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## {% linkable_title Configuration %}
|
||||||
|
|
||||||
|
The component is configurable through the frontend. (**Configuration** -> **Integrations** -> **Emulated Roku**)
|
||||||
|
|
||||||
|
If you wish to configure advanced options, you can add the following entry in `configuration.yaml`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
emulated_roku:
|
||||||
|
servers:
|
||||||
|
- name: Home Assistant
|
||||||
|
listen_port: 8060
|
||||||
|
```
|
||||||
|
|
||||||
|
{% configuration %}
|
||||||
|
name:
|
||||||
|
description: Name of the Roku that will be displayed as the serial number in Harmony.
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
listen_port:
|
||||||
|
description: The port the Roku API will run on. This can be any free port on your system.
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
host_ip:
|
||||||
|
description: The IP address that your Home Assistant installation is running on. If you do not specify this option, the component will attempt to determine the IP address on its own.
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
advertise_ip:
|
||||||
|
description: If you need to override the IP address or DNS name used for UPnP discovery. (For example, using network isolation in Docker or using a proxy)
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
advertise_port:
|
||||||
|
description: If you need to override the advertised UPnP port.
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
upnp_bind_multicast:
|
||||||
|
description: Whether or not to bind the UPnP (SSDP) listener to the multicast address (239.255.255.250) or instead to the (unicast) host_ip address specified above (or automatically determined). The default is true, which will work in most situations. In special circumstances, like running in a FreeBSD or FreeNAS jail, you may need to disable this.
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
{% endconfiguration %}
|
||||||
|
|
||||||
|
After starting up, you can check if the emulated Roku is reachable at the specified ports on your Home Assistant instance (eg.: `http://192.168.1.101:8060/`).
|
||||||
|
|
||||||
|
## {% linkable_title Events %}
|
||||||
|
|
||||||
|
### {% linkable_title Event `roku_command` %}
|
||||||
|
|
||||||
|
All Roku commands are sent as `roku_command` events.
|
||||||
|
|
||||||
|
Field | Description
|
||||||
|
----- | -----------
|
||||||
|
`source_name` | Name of the emulated Roku instance that sent the event. Only required when using multiple instances to filter event sources.
|
||||||
|
`type` | The type of the event that was called on the API.
|
||||||
|
`key` | the code of the pressed key when the command `type` is `keypress`, `keyup` or `keydown`.
|
||||||
|
`app_id` | the id of the app that was launched when command `type` is `launch`.
|
||||||
|
|
||||||
|
The available keys are listed here:
|
||||||
|
[Roku key codes](https://sdkdocs.roku.com/display/sdkdoc/External+Control+API#ExternalControlAPI-KeypressKeyValues)
|
||||||
|
|
||||||
|
## {% linkable_title Automations %}
|
||||||
|
|
||||||
|
The following is an example implementation of an automation:
|
||||||
|
```yaml
|
||||||
|
# Example automation
|
||||||
|
- id: amp_volume_up
|
||||||
|
alias: Increase amplifier volume
|
||||||
|
trigger:
|
||||||
|
- platform: event
|
||||||
|
event_type: roku_command
|
||||||
|
event_data:
|
||||||
|
source_name: Home Assistant
|
||||||
|
type: keypress
|
||||||
|
key: Fwd
|
||||||
|
action:
|
||||||
|
- service: media_player.volume_up
|
||||||
|
entity_id: media_player.amplifier
|
||||||
|
```
|
||||||
|
|
||||||
|
## {% linkable_title Troubleshooting %}
|
||||||
|
|
||||||
|
If you change your advertised IP or ports, you will have to re-add the emulated Roku in your app.
|
||||||
|
When using Harmony, the app should auto-discover any changes via UPnP discovery (if `name` is unchanged) once it detects that the device is unreachable.
|
||||||
|
Alternatively, you can trigger the 'Fix' page by pressing a button on the unreachable device's remote in the app and wait ~10 seconds, then click 'Fix it'.
|
||||||
|
|
||||||
|
Known limitations:
|
||||||
|
* Some Android remotes send key up/down events instead of key presses.
|
||||||
|
* Functionality other than key presses and app launches are not implemented yet.
|
||||||
|
* App ids are limited between 1-10. (The emulated API reports 10 dummy apps)
|
||||||
|
* Harmony uses UPnP discovery (UPnP is not needed after pairing), which might not work in Docker. You can:
|
||||||
|
* Change Docker to host networking temporarily, then revert after pairing.
|
||||||
|
* Run the `advertise.py` helper script from the emulated_roku library directly somewhere else and point it to the emulated Roku API.
|
||||||
|
* Harmony cannot launch apps as it uses IR instead of the WiFi API and will not display the custom dummy app list.
|
||||||
|
* Home control buttons cannot be assigned to emulated Roku on the Harmony Hub Companion remote as they are limited to Hue (and possibly other APIs) within Harmony.
|
||||||
|
* Harmony will not set the name of the added emulated Roku device to the specified `name`.
|
Loading…
x
Reference in New Issue
Block a user