diff --git a/client/bin/src/main.rs b/client/bin/src/main.rs index b58f106..bd14f00 100644 --- a/client/bin/src/main.rs +++ b/client/bin/src/main.rs @@ -404,6 +404,7 @@ fn check_connection(ipaddress: String) -> bool { } /// Publishes weather and transit data to MQTT broker fn publish_to_mqtt(client: &Client, data: &Option>, straba_res: &NextDeparture) { + let payload = if let Some(Ok(forecast)) = data { if let Some(f) = forecast.list.first() { let temp = f.main.temp; @@ -417,20 +418,28 @@ fn publish_to_mqtt(client: &Client, data: &Option>, str } else { "no_data".to_string() }; - let msg = MqttMessage::new("ledboard/forecast", payload, 1); + let msg = MqttMessage::new("ledboard/forecast", payload.clone(), 1); if let Err(e) = client.publish(msg) { eprintln!("Error publishing MQTT message: {}", e); } + else + { + println!("MQTT | Publish {0} = {1}", "ledboard/forecast", payload.clone()); + } let payloadPT = { format!("out:{}min,in:{}min", straba_res.outbound_diff / 60, straba_res.inbound_diff / 60) }; - let ptmsg = MqttMessage::new("ledboard/public_transportation", payloadPT, 1); + let ptmsg = MqttMessage::new("ledboard/public_transportation", payloadPT.clone(), 1); if let Err(e) = client.publish(ptmsg) { eprintln!("Error publishing MQTT message: {}", e); } + else + { + println!("MQTT | Publish {0} = {1}", "ledboard/public_transportation", payloadPT.clone()); + } } struct Message { @@ -505,11 +514,11 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { let lwt = paho_mqtt::Message::new(&format!("{}/lwt", GlobalConfiguration.lock().unwrap().mqttPrefix), "lost connection", 1); // Make the connection to the broker - println!("MQTT | Connecting to the MQTT server..."); + println!("MQTT | Connecting to the MQTT server..."); // Initialize MQTT client from MQTT_BROKER env var (else disabled) let mqtt_client: Option = { - println!("MQTT | Connecting to {:} MQTT server...", GlobalConfiguration.lock().unwrap().mqttIPAddress); + println!("MQTT | Connecting to {:} MQTT server...", GlobalConfiguration.lock().unwrap().mqttIPAddress); // Read broker URL from environment let broker = GlobalConfiguration.lock().unwrap().mqttIPAddress.clone(); if broker.is_empty() { @@ -542,7 +551,6 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { }; // Define the set of options for the connection - // move local instance to global scope gmc.set_mqtt_client(mqtt_client); } @@ -565,18 +573,29 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { // Render start send_package(GlobalConfiguration.lock().unwrap().panelIPAddress.clone(), &last_data, &straba_res, Some("MQTT: room/ledboard".to_string())); } - - - if GlobalConfiguration.lock().is_ok() && GlobalConfiguration.lock().unwrap().mqttPrefix.len() > 0 + else { - if let Some(ref client) = &(MQTTCLIENT.lock().unwrap().get_mqtt_client()) { + println!("PANEL | No Panel updated"); + } + + if GlobalConfiguration.lock().is_ok() + { + let l_mqtt_prefix = &GlobalConfiguration.lock().unwrap().mqttPrefix; + println!("MQTT | Publish to {0}", l_mqtt_prefix); + + if let Some(ref client) = MQTTCLIENT.lock().unwrap().get_mqtt_client() { + println!("MQTT | Client is {0:?}", client.client_id()); publish_to_mqtt(client, &last_data, &straba_res); } else { - eprintln!("MQTT | client for publishing not found"); + eprintln!("MQTT | client for publishing not found"); } } + else + { + println!("MQTT | No Topic updated"); + } loop {