From 053fc952d16f849b30fff5d99dd40338055101e3 Mon Sep 17 00:00:00 2001 From: Amir Saeid Date: Fri, 19 Jun 2020 18:55:42 +0100 Subject: Reduce sleep time Also only attempt to change temprature if the value has changed --- src/bin/sctd.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/bin/sctd.rs b/src/bin/sctd.rs index 8161bee..ca93fa8 100644 --- a/src/bin/sctd.rs +++ b/src/bin/sctd.rs @@ -17,7 +17,7 @@ fn main() { env_logger::init_from_env(env); let matches = App::new("sctd") - .version("0.1.2") + .version("0.2.0") .about("set color temperature daemon") .arg( Arg::with_name("latitude") @@ -39,20 +39,29 @@ fn main() { } else { let latitude = value_t_or_exit!(matches, "latitude", f64); let longitude = value_t_or_exit!(matches, "longitude", f64); + let mut temp = 0; loop { let utc: DateTime = Utc::now(); match calc_sunrise_and_set(utc, latitude, longitude) { Ok(ss) => { - let temp = sctd::get_temp(utc, &ss, latitude, longitude) as u32; - info!("setting temprature to {}", temp); - sctd::set_temp(temp); + let new_temp = sctd::get_temp(utc, &ss, latitude, longitude) as u32; + if new_temp != temp { + temp = new_temp; + info!("setting temprature to {}", temp); + sctd::set_temp(temp); + } else { + debug!("skipping temperature change as it hasn't changed ({})", temp); + } } Err(e) => { - error!("error calculating sunrise and sunset for {}, {}: {:?}", latitude, longitude, e); + error!( + "error calculating sunrise and sunset for {}, {}: {:?}", + latitude, longitude, e + ); } } - thread::sleep(Duration::from_secs(300)); + thread::sleep(Duration::from_secs(5)); } } } -- cgit v1.2.3