yeelib_rs

A Rust library for easy interfacing with Yeelight products, including LAN light discovery with multicast, 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.

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

use yeelibrs::YeeClient; use yeelibrs::light::Light; use yeelibrs::err::YeeError; use yeelibrs::req::Transition; use yeelib_rs::fields::PowerStatus;

fn main() -> Result<(), YeeError> { let client = YeeClient::new()?; let mut lights: Vec = client.getresponse(Duration::fromsecs(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

To do

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.