#light #webhook #devices #usb-device #command-line-tool #cli #discovery

bin+lib luxafor

Library, and CLI, for Luxafor lights via either USB or webhooks

4 releases

0.2.2 Aug 19, 2020
0.2.1 Aug 18, 2020
0.2.0 Aug 18, 2020
0.1.0 Aug 17, 2020

#924 in Hardware support

MIT license

47KB
820 lines

Crate luxafor

Library, and CLI, for Luxafor lights via either USB or webhooks.

Rust Minimum Rust Version crates.io docs.rs MIT License GitHub stars

The main entry point for clients is the trait Device that has implementations for USB connected devices such as the flag as well as webhooks for both the flag and bluetooth lights.

Each connection has its own discovery or connection methods but will provide a Device implementation for the manipulation of the light state.

API Examples

The following example shows a function that sets the light to a solid red color. It demonstrates the use of a USB connected device.

use luxafor::usb_hid::USBDeviceDiscovery;
use luxafor::{Device, SolidColor};
use luxafor::error::Result;

fn set_do_not_disturb() -> Result<()> {
    let discovery = USBDeviceDiscovery::new()?;
    let device = discovery.device()?;
    println!("USB device: '{}'", device.id());
    device.set_solid_color(SolidColor::Red, false)
}

The following shows the same function but using the webhook connection.

use luxafor::webhook::new_device_for;
use luxafor::{Device, SolidColor};
use luxafor::error::Result;

fn set_do_not_disturb(device_id: &str) -> Result<()> {
    let device = new_device_for(device_id)?;
    println!("Webhook device: '{}'", device.id());
    device.set_solid_color(SolidColor::Red, false)
}

CLI Examples

The following shows the command line tool setting the color to red.

 lux -d 2a0f2c73b72 solid red

The following shows the command line tool setting the color to a blinking green. This example uses the environment variable LUX_DEVICE to save repeating the device identifier on each call.

 export LUX_DEVICE=2a0f2c73b72
 lux blink green

The following shows the command line tool turning the light off.

 lux -vvv -d 2a0f2c73b72 off
 INFO  luxafor > Setting the color of device '2a0f2c73b72e' to 000000
 INFO  luxafor > call successful

Features

  • command-line; provides the command line tool lux, it is not on by default for library clients.
  • usb; provides access to USB connected devices.
  • webhook (default); provides access to USB, or Bluetooth, devices via webhooks.

Changes

Version 0.2.2

  • Added HID specification documents to the usb_hid module.
  • Added new Wave enum
  • Added new methods to Device.
    • Fully supported on USB HID,
    • Not all are supported on webooks.
  • Added new TargetedDevice trait and USB implementation.

Version 0.2.1

  • Removed the DeviceIdentifier trait, and Device now returns a String.

Version 0.2.0

  • Refactored to provide a new Device trait
  • Implemented the trait for webhook connected lights
  • Added a new implementation for HID connected lights

Version 0.1.0

  • Initial commit, supports flag and bluetooth lights.

TODO

  • The webhook API is not as rich as the USB, need to find a way to manage this.

Dependencies

~2.5–8.5MB
~166K SLoC