diff --git a/rust/src/mqtt.rs b/rust/src/mqtt.rs index 41d410e..9bc463d 100644 --- a/rust/src/mqtt.rs +++ b/rust/src/mqtt.rs @@ -279,23 +279,26 @@ async fn mqtt_incoming_task( match serde_json::from_str::(payload_str) { Ok(config) => { info!("Deserialized config, applying..."); - let board_mutex = crate::BOARD_ACCESS.get().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 { - info!("Error saving config to flash: {}", e); - } else { - board.board_hal.set_config(config); - info!("Config applied, rebooting"); - board.board_hal.get_esp().deep_sleep_ms(0); - } - + let board_mutex = crate::BOARD_ACCESS.get().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 { + info!("Error saving config to flash: {}", e); + let _ = publish("/config/update", "false").await; + } else { + board.board_hal.set_config(config); + info!("Config applied, rebooting"); + let _ = publish("/config/update", "false").await; + board.board_hal.get_esp().deep_sleep_ms(0); + } } Err(e) => { info!("Error deserializing config: {}", e); + let _ = publish("/config/update", "false").await; } } } else { info!("No config update payload available"); + let _ = publish("/config/update", "false").await; } } } else {