aiot 0.10.0

Rust Link SDK (Aliyun IoT) based on Alink Protocol.
Documentation
use aiot::{MqttClient, ThreeTuple};
use anyhow::Result;
use rumqttc::QoS;
use tokio::task;

#[tokio::main]
async fn main() -> Result<()> {
    env_logger::init();
    let host = "iot-as-mqtt.cn-shanghai.aliyuncs.com";
    let three = ThreeTuple::from_env();
    let mut conn = MqttClient::new_public_tls(host, &three)?.connect();
    conn.mqtt
        .subscribe(
            "/sys/a13FN5TplKq/mqtt_basic_demo/thing/event/+/post_reply",
            QoS::AtMostOnce,
        )
        .await?;

    let mqtt = conn.mqtt.clone();
    task::spawn(async move {
        mqtt.publish(
            "/sys/a13FN5TplKq/mqtt_basic_demo/thing/event/property/post",
            QoS::AtMostOnce,
            false,
            b"{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}".to_vec(),
        )
        .await
        .unwrap();
    });

    loop {
        let notification = conn.poll().await?;
        println!("Received = {:?}", notification);
    }
}