Ну в принципе уже выводится режим, но скорее всего, неправильно переключаюсь между режимами, поэтому ESP находится в режиме WIFI_AP_STA = 3И если Вы говорите что разобрались с WiFiMode_t, но у Вас не получается. Это значит что Вы не разобрались
Ну в принципе уже выводится режим, но скорее всего, неправильно переключаюсь между режимами, поэтому ESP находится в режиме WIFI_AP_STA = 3И если Вы говорите что разобрались с WiFiMode_t, но у Вас не получается. Это значит что Вы не разобрались
Здесь принято благодарить плюсом в кармуСпасибо за помощь, запустил код, переключается между STA и AP. Правда непонятно, почему режим показывает 3. Но это уже мелочи.
#include "include_define.h"
const char* ssid = "LORD";
const char* ssidPass = "4182H{v7";
const char* ssidAP = "ESP8266";
const char* ssidApPass = "";
IPAddress apIP(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress stIP(192, 168, 1, 120);
IPAddress gateIP(192, 168, 1, 1);
IPAddress subnetIP(255, 255, 255, 0);
WiFiEventHandler gotIpEventHandler;
WiFiEventHandler disconnectedEventHandler;
WiFiEventHandler clientConnectedEventHandler;
WiFiEventHandler clientDisconnectedEventHandler;
WiFiEventHandler onProbeRequestEventHandler;
bool ledState;
WiFiMode_t modeWiFi; //WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3
void WiFi_initAP() {
// WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
// delay(1000);
WiFi.mode(WIFI_AP);
modeWiFi = WiFi.getMode();
WiFi.softAPConfig(apIP, gateway, subnet);
WiFi.softAP(ssidAP, ssidApPass);
Serial.print("SoftAP, IP: ");
Serial.println(WiFi.softAPIP());
}
void WiFi_initSTA() {
// WiFi.softAPdisconnect(true);
// WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
WiFi.mode(WIFI_STA);
WiFi.config(stIP, gateIP, subnetIP);
WiFi.begin(ssid, ssidPass);
}
void printScanResult(int networksFound) {
//DEBUG_PRINT("\nSEARCHING \n");
for (int i = 0; i < networksFound; i++) {
if (WiFi.SSID(i) == ssid) {
Serial.printf("\nFOUND \"%s\"\nCONNECTING...PLEASE WAIT...\n", ssid);
WiFi_initSTA();
}
}
}
String macToString(const unsigned char* mac) {
char buf[20];
snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return String(buf);
}
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.persistent(false);
pinMode(LED_BUILTIN, OUTPUT);
gotIpEventHandler = WiFi.onStationModeGotIP([](const WiFiEventStationModeGotIP & event)
{
Serial.print("Station connected, IP: ");
Serial.println(WiFi.localIP());
});
disconnectedEventHandler = WiFi.onStationModeDisconnected([](const WiFiEventStationModeDisconnected & event)
{
Serial.println("Station disconnected");
modeWiFi = WiFi.getMode();
Serial.println(modeWiFi);
WiFi.reconnect();
if (--countDS) {
Serial.printf("CONNECTING...TRY:%i\n", countDS);
} else {
WiFi_initAP();
countDS = recTime;
}
});
clientConnectedEventHandler = WiFi.onSoftAPModeStationConnected([](const WiFiEventSoftAPModeStationConnected & event)
{
Serial.println("Client connected");
});
clientDisconnectedEventHandler = WiFi.onSoftAPModeStationDisconnected([](const WiFiEventSoftAPModeStationDisconnected & event)
{
Serial.println("Client disconnected");
});
onProbeRequestEventHandler = WiFi.onSoftAPModeProbeRequestReceived([](const WiFiEventSoftAPModeProbeRequestReceived & event)
{
Serial.print("Probe request from: ");
Serial.print(macToString(event.mac));
Serial.print(" RSSI: ");
Serial.println(event.rssi);
WiFi.scanNetworksAsync(printScanResult);
});
Serial.printf("Connecting to %s ...\n", ssid);
// "Подключение к %s ... "
WiFi_initSTA();
}
void loop()
{
digitalWrite(LED_BUILTIN, ledState);
ledState = !ledState;
delay(250);
modeWiFi = WiFi.getMode();
Serial.println(modeWiFi);
}
===================================
WIFI INIT AP
===================================
del if0
usl
mode : null
mode : softAP(82:7d:3a:7f:dc:7e)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
[APConfig] local_ip: 192.168.4.1 gateway: 192.168.4.1 subnet: 255.255.255.0
[APConfig] DHCP IP start: 192.168.4.100
[APConfig] DHCP IP end: 192.168.4.200
bcn 0
del if1
usl
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
wifi evt: 8
wifi evt: 8
wifi evt: 7
mode : sta(80:7d:3a:7f:dc:7e) + softAP(82:7d:3a:7f:dc:7e)
add if0
wifi evt: 8
wifi evt: 7
wifi evt: 7
wifi evt: 7
===================================
WIFI INIT AP
===================================
del if0
usl
mode : null
mode : sta(80:7d:3a:7f:dc:7e) + softAP(82:7d:3a:7f:dc:7e)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
[APConfig] local_ip: 192.168.4.1 gateway: 192.168.4.1 subnet: 255.255.255.0
[APConfig] DHCP IP start: 192.168.4.100
[APConfig] DHCP IP end: 192.168.4.200
bcn 0
del if1
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
wifi evt: 8
wifi evt: 8
wifi evt: 7
#include "include_define.h"
WiFiEventHandler gotIpEventHandler;
WiFiEventHandler disconnectedEventHandler;
WiFiEventHandler clientConnectedEventHandler;
WiFiEventHandler clientDisconnectedEventHandler;
WiFiEventHandler onProbeRequestEventHandler;
void setup()
{
Serial.begin(115200);
Serial.println();
int count_try = 0;
WiFi.persistent(false);
pinMode(LED_BUILTIN, OUTPUT);
gotIpEventHandler = WiFi.onStationModeGotIP(&onStationGotIP);
disconnectedEventHandler = WiFi.onStationModeDisconnected(&onDisconnected);
clientConnectedEventHandler = WiFi.onSoftAPModeStationConnected(&onStationConnected);
clientDisconnectedEventHandler = WiFi.onSoftAPModeStationDisconnected(&onStationDisconnected);
onProbeRequestEventHandler = WiFi.onSoftAPModeProbeRequestReceived(&onProbeRequestPrint);
WiFi_initSTA();
Serial.printf("Connecting to %s ...\n", ssidST.c_str());
// "Подключение к %s ... "
}
void loop()
{
digitalWrite(LED_BUILTIN, ledState);
ledState = !ledState;
delay(1000);
modeWiFi = WiFi.getMode();
Serial.print("Режим WiFi: ");
Serial.print(modeWiFi);
Serial.print(". SSID: ");
Serial.println(WiFi.SSID());
}
#include <Arduino.h>
//#include <ESPAsyncTCP.h> // https://github.com/me-no-dev/ESPAsyncTCP
//#include <ESPAsyncWebServer.h> // https://github.com/me-no-dev/ESPAsyncWebServer
#include <ESP8266WiFi.h> // Standart ESP8266 2.7.3, NOT 2.7.4
#include <ESP8266WiFiMulti.h>
#include <stdio.h>
#include "user_interface.h"
ESP8266WiFiMulti wifiMulti;
#define wifi_max_try 10 // Число попыток подключения к WiFi
#define recTime 5
byte countDS = recTime;
byte tryConnect = 0;
WiFiMode_t modeWiFi; //WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3
const char* ssid = "LORD";
const char* password = "41xxx";
const char* ssid_1 = "SamsungS9+";
const char* password_1 = "qxxx";
const char* ssid_2 = "ASUS_";
const char* password_2 = "gxxx";
const char* ssid_3 = "TP-LINK_F54920";
const char* password_3 = "54xxxx";
const char* ssid_4 = "DD-WRT_";
const char* password_4 = "gCxxx";
const char* ssidAP = "ESP8266";
const char* ssidApPass = "";
String ssidST, passwordST;
IPAddress apIP(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress stIP(192, 168, 1, 251);
IPAddress gateIP(192, 168, 1, 1);
IPAddress subnetIP(255, 255, 255, 0);
bool ledState;
void WiFi_initAP() {
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, gateway, subnet);
WiFi.softAP(ssidAP, ssidApPass);
Serial.print("SoftAP, IP: ");
Serial.println(WiFi.softAPIP());
}
void WiFi_initSTA() {
WiFi.mode(WIFI_OFF);
WiFi.mode(WIFI_STA);
// WiFi.config(stIP, gateIP, subnetIP);
// WiFi.begin(ssid, ssidPass);
wifiMulti.addAP(ssid, password);
wifiMulti.addAP(ssid_1, password_1);
wifiMulti.addAP(ssid_2, password_2);
wifiMulti.addAP(ssid_3, password_3);
wifiMulti.addAP(ssid_4, password_4);
Serial.println("Connecting Wifi...");
while (wifiMulti.run() != WL_CONNECTED && tryConnect++ < wifi_max_try) { // Wait for the Wi-Fi to connect: scan for Wi-Fi networks, and connect to the strongest of the networks above
delay(500);
Serial.println(F("."));
Serial.print(F("Попытка подключения - "));
Serial.println(tryConnect);
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println('\n');
Serial.print(F("Connected to "));
Serial.println(WiFi.SSID()); // Tell us what network we're connected to
Serial.print(F("IP address:\t"));
Serial.println(WiFi.localIP()); // Send the IP address of the ESP8266 to the computer
ssidST = WiFi.SSID();
}
else {
Serial.println(F("No wifi connection! Starting SoftAP!"));
WiFi_initAP();
}
}
void printScanResult(int networksFound) {
//DEBUG_PRINT("\nSEARCHING \n");
for (int i = 0; i < networksFound; i++) {
if (WiFi.SSID(i) == ssidST) {
Serial.printf("\nFOUND \"%s\"\nCONNECTING...PLEASE WAIT...\n", ssid);
WiFi_initSTA();
}
}
}
String macToString(const unsigned char* mac) {
char buf[20];
snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return String(buf);
}
void onStationGotIP(const WiFiEventStationModeGotIP & event)
{
Serial.print("Station connected, IP: ");
Serial.println(WiFi.localIP());
}
void onDisconnected(const WiFiEventStationModeDisconnected & event)
{
Serial.println("Station disconnected");
modeWiFi = WiFi.getMode();
Serial.println(modeWiFi);
WiFi.reconnect();
if (--countDS) {
Serial.printf("CONNECTING...TRY:%i\n", countDS);
} else {
WiFi_initAP();
countDS = recTime;
}
}
void onStationConnected(const WiFiEventSoftAPModeStationConnected & event)
{
Serial.println("Client connected");
}
void onStationDisconnected(const WiFiEventSoftAPModeStationDisconnected & event)
{
Serial.println("Client disconnected");
}
void onProbeRequestPrint(const WiFiEventSoftAPModeProbeRequestReceived & event)
{
Serial.print("Probe request from: ");
Serial.print(macToString(event.mac));
Serial.print(" RSSI: ");
Serial.println(event.rssi);
// WiFi.scanNetworksAsync(printScanResult);
wifiMulti.run();
}