Emulated Roku
The Emulated Roku integration集成将 Home Assistant 与您的设备、服务等连接和集成。 [Learn more] integrates an emulated Roku API into Home Assistant, so remotes such as Harmony and Android apps can connect to it through Wi-Fi as if 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.
Windows is not supported because Home Assistant uses ProactorEventLoop
which does not support UDP sockets.
This integration集成将 Home Assistant 与您的设备、服务等连接和集成。 [Learn more] 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 whitelisted IP addresses is recommended. (set advertise_ip
to the proxy’s IP or DNS name)
配置
要将 Emulated Roku integration 添加到您的 Home Assistant 实例中,请使用此 My 按钮:
手动配置步骤
如果上述 My 按钮不起作用,您也可以手动执行以下步骤:
-
浏览到您的 Home Assistant 实例。
-
转到
设置 > 设备与服务。 -
在右下角,选择
Add Integration 按钮。 -
从列表中选择 Emulated Roku。
-
按照屏幕上的说明完成设置。
Manual configuration
If you wish to configure advanced options, you can add the following entry in your configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] file.
在更改了configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件后,重启 Home Assistant 以应用更改。
# Example configuration.yaml entry
emulated_roku:
servers:
- name: Home Assistant
listen_port: 8060
Configuration Variables
The port the Roku API will run on. This can be any free port on your system.
The IP address that your Home Assistant installation is running on. If you do not specify this option, the integration will attempt to determine the IP address on its own.
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)
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.
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/
).
Events
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 . |
Available key codes |
---|
Home |
Rev |
Fwd |
Play |
Select |
Left |
Right |
Down |
Up |
Back |
InstantReplay |
Info |
BackSpace |
Search |
Enter |
PowerOff |
Automations
The following is an example implementation of an automation:
# Example automation
- id: amp_volume_up
alias: "Increase amplifier volume"
triggers:
- trigger: event
event_type: roku_command
event_data:
source_name: Home Assistant
type: keypress
key: Fwd
actions:
- action: media_player.volume_up
target:
entity_id: media_player.amplifier
Video tutorial
This comprehensive video tutorial explains how events work in Home Assistant and how you can set up Emulated Roku to control a media player using a physical remote control.
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 Wi-Fi 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
.