6 个版本 (3 个破坏性更新)

0.4.4 2024 年 6 月 15 日
0.4.3 2024 年 3 月 12 日
0.4.0 2023 年 12 月 24 日
0.3.0 2023 年 11 月 29 日
0.1.0 2023 年 11 月 25 日

#1698 in 网络编程

Download history 1/week @ 2024-05-03 3/week @ 2024-05-10 1/week @ 2024-06-07 128/week @ 2024-06-14 9/week @ 2024-06-21 8/week @ 2024-06-28 28/week @ 2024-07-05

每月 349 次下载

MIT/Apache

25KB
506

Bambulab API

Docs GitHub workflow status Crates.io Version Crates.io Downloads License

🚧 进行中 🚧

此crate仍在开发中,尚未准备好用于生产。可能会随时发生破坏性更改。

bambulab 是一个异步Rust crate,它提供了一个基于通道的客户端,用于通过其MQTT代理与Bambu Lab设备交互。

功能

  • 订阅打印机消息,如打印进度、温度、错误等。
  • 向打印机发布命令
  • 支持 P1P、P1S 和 X1C 打印机

用法

首先,将 bambulab 添加到您的依赖项中

cargo add bambulab

然后,使用 Client 结构体创建一个新的客户端并连接到打印机

use bambulab::{client::Client, command::Command};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let host = "printer-ip-or-hostname";
    let access_code = "printer-access-code";
    let serial = "printer-serial-number";

    let (tx, mut rx) = tokio::sync::broadcast::channel::<Message>(25);

    let mut client = Client::new(host, access_code, serial, tx);
    let mut client_clone = client.clone();

    tokio::try_join!(
        tokio::spawn(async move {
            client.run().await.unwrap();
        }),
        tokio::spawn(async move {
            loop {
                let message = rx.recv().await.unwrap();
                println!("received: {message:?}");

                if message == Message::Connected {
                    client_clone.publish(Command::PushAll).await.unwrap();
                }
            }
        }),
    )?;

    Ok(())
}

请注意,您需要调用 subscribe() 以允许API监听消息。

更多示例请参阅 示例目录

常见问题解答

我如何找到访问代码?

您可以在打印机的“WLAN”->“访问代码”设置下找到访问代码。

我如何找到序列号?

序列号可以在打印机的“SN”设置下找到。

贡献

有关更多信息,请参阅贡献指南

许可证

此代码受以下之一许可:

任选其一。

免责声明

本项目与巴姆布拉布官方无关。这是一个第三方实现。

依赖关系

~19MB
~419K SLoC