7个不稳定版本 (3个破坏性版本)

新版本 0.6.0 2024年8月6日
0.5.0 2024年4月23日
0.4.0 2024年4月21日
0.3.5 2024年4月12日
0.3.3 2023年11月30日

#3 in #upload

Download history 290/week @ 2024-04-19 28/week @ 2024-04-26 1/week @ 2024-05-03 3/week @ 2024-05-17 1/week @ 2024-05-24 123/week @ 2024-08-02

123 每月下载次数

MIT/Apache

140KB
3K SLoC

Build Status

Crates.io

Crates.io CLI

Twinkly LED的Glow Control库

请务必查看项目网站上的书籍

glow-control-lib包是一个Rust库,用于与Twinkly LED设备接口。它提供了一套全面的API,便于发现设备、操作设备模式、控制实时灯光效果等。该库是glow-control CLI的基础,也可用于构建管理Twinkly LED控制器的自定义应用程序。

本项目从Python库xledxled_plus中汲取灵感,并旨在成为Rust生态系统的开源替代品。

功能

  • 基于网络的Twinkly设备发现
  • 易于与任何可以将输出管道到CLI的应用程序集成
  • 用于管理设备模式和设置的 高级控制接口
  • 从外部网络设备实时控制效果
  • 自定义LED电影上传
  • 用于设备认证和通信的实用函数

库使用

使用库将Twinkly设备设置为特定模式的简单示例

use std::collections::HashSet;
use std::time::Duration;
use glow_control_lib::control_interface::{ControlInterface, DeviceMode};
use glow_control_lib::util::discovery::{DeviceIdentifier, Discovery};
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Discover devices with a 5-second timeout
    let devices: HashSet<DeviceIdentifier> = Discovery::find_devices(Duration::from_secs(5)).await?;

    // Iterate over the discovered devices, print their details and set their mode
    for device in devices {
        println!("\n{} Found device {}\n{:?}\n", "=".repeat(30), "=".repeat(30), device);

        let control = ControlInterface::from_device_identifier(device).await?;
        control.set_mode(DeviceMode::Color).await?;
    }

    Ok(())
}

有关更多示例和详细API文档,请在将库添加到项目后运行cargo doc --open

CLI使用

要安装CLI应用程序,请确保您已安装Rust和Cargo,然后运行

cargo install glow-control

从crates-io安装,或

cargo install --path .

直接从仓库安装。

准备您的设备

要开始使用,请确保您的灯光已在本地网络上使用官方Twinkly应用程序进行配置,并且您已使用该应用程序生成3D点云。该点云将由官方应用程序存储在您的单个Twinkly设备上,因此在初始配置之后,您不再需要应用程序来使用glow-control

发现功能

glow-control CLI提供了一个discover子命令,允许您扫描网络中的Twinkly设备。您可以使用此功能查找设备的IP和MAC地址,这些地址是其他CLI命令所必需的。

要使用discover功能,请运行以下命令

默认情况下,发现搜索时间为5000毫秒。如有需要,您可以进行调整。

glow-control discover
IP Address    Device ID        MAC Address         Device Name   LED Count
-----------   --------------   -----------------   -----------   ---------
10.10.0.42    Twinkly_C54ABC   11:38:aa:c4:aa:55   Living Room   250
10.10.0.37    Twinkly_C5CDEF   bb:e5:7c:dd:bb:57   Kitchen       600

您还可以使用--output选项指定输出格式。支持的格式包括

  • plaintext(默认)
  • json
  • yaml

例如,要获取JSON格式的结果

glow-control discover --output json

运行实时测试颜色

要运行实时测试颜色,请在device-call命令下使用real-time-test子命令。这将显示Twinkly设备上的旋转颜色模式。

glow-control device-call --ip <DEVICE_IP> --mac <DEVICE_MAC> real-time-test

<DEVICE_IP><DEVICE_MAC>分别是您的Twinkly设备的IP和MAC地址。它们必须为所有设备特定命令指定。

实时测试输入直接从CLI二进制文件中获取帧。一旦您终止程序,Twinkly设备最终将超时并返回到其先前状态。

演示外部应用程序集成

通过将另一个程序的输出重定向到CLI,可以实现与其他应用程序的集成。例如,要在设备上显示随机变化的颜色

cat/dev/random|cargo run--device-call--ip10.10.0.37 --mac bb:e5:7c:dd:bb:57rt-stdin--format binary--error-modemod-invalid-address--leds-per-frame5 --min-frame-duration100

其他示例

将设备模式设置为'movie'

glow-control device-call--ip<DEVICE_IP> --mac<DEVICE_MAC>set-mode movie

显示纯色

glow-control device-call--ip<DEVICE_IP> --mac<DEVICE_MAC>rt-effect show-color--color Red

许可证

此库根据MIT许可证和Apache许可证2.0双授权,允许您选择最适合您的项目需求的许可证。许可证的全文可以在LICENSE-MITLICENSE-APACHE文件中找到。

免责声明

此项目与Twinkly或其附属公司无关联、无授权、无赞助或以任何方式正式连接。官方Twinkly网站可在https://www.twinkly.com找到。

贡献

欢迎贡献!如果您想为此库做出贡献,请随时打开一个问题或创建一个带有您的改进或建议的pull request。

依赖项

~16–28MB
~455K SLoC