yeelib_rs

Crates.ioyeelib_rs
lib.rsyeelib_rs
version0.1.1
sourcesrc
created_at2021-01-21 13:39:30.121654
updated_at2021-03-11 00:27:18.464923
descriptionEasily find and interface with Yeelight IoT smart lights
homepagehttps://github.com/teppah/yeelib
repositoryhttps://github.com/teppah/yeelib
max_upload_size
id344883
size66,250
teppah (teppah)

documentation

README

yeelib_rs

Crates.io badge License

A Rust library for easy interfacing with Yeelight products, including LAN light discovery with multicast and SSDP, with intended implementation of all major parts of the Yeelight Third-party Control Protocol.

Getting started

Unless otherwise specified, methods to adjust the light's parameters have the method name and behavior exactly as specified in the above spec.

use std::time::Duration;
use std::thread::sleep;

use yeelib_rs::{YeeClient, Light, YeeError};
use yeelib_rs::fields::{PowerStatus, Transition};

fn main() -> Result<(), YeeError> {
    let client = YeeClient::new()?;
    let mut lights: Vec<Light> = client.find_lights(Duration::from_secs(1));

    for light in lights.iter_mut() {
        light.set_power(PowerStatus::On, Transition::sudden())?;
        sleep(Duration::from_secs(1));

        light.set_bright(50, Transition::sudden())?;
        sleep(Duration::from_secs(1));

        light.set_ct_abx(3500,
                         Transition::smooth(Duration::from_millis(400))
                             .unwrap())?;
        sleep(Duration::from_secs(2));

        light.toggle()?;
    }
}

See main.rs for some more examples.

Currently supported methods

set_ct_abx
set_rgb
set_hsv
set_bright
set_power
toggle
adjust_bright
adjust_ct

To do

  • Document every component
  • Flatten public exports
  • Finish implementation of the API
  • Improve test coverage
  • Handle API errors

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 45

cargo fmt