#include #include #include #include "credentials.h" namespace Wifi { WiFiEventHandler stationConnectedHandler; WiFiEventHandler stationDisconnectedHandler; ESP8266WiFiMulti wifiMulti; String currentSSID; String currentPsk; void printStatus(); Task tReconnect(1 * TASK_MINUTE, TASK_FOREVER, [](){ if (WiFi.status() != WL_CONNECTED) { WiFi.forceSleepWake(); WiFi.begin(currentSSID.c_str(), currentPsk.c_str()); Serial.println("Reconnecting to WiFi netowrk..."); } }, &ts); void setup() { stationConnectedHandler = WiFi.onStationModeGotIP([](const WiFiEventStationModeGotIP& e) { Serial.println("Connected to network."); printStatus(); tReconnect.cancel(); Ota::tLoop.enable(); Mqtt::tReConnect.enable(); }); stationDisconnectedHandler = WiFi.onStationModeDisconnected([](const WiFiEventStationModeDisconnected& e) { Serial.println("Disconnected from network."); }); for (uint32_t i = 0; i < sizeof(credentials) / sizeof(WifiCredentials); i++) { wifiMulti.addAP(credentials[i].ssid, credentials[i].password); } WiFi.setHostname("rc-gateway"); Serial.println("Connecting to WiFi netowrk."); while (wifiMulti.run() != WL_CONNECTED) { delay(500); } currentSSID = WiFi.SSID(); currentPsk = WiFi.psk(); } void printStatus() { // print the SSID of the network you're attached to: Serial.print("SSID: "); Serial.println(WiFi.SSID()); // print your WiFi shield's IP address: IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); // print the received signal strength: long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); } }