Expand description
§Roku ECP
This crate provides a wrapper over the Roku External Control Protocol which enables a Roku device to be controlled over a local area network through a RESTful API.
§Example Usage
The crate is fairly straightforward since all relevant methods revolve around the Device struct.
For a full code representation, view the examples folder.
ⓘ
use roku_ecp::{Device, Key, SearchRequest, SearchType};
let roku = Device::new("192.168.1.138").unwrap(); // remember to change the IP.
// Print information on the Roku device
println!("{:?}", roku.device_info().await.unwrap());
// Press the play button
roku.key_press(Key::Play).await.unwrap();
// Search for something
let search = SearchRequest::new("The Mandalorian")
.search_type(SearchType::TvShow)
.season(2)
roku.search(search).await.unwrap();
§Features
Currently Implemented:
- Queries for device, media player, and app information.
- Key press/down/up events for various keys.
- Launching/Installing Applications.
- Searching through Roku’s Search UI.
Possible Features for the Future:
- Scanning the local network for Roku devices.
- Inputs for accelerometer, orientation, gyroscope, magnetometer, touch, and multi-touch.
- Roku TV commands for queries and inputs.
§Dependencies
Operating Systems
Windows and macOS: None
Linux: OpenSSL + headers > v1.0.1
- Debian:
sudo apt install libssl-dev
- Fedora:
sudo dnf install openssl-devel
Async Runtime
This crate requires an asynchronous runtime such as tokio or async-std.
Structs§
- An HTTP client that communicates with a Roku device.
- Describes a search to the Roku Search UI to find and (optionally) launch content from an available provider.
Enums§
- Roku communication errors.
- Supported key values for Roku devices.
- Constraints for the type of desired search result.
Constants§
- Default port for communicating with the ECP RESTful service.