Я читал, что вроде есть режим одновременной работы station+AP, но обяснений и примера не нашел.
Поэтому написал свой велосипед из костылей:
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(9600);
int count = 0;
Serial.print("\n");
WiFi.mode(WIFI_STA);
WiFi.begin("111", "2222");
while (WiFi.status() != WL_CONNECTED && count++ < 20) {
delay(500);
Serial.print(".");
}
Serial.print("\n");
if (WiFi.status() == WL_CONNECTED) {
Serial.println(WiFi.localIP());
Serial.println("Connected to router!");
}
}
uint32_t WiFiDisappiarTime = 0;
bool APEnabled = false;
void loop() {
if (WiFi.status() != WL_CONNECTED && !APEnabled) {
Serial.println("No wifi connection! Starting SoftAP!");
IPAddress Ip(192, 168, 1, 1);
IPAddress NMask(255, 255, 255, 0);
WiFi.softAPConfig(Ip, Ip, NMask);
String AP = "AP_" + String(system_get_chip_id());
WiFi.softAP(AP, "222");
IPAddress myIP = WiFi.softAPIP();
WiFiDisappiarTime = millis();
APEnabled = true;
Serial.print("\nAP enabled, IP: ");
Serial.println(myIP);
}
delay(1000);
if (APEnabled && millis() - WiFiDisappiarTime > 60 * 1000) {
int count = 0;
WiFi.mode(WIFI_STA);
WiFi.begin("111", "2222");
Serial.print("\n");
while (WiFi.status() != WL_CONNECTED && count++ < 20) {
delay(500);
Serial.print(".");
}
Serial.print("\n");
if (WiFi.status() == WL_CONNECTED) {
Serial.println(WiFi.localIP());
Serial.println("Connected to router!");
APEnabled = false;
WiFiDisappiarTime = 0;
}
}
}
Может быть есть более изящное решение?
Поэтому написал свой велосипед из костылей:
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(9600);
int count = 0;
Serial.print("\n");
WiFi.mode(WIFI_STA);
WiFi.begin("111", "2222");
while (WiFi.status() != WL_CONNECTED && count++ < 20) {
delay(500);
Serial.print(".");
}
Serial.print("\n");
if (WiFi.status() == WL_CONNECTED) {
Serial.println(WiFi.localIP());
Serial.println("Connected to router!");
}
}
uint32_t WiFiDisappiarTime = 0;
bool APEnabled = false;
void loop() {
if (WiFi.status() != WL_CONNECTED && !APEnabled) {
Serial.println("No wifi connection! Starting SoftAP!");
IPAddress Ip(192, 168, 1, 1);
IPAddress NMask(255, 255, 255, 0);
WiFi.softAPConfig(Ip, Ip, NMask);
String AP = "AP_" + String(system_get_chip_id());
WiFi.softAP(AP, "222");
IPAddress myIP = WiFi.softAPIP();
WiFiDisappiarTime = millis();
APEnabled = true;
Serial.print("\nAP enabled, IP: ");
Serial.println(myIP);
}
delay(1000);
if (APEnabled && millis() - WiFiDisappiarTime > 60 * 1000) {
int count = 0;
WiFi.mode(WIFI_STA);
WiFi.begin("111", "2222");
Serial.print("\n");
while (WiFi.status() != WL_CONNECTED && count++ < 20) {
delay(500);
Serial.print(".");
}
Serial.print("\n");
if (WiFi.status() == WL_CONNECTED) {
Serial.println(WiFi.localIP());
Serial.println("Connected to router!");
APEnabled = false;
WiFiDisappiarTime = 0;
}
}
}
Может быть есть более изящное решение?