Skip to content

Commit 40ff9ed

Browse files
authored
chore: refactor example
1 parent 9836583 commit 40ff9ed

File tree

1 file changed

+49
-73
lines changed

1 file changed

+49
-73
lines changed

examples/Settings/MultiWiFi/MultiWiFi.ino

Lines changed: 49 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,8 @@
2424

2525
#if defined(ESP8266)
2626
#include <ESP8266WiFi.h>
27-
#include <ESP8266WiFiMulti.h>
28-
ESP8266WiFiMulti wifiMulti; ///< ESP8266 WiFi multi instance.
2927
#elif defined(ESP32)
3028
#include <WiFi.h>
31-
#include <WiFiMulti.h>
32-
WiFiMulti wifiMulti; ///< ESP32 WiFi multi instance.
3329
#endif
3430

3531
#include "FS.h"
@@ -40,25 +36,23 @@ WiFiMulti wifiMulti; ///< ESP32 WiFi multi instance.
4036
#include "SinricProSwitch.h"
4137
#include "SinricProWiFiSettings.h"
4238

43-
#define APP_KEY "" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
44-
#define APP_SECRET "" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
45-
#define SWITCH_ID "" // Should look like "5dc1564130xxxxxxxxxxxxxx"
39+
#define APP_KEY "" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
40+
#define APP_SECRET "" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
41+
#define SWITCH_ID "" // Should look like "5dc1564130xxxxxxxxxxxxxx"
4642

4743
#define BAUD_RATE 115200 // Change baudrate to your need
4844

4945
#define SET_WIFI_PRIMARY "pro.sinric::set.wifi.primary"
5046
#define SET_WIFI_SECONDARY "pro.sinric::set.wifi.secondary"
5147

5248
const bool formatLittleFSIfFailed = true;
53-
const unsigned long NO_WIFI_REBOOT_TIMEOUT = 300000; // 5 minutes in milliseconds
54-
unsigned long wifiStartTime;
5549

56-
const char* primary_ssid = ""; // Set to your primary wifi's ssid
57-
const char* primary_password = ""; // Set to your primary wifi's password
58-
const char* secondary_ssid = ""; // Set to your secondary wifi's ssid
59-
const char* secondary_password = ""; // Set to your secondary wifi's password
50+
const char* primarySSID = ""; // Set to your primary wifi's ssid
51+
const char* primaryPassword = ""; // Set to your primary wifi's password
52+
const char* secondarySSID = ""; // Set to your secondary wifi's ssid
53+
const char* secondaryPassword = ""; // Set to your secondary wifi's password
6054

61-
SinricProWiFiSettings spws(primary_ssid, primary_password, secondary_ssid, secondary_password, "/wificonfig.dat");
55+
SinricProWiFiSettings spws(primarySSID, primaryPassword, secondarySSID, secondaryPassword, "/wificonfig.dat");
6256

6357
bool onSetModuleSetting(const String& id, const String& value) {
6458
// Handle module settings.
@@ -81,28 +75,21 @@ bool onSetModuleSetting(const String& id, const String& value) {
8175
spws.updateSecondarySettings(ssid, password);
8276
}
8377

84-
bool connect = doc["connectNow"] | false;
85-
if (connect) {
86-
#if defined(ESP8266)
87-
wifiMulti.cleanAPlist();
88-
#elif defined(ESP32)
89-
wifiMulti.APlistClean();
90-
#endif
91-
92-
wifiMulti.addAP(ssid, password);
93-
return waitForConnectResult();
78+
bool connectNow = doc["connectNow"] | false;
79+
if(connectNow) {
80+
return connectToWiFi(ssid, password);
9481
}
9582

9683
return true;
9784
}
9885

9986
bool setupLittleFS() {
100-
// Sets up the LittleFS.
101-
#if defined(ESP8266)
102-
if (!LittleFS.begin()) {
103-
#elif defined(ESP32)
104-
if (!LittleFS.begin(true)) {
105-
#endif
87+
// Sets up the LittleFS.
88+
#if defined(ESP8266)
89+
if (!LittleFS.begin()) {
90+
#elif defined(ESP32)
91+
if (!LittleFS.begin(true)) {
92+
#endif
10693

10794
Serial.println("An Error has occurred while mounting LittleFS");
10895

@@ -127,50 +114,51 @@ bool setupLittleFS() {
127114
return true;
128115
}
129116

130-
bool waitForConnectResult() {
131-
unsigned long startTime = millis();
132-
constexpr unsigned int connectTimeout = 10000;
133-
134-
Serial.println("Connecting Wifi...");
135-
while (wifiMulti.run() != WL_CONNECTED) {
136-
Serial.print(".");
137-
delay(500);
138-
if (millis() - startTime >= connectTimeout) {
139-
Serial.println("WIFI not connected");
140-
return false;
141-
}
142-
}
143-
144-
Serial.printf("\nWiFi connected\nIP address: %s\n", WiFi.localIP().toString().c_str());
145-
return true;
146-
}
147-
148117
// setup function for WiFi connection
149118
void setupWiFi() {
150119
Serial.printf("\r\n[Wifi]: Connecting");
151120

152-
WiFi.mode(WIFI_STA);
153-
#if defined(ESP8266)
154-
WiFi.setSleepMode(WIFI_NONE_SLEEP);
155-
#elif defined(ESP32)
156-
WiFi.setSleep(false);
157-
#endif
158-
WiFi.setAutoReconnect(true);
159-
160121
// Load settings from file or using defaults if loading fails.
161122
spws.begin();
162123

163124
const SinricProWiFiSettings::wifi_settings_t& settings = spws.getWiFiSettings();
125+
bool connected = false;
164126

165127
if (spws.isValidSetting(settings.primarySSID, settings.primaryPassword)) {
166-
wifiMulti.addAP(settings.primarySSID, settings.primaryPassword);
128+
connected = connectToWiFi(settings.primarySSID, settings.primaryPassword);
167129
}
168130

169-
if (spws.isValidSetting(settings.secondarySSID, settings.secondaryPassword)) {
170-
wifiMulti.addAP(settings.secondarySSID, settings.secondaryPassword);
131+
if (!connected && spws.isValidSetting(settings.secondarySSID, settings.secondaryPassword)) {
132+
connected = connectToWiFi(settings.secondarySSID, settings.secondaryPassword);
171133
}
134+
}
135+
136+
bool connectToWiFi(const char* ssid, const char* password) {
137+
Serial.print("Connecting to ");
138+
Serial.println(ssid);
139+
140+
WiFi.disconnect();
141+
delay(10);
142+
143+
#if defined(ESP32)
144+
WiFi.setSleep(false);
145+
WiFi.begin(ssid, password);
146+
#elif defined(ESP8266)
147+
WiFi.setSleepMode(WIFI_NONE_SLEEP);
148+
WiFi.begin(ssid, password);
149+
#elif defined(ARDUINO_ARCH_RP2040)
150+
WiFi.begin(ssid, password);
151+
#endif
172152

173-
waitForConnectResult();
153+
int timeout = 0;
154+
while (WiFi.status() != WL_CONNECTED && timeout < 30) {
155+
delay(500);
156+
Serial.print(".");
157+
timeout++;
158+
}
159+
Serial.println();
160+
161+
return WiFi.status() == WL_CONNECTED;
174162
}
175163

176164
// setup function for SinricPro
@@ -198,19 +186,7 @@ void setup() {
198186
setupSinricPro();
199187
}
200188

201-
void rebootIfNoWiFi() {
202-
// If no WiFI connection for 5 mins reboot the ESP. ESP will connect to either primary or secondary based on availability
203-
if (WiFi.status() != WL_CONNECTED && (millis() - wifiStartTime >= NO_WIFI_REBOOT_TIMEOUT)) {
204-
Serial.println("WiFi connection timed out. Rebooting...");
205-
ESP.restart();
206-
} else {
207-
// Reset the start time if WiFi is connected
208-
wifiStartTime = millis();
209-
}
210-
}
211-
212189
void loop() {
213-
wifiMulti.run();
214190
SinricPro.handle();
215-
rebootIfNoWiFi();
191+
if (WiFi.status() != WL_CONNECTED) ESP.restart();
216192
}

0 commit comments

Comments
 (0)