Module cmp_mqtt_client

Source
Expand description

Компонент MQTT-клиента для публикации и получения сообщений с брокера.

§Примеры

§Только публикация данных

use rsiot::{components::cmp_mqtt_client::*, executor::Component, serde_utils::SerdeAlgKind};

use crate::message::Custom;

pub fn cmp() -> Component<Config<Custom>, Custom> {
    let config = Config {
        serde_alg: SerdeAlgKind::Json,
        client_id: "pubish".into(),
        host: "localhost".into(),
        port: 1883,
        client_capacity: 100,
        publish: ConfigPublish::Publish {
            fn_publish: |msg, mqtt_msg_gen| {
                let mqtt_msg = match msg {
                    Custom::Counter(v) => mqtt_msg_gen.ser("example/counter", true, v)?,
                };
                Ok(Some(mqtt_msg))
            },
        },
        subscribe: ConfigSubscribe::NoSubscribe,
    };

    Cmp::new(config)
}

§Только получение данных

use rsiot::{
    components::cmp_mqtt_client::*, executor::Component, message::Message,
    serde_utils::SerdeAlgKind,
};

use crate::message::Custom;

pub fn cmp() -> Component<Config<Custom>, Custom> {
    let config = Config {
        client_id: "subscribe".into(),
        host: "localhost".into(),
        port: 1883,
        serde_alg: SerdeAlgKind::Json,
        client_capacity: 100,
        publish: ConfigPublish::NoPublish,
        subscribe: ConfigSubscribe::Subscribe {
            token: "example/#".into(),
            fn_subscribe: |mqtt_msg, mqtt_msg_gen| {
                let msg = match mqtt_msg.topic.as_str() {
                    "example/counter" => {
                        let v: i32 = mqtt_msg_gen.de(&mqtt_msg.payload)?;
                        Message::new_custom(Custom::Counter(v))
                    }
                    _ => return Ok(None),
                };
                Ok(Some(vec![msg]))
            },
        },
    };

    Cmp::new(config)
}

Re-exports§

pub use config::Config;
pub use config::ConfigPublish;
pub use config::ConfigSubscribe;

Enums§

Error

Type Aliases§

Cmp
Компонент cmp_mqtt_client