[][src]Crate roku_ecp

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

Device

An HTTP client that communicates with a Roku device.

SearchRequest

Describes a search to the Roku Search UI to find and (optionally) launch content from an available provider.

Enums

Error

Roku communication errors.

Key

Supported key values for Roku devices.

SearchType

Constraints for the type of desired search result.

Constants

ECP_PORT

Default port for communicating with the ECP RESTful service.