#led #control #api-bindings #twinkly

glow-control-lib

用于控制可编程LED灯的库

8个不稳定版本 (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日

#812 in 硬件支持

Download history 277/week @ 2024-04-18 45/week @ 2024-04-25 2/week @ 2024-05-02 5/week @ 2024-05-16 2/week @ 2024-05-23 1/week @ 2024-05-30 3/week @ 2024-06-06 2/week @ 2024-06-13 5/week @ 2024-07-04 73/week @ 2024-08-01

每月73次下载
用于 glow-control

MIT/Apache

115KB
2.5K SLoC

Build Status

Crates.io

Crates.io 命令行界面

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应用程序,请确保已安装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

运行实时测试颜色

要运行实时测试颜色,请使用real-time-test子命令,位于device-call命令下。这将在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或其附属公司相连。官方Twinkly网站可在https://www.twinkly.com找到。

贡献

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

依赖关系

~13-26MB
~402K SLoC