first commit

This commit is contained in:
Romulus21
2021-06-04 08:09:25 +02:00
commit ae322a0a38
5 changed files with 395 additions and 0 deletions

64
src/main.rs Normal file
View File

@@ -0,0 +1,64 @@
mod topic;
use std::{
env,
process,
time::Duration
};
use dotenv::dotenv;
extern crate paho_mqtt as mqtt;
extern crate dotenv;
// Define the qos.
const QOS:i32 = 1;
fn main() {
dotenv().ok();
let host = env::args().nth(1).unwrap_or_else(||
env::var("BROKER_ADDRESS").unwrap().to_string()
);
// Define the set of options for the create.
// Use an ID for a persistent session.
let create_opts = mqtt::CreateOptionsBuilder::new()
.server_uri(host)
.client_id(env::var("BROKER_CLIENT").unwrap().to_string())
.finalize();
// Create a client.
let cli = mqtt::Client::new(create_opts).unwrap_or_else(|err| {
println!("Error creating the client: {:?}", err);
process::exit(1);
});
// Define the set of options for the connection.
let conn_opts = mqtt::ConnectOptionsBuilder::new()
.keep_alive_interval(Duration::from_secs(20))
.clean_session(true)
.finalize();
// Connect and wait for it to complete or fail.
if let Err(e) = cli.connect(conn_opts) {
println!("Unable to connect:\n\t{:?}", e);
process::exit(1);
}
// Create a message and publish it.
// Publish message to 'test' and 'hello' topics.
let topic = topic::get_topic_name("temperature");
let content = "Hello world! ".to_string();
let msg = mqtt::Message::new(topic.clone(), content.clone(), QOS);
let tok = cli.publish(msg);
if let Err(e) = tok {
println!("Error sending message: {:?}", e);
}
// Disconnect from the broker.
let tok = cli.disconnect(None);
println!("Disconnect from the broker");
tok.unwrap();
}