#同步 #API #效果 #灯光 #离线 #通信 #lifx-api

lifx-rs

一个同步 + 异步库,用于与官方 LIFX-API 和非官方离线 API 进行通信。

8 个版本

0.1.30 2023年5月10日
0.1.29 2022年10月24日
0.1.28 2022年6月25日
0.1.22 2022年2月3日

#444 in 网页编程

Download history

68 每月下载量
用于 lifx-api-server

MIT/Apache 许可协议

230KB
3K SLoC

lifx-rs

描述

一个同步 + 异步库,用于与官方 LIFX-API 和非官方离线 API 进行通信。

LIFX-API 支持的方法

  • 列出灯光
  • 设置状态
  • 设置多个状态
  • 状态差异
  • 切换电源
  • 呼吸效果
  • 移动效果
  • 变形效果
  • 火焰效果
  • 脉冲效果
  • 关闭效果
  • 清洁(HEV)
  • 列出场景
  • 验证颜色

非官方离线 API 支持的方法

  • 列出灯光
  • 设置状态
  • 设置多个状态

要使用离线功能,请使用非官方 API 服务器

lifx-api-server

如何使用库

将以下行添加到您的 cargo.toml 文件中

lifx-rs = "0.1.30"

示例

extern crate lifx_rs as lifx;

fn main() {

    let key = "xxx".to_string();
    
    let mut api_endpoints: Vec<String> = Vec::new();
    
    // Official API
    api_endpoints.push(format!("https://api.lifx.com"));

    // lifx-server-api (Un-Official)
    api_endpoints.push(format!("https://127.0.0.1:8089"));

    let config = lifx::LifxConfig{
        access_token: key.clone(),
        api_endpoints: api_endpoints
    };

    // Build an "OffState" to set
    let mut off_state = lifx::State::new();
    off_state.power = Some(format!("off"));

    // Turn off all lights
    lifx::Light::set_state_by_selector(config.clone(), format!("all"), off_state);


    let all_lights = lifx::Light::list_all(config.clone());
    match all_lights {
        Ok(lights) => {
            println!("{:?}",lights.clone());

            let mut state = lifx::State::new();
            state.power = Some(format!("on"));
            state.brightness = Some(1.0);
        
            for light in lights {
                let results = light.set_state(config.clone(), state.clone());
                println!("{:?}",results);
            }
        },
        Err(e) => println!("{}",e)
    }

}

异步示例

extern crate lifx_rs as lifx;

#[tokio::main]
async fn main() {

    let key = "xxx".to_string();
    
    let mut api_endpoints: Vec<String> = Vec::new();
    
    // Official API
    api_endpoints.push(format!("https://api.lifx.com"));

    // lifx-server-api (Un-Official)
    api_endpoints.push(format!("https://127.0.0.1:8089"));

    let config = lifx::LifxConfig{
        access_token: key.clone(),
        api_endpoints: api_endpoints
    };

    // Build "OffState" to set
    let mut off_state = lifx::State::new();
    off_state.power = Some(format!("off"));
    
    // Turn off all lights
    lifx::Light::async_set_state_by_selector(config.clone(), format!("all"), off_state).await;
}

许可证

Apache 2.0 或 MIT 许可协议下发布。

通过以下方式支持并关注我的工作:

购买我的 NFT

查看我的 GitHub

关注我的 Facebook 页面

订阅我的 Patreon

或者捐赠加密货币

  • ADA: addr1qyp299a45tgvveh83tcxlf7ds3yaeh969yt3v882lvxfkkv4e0f46qvr4wzj8ty5c05jyffzq8a9pfwz9dl6m0raac7s4rac48
  • ALGO: VQ5EK4GA3IUTGSPNGV64UANBUVFAIVBXVL5UUCNZSDH544XIMF7BAHEDM4
  • ATOM: cosmos1wm7lummcealk0fxn3x9tm8hg7xsyuz06ul5fw9
  • BTC: bc1qh5p3rff4vxnv23vg0hw8pf3gmz3qgc029cekxz
  • ETH: 0x7A66beaebF7D0d17598d37525e63f524CfD23452
  • ERC20: 0x7A66beaebF7D0d17598d37525e63f524CfD23452
  • XLM: GCJAUMCO2L7PTYMXELQ6GHBTF25MCQKEBNSND2C4QMUPTSVCPEN3LCOG
  • XTZ: tz1SgJppPn56whprsDDGcqR4fxqCr2PXvg1R

依赖项

~9–23MB
~360K SLoC