1 个不稳定版本

0.1.0 2021年2月28日

#1239硬件支持

自定义许可

13KB
246

vesync-rs

这个包允许您访问和控制您的 VeSync 智能插座,例如,Etekcity 智能插头。您必须有一个 VeSync 账户(这需要您安装他们的 iOS 或 Android 应用程序)才能使用此包。

[depenencies]
vesync = "0.1"
use vesync_rs::{VeSyncAccount, VeSyncdevice, DeviceStatus};

const VESYNC_ACCOUNT: &str = "[email protected]";
const VESYNC_KEY: &str = "my-secret-password";

fn main() -> Result<(), ()> {
    let account = VeSyncAccount::login(VESYNC_ACCOUNT, VESYNC_KEY)?;
    let devices = account.devices()?;

    let outside_light = devices
        .iter()
        .find(|device| device.cid == "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
        .unwrap();

    // Toggle the state of the device
    outside_light.device_toggle()?;

    match outside_light.deviceStatus {
        DeviceStatus::On => println!("Outside light is on"),
        DeviceStatus::Off => println!("Outside light is off"),
        DeviceStatus::Unknown => println!("🤷‍♂️"), // toggle will update state, so this *should* be unreachable
    };

    Ok(())
}

待办事项

  • 切换到 nanoserde
  • 改进初始 vesync-rs API
  • 加强 VeSync API 类型(尽可能使用枚举而不是字符串)
  • 调查亮度(调暗)API

变更日志

  • 切换到 attohttpc。这减少了构建的包数量从 106 个到 62 个,构建时间从大约 1 分 30 秒到 55 秒。
  • 更新 API 以(希望)更符合习惯。
  • 添加了使用 accountIDtk 直接创建 VeSyncAccount 的能力(即,无需登录)。这允许您将 这些 值添加到源代码中,而不是使用原始凭证
let account = VeSyncAccount { accountID: "1234".to_string(), tk: "ABCXYZ==".to_string() };
  • 添加了从账户和 cid 创建 VeSyncDevice 的能力
let mut inside_light = VeSyncDevice::from_id(&account, "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
inside_light.update();

依赖关系

~2.3–3.5MB
~94K SLoC