Added third parameter: MQTT server

This commit is contained in:
Ollo 2025-04-30 21:46:53 +02:00
parent fbdf1ea24b
commit a0e18c1a7d

View File

@ -387,11 +387,40 @@ fn main() -> ExitCode {
2 => { 2 => {
let ip = &args[1]; let ip = &args[1];
// Read broker URL from environment
let broker = match std::env::var("MQTT_BROKER") {
Ok(val) if !val.is_empty() => val,
_ => {
eprintln!("Environment variable MQTT_BROKER not set or empty, MQTT disabled");
String::new()
}
};
let mut device_online = check_connection(ip.to_string()); return main_function(ip, Some(broker))
}
// two argument passed
3 => {
let ip = &args[1];
let mqtt = &args[2];
return main_function( ip,
Some(mqtt.to_string())
);
}
// all the other cases
_ => {
// show a help message
help();
return ExitCode::SUCCESS;
}
}
}
fn main_function(ip: &String, mqttBroker: Option<String>) -> ExitCode {
let mut device_online: bool = check_connection(ip.to_string());
if !device_online { if !device_online {
println!("{} not online", ip); println!("{} not online", ip);
// return ExitCode::FAILURE; return ExitCode::FAILURE;
} }
@ -411,19 +440,11 @@ fn main() -> ExitCode {
// Initialize MQTT client from MQTT_BROKER env var (else disabled) // Initialize MQTT client from MQTT_BROKER env var (else disabled)
let mqtt_client: Option<Client> = { let mqtt_client: Option<Client> = {
// Read broker URL from environment if mqttBroker.is_none() {
let broker = match std::env::var("MQTT_BROKER") {
Ok(val) if !val.is_empty() => val,
_ => {
eprintln!("Environment variable MQTT_BROKER not set or empty, MQTT disabled");
String::new()
}
};
if broker.is_empty() {
None None
} else { } else if mqttBroker.is_some() {
let create_opts = CreateOptionsBuilder::new() let create_opts = CreateOptionsBuilder::new()
.server_uri(&broker) .server_uri(mqttBroker.clone().unwrap())
.client_id("ledboard_client") .client_id("ledboard_client")
.finalize(); .finalize();
match Client::new(create_opts) { match Client::new(create_opts) {
@ -435,16 +456,18 @@ fn main() -> ExitCode {
match cli.connect(conn_opts) { match cli.connect(conn_opts) {
Ok(_) => Some(cli), Ok(_) => Some(cli),
Err(e) => { Err(e) => {
eprintln!("Failed to connect to MQTT broker '{}': {}", broker, e); eprintln!("Failed to connect to MQTT broker '{}': {}", mqttBroker.clone().unwrap(), e);
None None
} }
} }
} }
Err(e) => { Err(e) => {
eprintln!("Failed to create MQTT client for '{}': {}", broker, e); eprintln!("Failed to create MQTT client for '{}': {}", mqttBroker.clone().unwrap(), e);
None None
} }
} }
} else {
None
} }
}; };
@ -488,12 +511,4 @@ fn main() -> ExitCode {
} }
} }
}
// all the other cases
_ => {
// show a help message
help();
return ExitCode::SUCCESS;
}
}
} }