#智能家居 #API包装器 #设备 #MQTT #服务质量 #tokio #小巧

sengled

基于 Sengled 智能设备的轻量级 API 包装器

2 个版本

0.1.1 2024年3月12日
0.1.0 2024年3月12日

#3#服务质量

MIT 许可证

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