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);

}

, 👍1


2 ответа


4

Коды объясняются в этой теме форума. Типы событий 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>
,

Спасибо большое за ответ. На второй строке всё ещё вижу ошибку Wi-Fi :3 -> Подключение wifi evt: 3 Подключено. То же, что и в моём посте (см. третью строку)., @Zanic L3

@Panic Я учел это в редактировании своего ответа., @Maximilian Gerhardt

начиная с основного пакета 2.4.1 отладочные определения можно включить в меню «Инструменты»., @Juraj

@MaximilianGerhardt, SDK — основной источник перечисления, @Juraj


1

Вы видите отладочные сообщения "wifi", потому что вы установили в меню "Инструменты" Уровень отладки "WiFi". УстановитеУровень отладки "Нет"

,