#light #cute #smart #controlling #hue #lan #kasa

cute_lights

A Rust library for controlling Smart Lights

7 releases

0.3.0 Jul 22, 2024
0.2.4 Jul 20, 2024
0.1.2 Jul 15, 2024

#262 in Hardware support

GPL-3.0-or-later

36KB
1K SLoC

Cute Lights

Cute Lights is a simple library for controlling various types of smart lights threw a unified api. It is designed to be simple to use and easy to extend. It can be used as a rust crate or a c shared library. With bindings for dotnet and python.

Supported Lights

  • Philips Hue
  • Tp-Link Kasa
  • Govee (Must have lan control enabled)
  • OpenRgb

Usage

use cute_lights::{discover_lights, CuteResult};
use std::thread::sleep;
use std::time::Duration;

#[tokio::main]
async fn main() -> CuteResult<()> {
    let mut lights = discover_lights().await;

    loop {
       for light in lights.iter_mut() {
            light.set_on(true).await?;
            light.set_color(255, 0, 0).await?;
            light.set_brightness(100).await?;
            sleep(Duration::from_secs(1));
        }
    }
}

Configuration

The configuration file is located at ~/.config/cute_lights/lights.toml. It is used to store the ip addresses and api keys for lights. The file should look like this:

[kasa]
enabled = true
addresses = [
    "192.168.86.xx",
    "192.168.86.xx",
]

[govee]
enabled = true
addresses = ["192.168.86.xx"]

[hue]
enabled = true
bridge_ip = "192.168.86.xx"
username = "<Your Hue Api Key>"

Language Bindings

  • Rust

Dependencies

~8–20MB
~296K SLoC