Arduino ESP8266 - wifi evt: 3 и wifi evt: 7 что означает?
Я получаю их через свой последовательный порт, но что означают Wi-Fi EVT 3 и 7? Я пытаюсь завершить этот урок. https://youtu.be/4Z0gBG8dkqw
Файл PHP находится на моем хостинге, а ESP считывает температуру и влажность с датчика, так что все в порядке.
Серийный код:
Connecting
wifi evt: 3
Connected
Temperature:
24.10
Humidity:
39.70
[hostByName] request IP for: lucasdebelder.be
[hostByName] Host: lucasdebelder.be IP: 185.182.57.81
connected
HTTP/1.1 200 OK
Date: Fri, 11 May 2018 13:14:17 GMT
Server: Apache/2
Upgrade: h2,h2c
Connection: Upgrade, close
Vary: User-Agent
Content-Length: 0
Content-Type: text/html; charset=UTF-8
�
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
wifi evt: 7
Код, который я запускаю в Arduino.
#include <ESP8266WiFi.h>
#include "DHT.h"
const char* ssid = "bbox2"; // SSID локальной сети
const char* password = "azerty"; // Пароль в сети
WiFiClient client;
char servername[]="lucasdebelder.be"; // удаленный сервер, к которому мы подключимся
String result;
float temperature;
float humidity;
#define DHTPIN 14
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
dht.begin();
delay(2000);
Serial.begin(115200);
Serial.println("Connecting");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
Serial.println("Connected");
delay(1000);
readSensor();
String temperatureString = String(temperature,1);
String humidityString = String(humidity,1);
sendDataToServer(temperatureString,humidityString);
}
void loop() {
}
void sendDataToServer(String temperature, String humidity)
{
if (client.connect(servername, 80)) { //запускает клиентское соединение, проверяет наличие соединения
Serial.println("connected");
client.println("GET /send_email.php?temperature="+temperature+"&humidity="+humidity+" HTTP/1.1"); //Отправить данные
client.println("Host: lucasdebelder.be");
client.println("Connection: close"); //закрыть постоянное соединение 1.1
client.println(); //конец запроса на получение
}
else {
Serial.println("connection failed"); //сообщение об ошибке, если клиент не подключился
Serial.println();
}
while(client.connected() && !client.available()) delay(1); //ждет данных
while (client.connected() || client.available()) { //подключено или данные доступны
char c = client.read(); //получает байт из буфера Ethernet
result = result+c;
}
client.stop(); //остановить клиента
Serial.println(result);
}
void readSensor()
{
humidity = dht.readHumidity();
temperature = dht.readTemperature();
Serial.println("Temperature:");
Serial.println(temperature);
Serial.println("Humidity:");
Serial.println(humidity);
}
@Zanic L3, 👍1
2 ответа
Коды объясняются в этой теме форума. Типы событий Wi-Fi описаны здесь (а также продублированы здесь, которые в конечном итоге берутся из Espressif Non-RTOS SDK, глава 6.2.4):
typedef enum WiFiEvent
{
WIFI_EVENT_STAMODE_CONNECTED = 0,
WIFI_EVENT_STAMODE_DISCONNECTED,
WIFI_EVENT_STAMODE_AUTHMODE_CHANGE,
WIFI_EVENT_STAMODE_GOT_IP,
WIFI_EVENT_STAMODE_DHCP_TIMEOUT,
WIFI_EVENT_SOFTAPMODE_STACONNECTED,
WIFI_EVENT_SOFTAPMODE_STADISCONNECTED,
WIFI_EVENT_SOFTAPMODE_PROBEREQRECVED,
WIFI_EVENT_MAX,
WIFI_EVENT_ANY = WIFI_EVENT_MAX,
WIFI_EVENT_MODE_CHANGE
} WiFiEvent_t;
Значения перечисления увеличиваются вниз, что означает, что 7 — это WIFI_EVENT_SOFTAPMODE_PROBEREQRECVED. Получение запроса зондирования означает, что какое-то другое устройство просканировало окружающие сети WiFi, и ваш ESP ответил. Это означает , что ваш ESP находится в режиме программной точки доступа (AP) + станции (SoftAP + STA). Но вы хотите быть только станцией в своей собственной сети WiFi, а не точкой доступа.
Выход активируется этой функцией.
Этот комментарий к проблеме предлагает вам добавить WiFi.mode(WIFI_STA); в вашу настройку, например
void setup() {
WiFi.mode(WIFI_STA);
dht.begin();
delay(2000);
Serial.begin(115200);
Serial.println("Connecting");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
Serial.println("Connected");
delay(1000);
readSensor();
String temperatureString = String(temperature,1);
String humidityString = String(humidity,1);
sendDataToServer(temperatureString,humidityString);
}
Впоследствии событие WiFi 3 указывает WIFI_EVENT_STAMODE_GOT_IP. Что также имеет смысл, поскольку вы сообщаете модулю о необходимости подключения к WiFi, он получает IP через DHCP и затем полностью подключается. Это сообщение безвредно, поскольку не указывает на ошибку.
Вам следует выяснить, почему эти отладочные сообщения выдаются в первую очередь. Сообщения выводятся только в том случае, если установлены два макроса: DEBUG_ESP_WIFI и DEBUG_ESP_PORT (см. здесь). Так что что-то должно где-то сделать #define DEBUG_ESP_WIFI и #define DEBUG_ESP_PORT Serial.
Это либо сделано в некоторых настройках компилятора, о которых вы не знаете, либо потому, что вы изменили файл заголовка, чтобы включить это изменение. В любом случае, вы можете попробовать использовать макрос препроцессора #undef, чтобы снова удалить эти определения перед включением библиотеки. Измените первую строку на следующее:
//Попробуйте уничтожить определения DEBUG
#undef DEBUG_ESP_WIFI
#undef DEBUG_ESP_PORT
#undef DEBUG_WIFI
#include <ESP8266WiFi.h>
Вы видите отладочные сообщения "wifi", потому что вы установили в меню "Инструменты" Уровень отладки "WiFi". УстановитеУровень отладки "Нет"

- ESP8266 не подключается к Wi-Fi
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- Получить час с помощью ctime (библиотека времени с ESP8266)
- Как отключить или остановить точку доступа в ESP8266?
- ESP8266 — действительно ли у него по умолчанию плохой радиус действия Wi-Fi?
- Как подключить ESP8266 с помощью адаптера ESP-01 к Arduino Uno?
- ESP8266 на Wi-Fi без пароля, возможно?
Спасибо большое за ответ. На второй строке всё ещё вижу ошибку Wi-Fi :3 -> Подключение wifi evt: 3 Подключено. То же, что и в моём посте (см. третью строку)., @Zanic L3
@Panic Я учел это в редактировании своего ответа., @Maximilian Gerhardt
начиная с основного пакета 2.4.1 отладочные определения можно включить в меню «Инструменты»., @Juraj
@MaximilianGerhardt, SDK — основной источник перечисления, @Juraj