mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-24 09:46:59 +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