lifx-mqtt-bridge/src/lifx.rs
2019-01-15 21:41:43 +01:00

43 lines
968 B
Rust

use crate::light::Light;
use lifxi::http::prelude::*;
pub struct Lifx {
client: Client,
}
impl Lifx {
pub fn new<S: ToString>(secret: S) -> Self {
Lifx {
client: Client::new(secret),
}
}
pub fn find_lights(&self) -> Vec<Light> {
self.client
.select(Selector::All)
.list()
.send()
.unwrap()
.json()
.unwrap()
}
pub fn set_power(&self, id: String, state: bool) -> Result<(), lifxi::http::Error> {
self.client
.select(Selector::Id(id))
.change_state()
.power(state)
.send()
.and(Ok(()))
}
pub fn set_brightness(&self, id: String, brightness: f32) -> Result<(), lifxi::http::Error> {
self.client
.select(Selector::Id(id))
.change_state()
.brightness(brightness)
.send()
.and(Ok(()))
}
}