2 个版本
0.1.1 | 2024年3月12日 |
---|---|
0.1.0 | 2024年3月12日 |
#3 在 #服务质量
20KB
440 行
sengled-rs
基于 Sengled 智能家居设备的轻量级 API 包装器。ha-sengledapi 的松散 Rust 版本ha-sengledapi。
安装
使用 cargo add sengled
安装。
使用方法
查看一些示例。
#[tokio::main]
async fn main() {
// log in
let mut client =
sengled::Client::new("username", "password").with_preferred_qos(sengled::QoS::AtMostOnce);
client.login_and_start().await.unwrap();
// get wifi devices
let devices = client.wifi_devices().await.unwrap();
// turn all of them on by setting "switch" to "1" and print their names
for mut device in devices {
device.set_attribute(&client, "switch", "1").await.unwrap();
println!("{}", device.get_attribute_or("name", "unknown"));
// also, maybe explore other attributes to see what else you can do...
// println!("{:#?}", &device.attributes);
}
// close the client, ensuring MQTT messages are actually sent
client.close().await.unwrap();
}
优化
您可以在 sengled::Client
上使用 .with_preferred_qos
来控制通过 MQTT 消息传递的质量服务。
在启动客户端之前,您可以使用 .with_skip_server_check()
在 sengled::Client
上跳过服务器检查。默认情况下,包装器将联系一个 API 端点并收集一些关于目标 MQTT 代理服务器的信息。在我的测试中,这并没有改变,因此当使用 .with_skip_server_check()
时,包装器将使用默认值并保存一个 API 调用。
如果您已经有了您的 Sengled 账户的 jsessionId,则可以使用 .start(session)
而不是 .login_and_start()
。 .login_and_start()
返回此 jsessionId,因此您可以缓存此值并稍后使用 .start(session)
以保存 API 调用。
依赖项
~11–25MB
~392K SLoC