Makes wifi try to connect to latest

This commit is contained in:
Rune Harlyk
2026-01-31 21:05:37 +01:00
parent e5e9841dd3
commit ff1444b2bc
4 changed files with 25 additions and 3 deletions
+1
View File
@@ -42,6 +42,7 @@ inline WiFiSettings WiFiSettings_defaults() {
strncpy(settings.hostname, FACTORY_WIFI_HOSTNAME, sizeof(settings.hostname) - 1);
settings.priority_rssi = true;
settings.wifi_networks_count = 0;
settings.selected_network = 0;
if (strlen(FACTORY_WIFI_SSID) > 0) {
settings.wifi_networks[0] = WiFiNetwork_defaults();
settings.wifi_networks_count = 1;
+1 -1
View File
@@ -25,6 +25,7 @@ class WiFiService : public StatefulService<WiFiSettings> {
void loop();
void setupMDNS(const char *hostname);
void selectNetwork(uint32_t index);
const char *getHostname() { return state().hostname; }
@@ -43,7 +44,6 @@ class WiFiService : public StatefulService<WiFiSettings> {
void reconfigureWiFiConnection();
void manageSTA();
void connectToWiFi();
void configureNetwork(WiFiNetwork &network);
unsigned long _lastConnectionAttempt;
+22 -2
View File
@@ -27,6 +27,14 @@ void WiFiService::begin() {
_persistence.readFromFS();
_lastConnectionAttempt = 0;
if (state().wifi_networks_count >= 1) {
WiFi.mode(WIFI_MODE_STA);
vTaskDelay(100 / portTICK_PERIOD_MS);
uint32_t idx = state().selected_network;
if (idx >= state().wifi_networks_count) idx = 0;
configureNetwork(state().wifi_networks[idx]);
}
}
void WiFiService::reconfigureWiFiConnection() {
@@ -34,6 +42,16 @@ void WiFiService::reconfigureWiFiConnection() {
if (WiFi.disconnect(true)) _stopping = true;
}
void WiFiService::selectNetwork(uint32_t index) {
if (index >= state().wifi_networks_count) return;
updateWithoutPropagation([&](WiFiSettings &settings) {
settings.selected_network = index;
return StateUpdateResult::CHANGED;
});
_persistence.writeToFS();
reconfigureWiFiConnection();
}
void WiFiService::loop() { EXECUTE_EVERY_N_MS(reconnectDelay, manageSTA()); }
esp_err_t WiFiService::handleScan(httpd_req_t *request) {
@@ -137,8 +155,10 @@ void WiFiService::manageSTA() {
if (!attempted && state().wifi_networks_count > 0) {
attempted = true;
ESP_LOGI(TAG, "Connecting to: %s", state().wifi_networks[0].ssid);
configureNetwork(state().wifi_networks[0]);
uint32_t idx = state().selected_network;
if (idx >= state().wifi_networks_count) idx = 0;
ESP_LOGI(TAG, "Connecting to: %s", state().wifi_networks[idx].ssid);
configureNetwork(state().wifi_networks[idx]);
}
}
+1
View File
@@ -82,6 +82,7 @@ message WifiSettings {
string hostname = 1;
bool priority_rssi = 2;
repeated WifiNetwork wifi_networks = 3; // max 5 networks
uint32 selected_network = 4;
}
message WifiSettingsRequest {}