Refactor fun_publishinfoviamqtt

This commit is contained in:
Ollo 2025-04-18 19:51:45 +02:00
parent c07d6db238
commit c8d4ab3ba3

View File

@ -297,6 +297,8 @@ fn render_strab(display: &mut UdpDisplay, straba_res: &NextDeparture) {
// we need to wrap the data in a lock, like a Mutex or RwLock.
type UserTopics = RwLock<Vec<String>>;
const DEFAULT_REFRESH_INTERVAL: u32 = 50;
/////////////////////////////////////////////////////////////////////////////
// Define a struct to hold the INI configuration
@ -305,6 +307,7 @@ struct Config {
mqttPrefix: String,
mqttIPAddress: String,
panelIPAddress: String,
refreshInterval: u32
}
@ -313,7 +316,9 @@ fn read_ini_file(filename: String) -> Result<Config, std::io::Error> {
let mut config = Config { mqttPrefix: "room/ledboard".to_string(),
mqttIPAddress: String::new(),
panelIPAddress: String::new() };
panelIPAddress: String::new(),
refreshInterval: DEFAULT_REFRESH_INTERVAL
};
let i = Ini::load_from_file(filename).unwrap();
for (sec, prop) in i.iter() {
@ -452,7 +457,9 @@ lazy_static! {
static ref GlobalConfiguration: Config = Config {
mqttIPAddress : "".to_string(),
panelIPAddress : "".to_string(),
mqttPrefix : "test/ledboard".to_string() };
mqttPrefix : "test/ledboard".to_string(),
refreshInterval: DEFAULT_REFRESH_INTERVAL
};
}
@ -500,7 +507,9 @@ fn main_function(parameter1: String, parameter2: Option<String>) -> ExitCode {
/* Panel and MQTT Configured*/
let mut config = Config { mqttPrefix: "room/ledboard".to_string(),
mqttIPAddress: configOrMqttAddress.clone(),
panelIPAddress: parameter1.clone() };
panelIPAddress: parameter1.clone(),
refreshInterval: DEFAULT_REFRESH_INTERVAL
};
//FIXME how is th global config updated ?
}
}
@ -606,14 +615,7 @@ fn main_function(parameter1: String, parameter2: Option<String>) -> ExitCode {
}
else if GlobalConfiguration.mqttPrefix.len() > 0
{
let topicInStation: String = format!("{}{}", GlobalConfiguration.mqttPrefix, "/inbound/station");
let stationName: String = format!("{}", straba_res.inbound_station);
if (mqtt_client.is_some()) {
publish_message(mqtt_client.unwrap(), topicInStation.as_str(), stationName.as_str());
println!("MQTT published {:?} = {:?}s", topicInStation, straba_res.outbound_station);
} else {
println!("MQTT not ready... {:?} = {:?}s", topicInStation, straba_res.outbound_station);
}
fun_publishinfoviamqtt(mqtt_client, &straba_res);
}
@ -635,7 +637,7 @@ fn main_function(parameter1: String, parameter2: Option<String>) -> ExitCode {
}
}
if (straba_res.request_time + 50) < seconds as i64 {
if (straba_res.request_time + (GlobalConfiguration.refreshInterval as i64)) < seconds as i64 {
if GlobalConfiguration.mqttIPAddress.len() > 0
{
device_online = check_connection(GlobalConfiguration.mqttIPAddress.clone());
@ -666,6 +668,17 @@ fn main_function(parameter1: String, parameter2: Option<String>) -> ExitCode {
}
}
fn fun_publishinfoviamqtt(mqtt_client: Option<AsyncClient>, straba_res: &NextDeparture) {
let topicInStation: String = format!("{}{}", GlobalConfiguration.mqttPrefix, "/inbound/station");
let stationName: String = format!("{}", straba_res.inbound_station);
if (mqtt_client.is_some()) {
publish_message(mqtt_client.unwrap(), topicInStation.as_str(), stationName.as_str());
println!("MQTT published {:?} = {:?}s", topicInStation, straba_res.outbound_station);
} else {
println!("MQTT not ready... {:?} = {:?}s", topicInStation, straba_res.outbound_station);
}
}
fn main() -> ExitCode {
let args: Vec<String> = env::args().collect();
match args.len() {