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
123 每月下载次数
140KB
3K SLoC
Twinkly LED的Glow Control库
glow-control-lib
包是一个Rust库,用于与Twinkly LED设备接口。它提供了一套全面的API,便于发现设备、操作设备模式、控制实时灯光效果等。该库是glow-control
CLI的基础,也可用于构建管理Twinkly LED控制器的自定义应用程序。
本项目从Python库xled和xled_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-MIT
和LICENSE-APACHE
文件中找到。
免责声明
此项目与Twinkly或其附属公司无关联、无授权、无赞助或以任何方式正式连接。官方Twinkly网站可在https://www.twinkly.com找到。
贡献
欢迎贡献!如果您想为此库做出贡献,请随时打开一个问题或创建一个带有您的改进或建议的pull request。
依赖项
~16–28MB
~455K SLoC