#http-api #mqtt #http #api

awtrix3

Awtrix3 types and API (mqtt/http), from https://blueforcer.github.io/awtrix3/#/api

2 releases

0.0.2 Oct 16, 2024
0.0.1 Oct 16, 2024

#1306 in Web programming

Download history 318/week @ 2024-10-14 21/week @ 2024-10-21

339 downloads per month

MIT license

49KB
948 lines

Types and async api for the Awtrix3 device.

From https://blueforcer.github.io/awtrix3/#/api

This crate is a WIP poorly documented and untested !!! Use at your own risk, kwnowing that it will change / break in the future.

The main types are:

Example

use awtrix3::*;

#[tokio::main]
async fn main() {
    // Http usage
    let client = Awtrix3HttpClient::new("xxx.xxx.xxx.xxx", 80)
        .with_credentials("user", "password");
    let stats = Topic::Stats.http_get(&client).await.unwrap();
    println!("{:?}", stats);

    // Send message
    Message::Settings(Settings {
        scroll_speed: Some(10),
        ..Default::default()
    })
    .http_send(&client)
    .await
    .unwrap();
    println!("Message sent via http");

    // Mqtt usage
    let (client, mut eventloop) = Awtrix3MqttClient::new(
        Awtrix3MqttClientOptions {
            client_id: "awtrix3".to_string(),
            host: "localhost".to_string(),
            port: 1883,
            username: Some("user".to_string()),
            password: Some("password".to_string()),
        },
        10,
        "clock",
    )
    .unwrap();

    // Listen for messages and decode the messages and topics received.
    tokio::task::spawn(async move {
        while let Ok(msg) = eventloop.poll().await {
            println!("Message {:?}", msg);
            if let Ok(Some((topic, message))) = eventloop.decode(msg) {
                println!("{:?} {:?}", topic, message);
            }
        }
    });

    // Subscribe to a topic
    client.subscribe("/stats").await.unwrap();
    println!("Subscribed to /stats");
    // Send messages
    Message::MoodLightOn(Mood {
        brightness: Some(120),
        color: Some(Color::Rgb(255, 0, 0)),
        kelvin: None,
    })
    .mqtt_send(&client)
    .await
    .unwrap();
    println!("Message sent via mqtt");

    // Wait for a while
    println!("Waiting for 60 seconds");
    tokio::time::sleep(std::time::Duration::from_secs(60)).await;
}

}

Dependencies

~7–18MB
~250K SLoC