#智能家居 #涂鸦 #智能生活

rust-async-tuyapi

此包是 codetheweb 开发的 Tuya API 的 NodeJS 实现的 Rust 版本,适用于异步使用

3 个版本 (1 个稳定版本)

1.0.0 2023年5月25日
0.9.0 2023年5月17日
0.8.1 2022年1月20日

#1608 in 解析器实现

自定义许可

56KB
1K SLoC

rust-async-tuyapi

rust-async-tuyapi 是用于与 Tuya/Smart Life 设备通信的 Tuya API 的异步实现。

此软件包支持 musl 目标。

原始同步版本在此:https://github.com/EmilSodergren/rust-tuyapi

致谢

先决条件

您需要知道 Tuya 设备的 key 和 id。据我所知,查找这些信息的最佳方法在以下链接中解释: 添加 Tuya 灯泡的步骤


lib.rs:

Rust Tuyapi

此库可用于与 Tuya/智能家居设备交互。它利用 Tuya 协议版本 3.1 和 3.3 发送和接收来自设备的消息。

示例

此示例展示了如何打开一个插座。

// The dps value is device specific, this socket turns on with key "1"
let mut dps = HashMap::new();
dps.insert("1".to_string(), json!(true));
let current_time = SystemTime::now()
    .duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs() as u32;

let dps = serde_json::to_value(&dps).unwrap();

// Create the payload to be sent, this will be serialized to the JSON format
let payload = Payload::Struct(PayloadStruct{
       dev_id: "123456789abcdef".to_string(),
       gw_id: Some("123456789abcdef".to_string()),
       uid: None,
       t: Some(current_time.to_string()),
       dp_id: None,
       dps: Some(dps),
       });
// Create a TuyaDevice, this is the type used to set/get status to/from a Tuya compatible
// device.
let mut tuya_device = TuyaDevice::new("3.3", "fedcba987654321", None,
    IpAddr::from_str("192.168.0.123").unwrap())?;

// Set the payload state on the Tuya device, an error here will contain
// the error message received from the device.
tuya_device.set(payload).await?;

依赖关系

~6–15MB
~185K SLoC