#include <ESP8266WiFi.h> // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <WiFiClient.h>
char* array_ssid[] = {"ssid1", "ssid2", "ssid3", "ssid4"}; // Массив необходимых ссидов
char* array_pass[] = {"pass1", "pass2", "pass3", "pass4"}; // Массив необходимых паролей к этим ссидам
int count_ssid = sizeof(array_ssid) / sizeof(array_ssid[0]); // Размер массива ссидов
String LocalIP = ""; // Пока что использую глобальную переменную для айпишника
unsigned long timing; // Переменная для хранения точки отсчета
// Функция скарирования и подключения к найденной известной сети из нашего списка, другие будут игнорится
void connect_to_wifi(int networksFound) { //
Serial.println("run connekt"); // Проверка запустилась ли функция
if (WiFi.status() != WL_CONNECTED) { // Проверяем, есть ли вообще подключение, если нет, то в следующей строке запускаем сканирование
for (int i = 0; i < networksFound; i++) { // Перебираем полученные точки доступа
for (int j = 0; j < count_ssid; j++) { // Перебираем в нашем списке точек доступа и проверяем условия
if (WiFi.status() == WL_CONNECTED) { // Сперва проверяем, если все же есть подключение, то выходим из цикла. Нужно для проверки при разрывах
break;
}
else if (WiFi.SSID(i) == array_ssid[j]) { // Если нет подключения, то сравниваем с нашим списком
Serial.println("\nOne of our ssid was detected = " + WiFi.SSID(i));
// char* ssid = array_ssid[j]; // поместил тут объявление переменных для подключения, потому что в глобальных не вижу смысла
// char* pass = array_pass[j]; // И вообще, они оказались не нужны
WiFi.begin(array_ssid[j], array_pass[j]); // Стартуем подключение к точке доступа
while (WiFi.status() != WL_CONNECTED) { // Зупускаем ожидание поднятия вайфай сервера
arrest_time(1000);
Serial.println("waiting...");
}
LocalIP = WiFi.localIP().toString();
Serial.println(WiFi.localIP()); // Распечатываем полученный айпишник
}
}
}
if (WiFi.status() != WL_CONNECTED) { // Доп. роверка и отчет, если нет точек из нашего списка
Serial.println("\nNo famous among the detected wifi");
}
}
// return LocalIP;
}
void setup() {
WiFi.persistent(false);
Serial.begin(9600);
WiFi.mode(WIFI_OFF); // Останавливаем вайфай
arrest_time(1000);
WiFi.mode(WIFI_STA); // Запускаем вайфай в режиме клиента
Serial.println("\nOur mac = " + WiFi.macAddress()); // Выводим мак адрес
connect_to_wifi(WiFi.scanNetworks()); // Стартуем в цикле функцию сканирования сети и поиска нужной сети
Serial.println("IP = "+LocalIP); // Распечатываем полученный айпишник
}
void loop() {
connect_to_wifi(WiFi.scanNetworks()); // Стартуем в цикле функцию сканирования сети и поиска нужной сети
arrest_time(5000);
Serial.println("new"); // Типа контроль
}
void arrest_time(int t) { // Вместо t подставьте нужное вам значение паузы
if (millis() - timing > t){
timing = millis();
Serial.println (String(t)+" miliseconds");
}
}