48 lines
1.4 KiB
Rust
48 lines
1.4 KiB
Rust
use std::{
|
|
env,
|
|
time::Duration
|
|
};
|
|
use rumqttc::{Client, Connection, MqttOptions, QoS};
|
|
|
|
pub fn init_cli() -> (Client, Connection) {
|
|
let mut mqttoptions = MqttOptions::new("test-1", env::var("BROKER_ADDRESS").unwrap().to_string(), 1883);
|
|
mqttoptions.set_keep_alive(Duration::from_secs(1));
|
|
let (client, connection) = Client::new(mqttoptions, 10);
|
|
|
|
(client, connection)
|
|
}
|
|
|
|
pub fn publish_message(mut client: Client, topic: &str, payload: String) -> Client {
|
|
client.publish(get_topic_name(topic), QoS::AtLeastOnce, true, payload).unwrap();
|
|
client
|
|
}
|
|
|
|
pub fn disconnect(mut connection: Connection, count: usize) {
|
|
// Disconnect from the broker.
|
|
for (i, notification) in connection.iter().enumerate() {
|
|
match notification {
|
|
Ok(notif) => {
|
|
println!("{i}. Notification = {notif:?}");
|
|
if i > count {
|
|
return;
|
|
}
|
|
}
|
|
Err(error) => {
|
|
println!("{i}. Notification ERROR = {error:?}");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn get_topic_name(types: &str) -> String {
|
|
|
|
let mut topic = env::var("SERVICE").unwrap().to_string();
|
|
topic.push('/');
|
|
let capteur = env::var("CAPTEUR").unwrap().to_string();
|
|
topic.push_str(&capteur);
|
|
topic.push('/');
|
|
topic.push_str(&types);
|
|
|
|
return topic;
|
|
} |