WiFiEvent_t เป็นประเภทของตัวแปรที่ใช้ในระบบ ESP32 สำหรับจัดการเหตุการณ์ที่เกิดขึ้นกับการเชื่อมต่อ Wi-Fi โดยจะเก็บค่าสถานะต่าง ๆ ของการเชื่อมต่อ Wi-Fi
ประเภท WiFiEvent_t นี้ประกอบไปด้วยเหตุการณ์ที่เกิดขึ้นในระหว่างการเชื่อมต่อและการตัดการเชื่อมต่อ Wi-Fi โดยเหตุการณ์ที่พบได้ใน WiFiEvent_t
ตารางที่แสดงหมายเลขของเหตุการณ์ (event number) และความหมายของแต่ละเหตุการณ์ในระบบ Wi-Fi ของ ESP32
| หมายเลขเหตุการณ์ (Event Number) | ชื่อเหตุการณ์ (Event Name) | คำอธิบาย |
|---|---|---|
0 | SYSTEM_EVENT_WIFI_READY | Wi-Fi พร้อมใช้งาน |
1 | SYSTEM_EVENT_SCAN_DONE | การสแกนเครือข่าย Wi-Fi เสร็จสิ้น |
2 | SYSTEM_EVENT_STA_START | เริ่มต้นการเชื่อมต่อ Wi-Fi ในโหมด STA |
3 | SYSTEM_EVENT_STA_STOP | หยุดการทำงานของ Wi-Fi ในโหมด STA |
4 | SYSTEM_EVENT_STA_CONNECTED | เชื่อมต่อ Wi-Fi สำเร็จ (แต่ยังไม่ได้รับ IP) |
5 | SYSTEM_EVENT_STA_GOT_IP | ได้รับ IP address จาก DHCP หลังจากเชื่อมต่อ Wi-Fi สำเร็จ |
6 | SYSTEM_EVENT_STA_DISCONNECTED | ขาดการเชื่อมต่อ Wi-Fi |
7 | SYSTEM_EVENT_AP_START | เริ่มต้นทำงานในโหมด AP (Access Point) |
8 | SYSTEM_EVENT_AP_STOP | หยุดทำงานในโหมด AP |
9 | SYSTEM_EVENT_AP_STACONNECTED | อุปกรณ์ (เช่น สมาร์ทโฟน) เชื่อมต่อกับ ESP32 ในโหมด AP |
10 | SYSTEM_EVENT_AP_STADISCONNECTED | อุปกรณ์ (เช่น สมาร์ทโฟน) ตัดการเชื่อมต่อจาก ESP32 ในโหมด AP |
11 | SYSTEM_EVENT_AP_STAIPASSIGNED | อุปกรณ์ที่เชื่อมต่อในโหมด AP ได้รับ IP address จาก DHCP |
12 | SYSTEM_EVENT_AP_STAIPLEASED | IP address ที่มอบให้กับอุปกรณ์ในโหมด AP ถูกปล่อยคืน |
13 | SYSTEM_EVENT_AP_STAERROR | เกิดข้อผิดพลาดในการเชื่อมต่อของอุปกรณ์ในโหมด AP |
14 | SYSTEM_EVENT_STA_BSS_RSSI_LOW | ระดับสัญญาณ Wi-Fi (RSSI) ต่ำในโหมด STA |
ตัวอย่างการใช้งาน
marvinroger/AsyncMqttClient byMarvin ROGER
https://registry.platformio.org/libraries/marvinroger/AsyncMqttClient/installation
void WiFiEvent(WiFiEvent_t event)
{
Serial.printf("[WiFi-event] event: %d\n", event);
switch (event)
{
case SYSTEM_EVENT_STA_GOT_IP:
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
connectToMqtt();
break;
case SYSTEM_EVENT_STA_DISCONNECTED:
Serial.println("WiFi lost connection");
xTimerStop(mqttReconnectTimer, 0); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi
xTimerStart(wifiReconnectTimer, 0);
break;
}
}