Я правильно понял что на 8266 в режиме softAP нельзя получить RSSI подключенных устройств, а на ESP32 можно?
Да, вы правильно поняли.
### Разница между ESP8266 и ESP32 в получении RSSI клиентов в режиме SoftAP:
1. ESP8266 (в режиме SoftAP)
- Не поддерживает получение RSSI подключённых клиентов.
- Функция wifi_softap_get_station_info() (из SDK) не возвращает RSSI.
- В Arduino-библиотеках (например, ESP8266WiFi) тоже нет метода для этого.
2. ESP32 (в режиме SoftAP)
- Поддерживает получение RSSI подключённых устройств.
- Можно использовать:
#include <WiFi.h>
wifi_sta_list_t sta_list;
tcpip_adapter_sta_list_t adapter_list;
void setup() {
WiFi.softAP("MyAP", "password");
}
void loop() {
esp_wifi_ap_get_sta_list(&sta_list); // Получаем список клиентов
tcpip_adapter_get_sta_list(&sta_list, &adapter_list);
for (int i = 0; i < adapter_list.num; i++) {
int8_t rssi = 0;
esp_wifi_sta_get_rssi(adapter_list.sta[i].mac, &rssi); // Получаем RSSI
Serial.printf("Client MAC: %02X:%02X:%02X:%02X:%02X:%02X, RSSI: %d dBm\n",
adapter_list.sta[i].mac[0], adapter_list.sta[i].mac[1],
adapter_list.sta[i].mac[2], adapter_list.sta[i].mac[3],
adapter_list.sta[i].mac[4], adapter_list.sta[i].mac[5],
rssi);
}
delay(5000);
}
- В Arduino-библиотеке WiFi есть метод WiFi.softAPgetStationNum(), но для RSSI нужно использовать низкоуровневые функции ESP-IDF, как в примере выше.
### Вывод:
Если вам нужно определять RSSI подключённых клиентов в режиме точки доступа, лучше использовать ESP32, так как ESP8266 эту возможность не предоставляет.