use std::{thread, time::Duration};
use yeelight::{Bulb, Effect, Mode, Power, Properties, Property};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
let mut bulb = Bulb::connect("192.168.1.204", 55443).await?;
println!(
"Response: {:?}",
bulb.set_power(
Power::On,
Effect::Sudden,
Duration::from_secs(1),
Mode::Normal
)
.await?
);
let props = Properties(vec![
Property::Power,
Property::Bright,
Property::CT,
Property::RGB,
]);
for _ in 1..10u8 {
let response = bulb.get_prop(&props).await?.unwrap();
let brightness = response[1].parse::<u32>()?;
let brightness = if brightness % 2 == 0 {
brightness / 2
} else {
brightness * 3 + 1
};
let brightness = (brightness % 100 + 1) as u8;
println!("Setting brightness to {}", brightness);
let response = bulb
.set_bright(brightness, Effect::Smooth, Duration::from_secs(1))
.await?;
eprintln!("Response: {:?}", response);
thread::sleep(Duration::from_secs(1));
}
bulb.set_rgb(0xff_00_00, Effect::Smooth, Duration::from_secs(1))
.await?;
Ok(())
}