Изначально функция WiFi.RSSI() возвращает сигнал в dBm. В данном посте расскажу способ перевода dBm в проценты для удобного восприятия. Автор данного способа Ahmad Shamshiri из Ajax, Ontario, Canada.
https://robojax.com/learn/arduino/?vid=robojax_ESP8266_wifi_scan_LCD
https://youtu.be/HYMnCUtNMnw
Итак, добавляем две переменных и функцию. Результатом вызова функции dBmtoPercentage(WiFi.RSSI()) будет значение int (проценты)
const int RSSI_MAX =-50;// define maximum strength of signal in dBmconst int
RSSI_MIN =-100;// define minimum strength of signal in dBm
int dBmtoPercentage(int dBm)
{
int quality;
if(dBm <= RSSI_MIN)
{
quality = 0;
}
else if(dBm >= RSSI_MAX)
{
quality = 100;
}
else
{
quality = 2 * (dBm + 100);
}
return quality;
}//dBmtoPercentage
p.s. случайно нашел интересный труд под названием Estimate distance measurement using NodeMCU ESP8266 based on RSSI technique
Выложил в файловый архив (Books\IT Books\IEEECAMApaper.pdf), кому интересно почитайте ребята неслабо так поковыряли этот вопрос.