implement async mqtt config update trigger and fix mqtt.rs corruption

This commit is contained in:
2026-05-10 17:55:53 +02:00
parent 4debbfb39e
commit bd257b89f0

View File

@@ -279,23 +279,26 @@ async fn mqtt_incoming_task(
match serde_json::from_str::<crate::config::PlantControllerConfig>(payload_str) { match serde_json::from_str::<crate::config::PlantControllerConfig>(payload_str) {
Ok(config) => { Ok(config) => {
info!("Deserialized config, applying..."); info!("Deserialized config, applying...");
let board_mutex = crate::BOARD_ACCESS.get().await; let board_mutex = crate::BOARD_ACCESS.get().await;
let mut board = board_mutex.lock().await; let mut board = board_mutex.lock().await;
if let Err(e) = board.board_hal.get_esp().save_config(payload_str.as_bytes().to_vec()).await { if let Err(e) = board.board_hal.get_esp().save_config(payload_str.as_bytes().to_vec()).await {
info!("Error saving config to flash: {}", e); info!("Error saving config to flash: {}", e);
} else { let _ = publish("/config/update", "false").await;
board.board_hal.set_config(config); } else {
info!("Config applied, rebooting"); board.board_hal.set_config(config);
board.board_hal.get_esp().deep_sleep_ms(0); info!("Config applied, rebooting");
} let _ = publish("/config/update", "false").await;
board.board_hal.get_esp().deep_sleep_ms(0);
}
} }
Err(e) => { Err(e) => {
info!("Error deserializing config: {}", e); info!("Error deserializing config: {}", e);
let _ = publish("/config/update", "false").await;
} }
} }
} else { } else {
info!("No config update payload available"); info!("No config update payload available");
let _ = publish("/config/update", "false").await;
} }
} }
} else { } else {