Publish name, too. Prepared polling intervall
This commit is contained in:
79
src/main.rs
79
src/main.rs
@@ -13,6 +13,9 @@ struct Args {
|
||||
|
||||
#[arg(default_value_t = 1883)]
|
||||
port: u16,
|
||||
#[arg(default_value_t = 30000)]
|
||||
interval: u32,
|
||||
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
@@ -26,36 +29,31 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
);
|
||||
mqttoptions.set_keep_alive(Duration::from_secs(30));
|
||||
|
||||
let (client, mut eventloop) = AsyncClient::new(mqttoptions, 100);
|
||||
let (client, mut eventloop) = AsyncClient::new(mqttoptions, args.interval as usize);
|
||||
|
||||
client
|
||||
.publish("test/topic", QoS::AtLeastOnce, false, b"Hello from Rust MQTT!")
|
||||
.await?;
|
||||
|
||||
println!("Published message to test/topic");
|
||||
|
||||
let departure_data = tokio::task::spawn_blocking(|| straba::fetch_data(Some(true)))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
if departure_data.failure {
|
||||
client
|
||||
.publish("departure/failure", QoS::AtLeastOnce, false, b"Failed to fetch departure data")
|
||||
.await?;
|
||||
} else {
|
||||
let outbound_msg = format!(
|
||||
"Outbound: {} in {} seconds",
|
||||
departure_data.outbound_station, departure_data.outbound_diff
|
||||
);
|
||||
let inbound_msg = format!(
|
||||
"Inbound: {} in {} seconds",
|
||||
departure_data.inbound_station, departure_data.inbound_diff
|
||||
);
|
||||
println!("{}", outbound_msg);
|
||||
println!("{}", inbound_msg);
|
||||
}
|
||||
|
||||
loop {
|
||||
|
||||
let departure_data = tokio::task::spawn_blocking(|| straba::fetch_data(Some(true)))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
if departure_data.failure {
|
||||
client
|
||||
.publish("departure/failure", QoS::AtLeastOnce, false, b"Failed to fetch departure data")
|
||||
.await?;
|
||||
} else {
|
||||
let outbound_msg = format!(
|
||||
"Outbound: {} in {} seconds",
|
||||
departure_data.outbound_station, departure_data.outbound_diff
|
||||
);
|
||||
let inbound_msg = format!(
|
||||
"Inbound: {} in {} seconds",
|
||||
departure_data.inbound_station, departure_data.inbound_diff
|
||||
);
|
||||
println!("{}", outbound_msg);
|
||||
println!("{}", inbound_msg);
|
||||
}
|
||||
match eventloop.poll().await {
|
||||
Ok(Event::Incoming(Packet::Publish(_))) => {}
|
||||
Ok(Event::Incoming(Packet::ConnAck(_))) => {
|
||||
@@ -63,19 +61,22 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
}
|
||||
Ok(_) => {
|
||||
|
||||
client
|
||||
.publish("departure/outbound/station", QoS::AtLeastOnce, false, departure_data.outbound_station.as_bytes())
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/station", QoS::AtLeastOnce, false, departure_data.station_name.as_bytes())
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/outbound/station", QoS::AtLeastOnce, false, departure_data.outbound_station.as_bytes())
|
||||
.await?;
|
||||
|
||||
client
|
||||
.publish("departure/outbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.outbound_diff))
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/inbound/station", QoS::AtLeastOnce, false, departure_data.inbound_station.as_bytes())
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/inbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.inbound_diff))
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/outbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.outbound_diff))
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/inbound/station", QoS::AtLeastOnce, false, departure_data.inbound_station.as_bytes())
|
||||
.await?;
|
||||
client
|
||||
.publish("departure/inbound/diff", QoS::AtLeastOnce, false, format!("{}", departure_data.inbound_diff))
|
||||
.await?;
|
||||
|
||||
}
|
||||
Err(e) => {
|
||||
|
||||
Reference in New Issue
Block a user