feat: handle factory_reset and reconfigure_settings commands

This commit is contained in:
2026-05-15 16:05:12 +02:00
parent b7cc8cabdd
commit 541d1be6ac
5 changed files with 104 additions and 9 deletions
+29 -1
View File
@@ -177,7 +177,8 @@ void app_main(void)
// main event loop
const EventBits_t cmd_bits =
MQTT_CALIBRATE_START | MQTT_CALIBRATE_STOP |
MQTT_SELECTED_BIT | MQTT_DESELECTED_BIT;
MQTT_SELECTED_BIT | MQTT_DESELECTED_BIT |
MQTT_FACTORY_RESET_BIT | MQTT_RECONFIGURE_SETTINGS_BIT;
bool calibrating = false;
bool selected = false;
@@ -206,5 +207,32 @@ void app_main(void)
selected = false;
if (!calibrating) led_indicator_set(LED_SCANNING);
}
if (bits & MQTT_FACTORY_RESET_BIT) {
// factory reset requested - erase NVS and reboot
ESP_LOGI(TAG, "Factory reset requested");
config_store_erase();
esp_restart();
}
if (bits & MQTT_RECONFIGURE_SETTINGS_BIT) {
ESP_LOGI(TAG, "Reconfigure settings requested");
const mqtt_reconfigure_data_t *cfg = mqtt_publisher_get_reconfigure_data();
if (cfg->ssid[0] != '\0') {
wifi_config_t wifi_cfg = {0};
strncpy((char *)wifi_cfg.sta.ssid, cfg->ssid, sizeof(wifi_cfg.sta.ssid) - 1);
strncpy((char *)wifi_cfg.sta.password, cfg->password, sizeof(wifi_cfg.sta.password) - 1);
esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg);
ESP_LOGI(TAG, "Updated WiFi SSID: %s", cfg->ssid);
}
if (cfg->mqtt_host[0] != '\0') {
uint16_t port = cfg->mqtt_port ? cfg->mqtt_port : DEFAULT_MQTT_PORT;
config_store_set_mqtt_override(cfg->mqtt_host, port);
ESP_LOGI(TAG, "Updated MQTT broker: %s:%u", cfg->mqtt_host, port);
}
ESP_LOGI(TAG, "Rebooting to apply new settings");
esp_restart();
}
}
}