Проект · Wi-Fi · Site survey
Карта того, где ваш Wi-Fi есть на самом деле
«В углу плохой Wi-Fi» — это ощущение; −82 dBm в точке 41.3110, 69.2401 — это факт. Пронесите ESP32 по объекту — он сообщает живой RSSI линка, на котором реально сидит, кладёт замер на карту, ставит оценку Excellent/OK/WEAK и пишет каждую мёртвую зону с координатами — site survey, за которым следишь с телефона, за несколько долларов.
Замер — RSSI линка, который вам важен
WiFi.RSSI() возвращает силу соединения, которым плата реально пользуется —
именно это и должен мерить survey, а не скан всех сетей в эфире. Простое отображение превращает dBm в
интуитивные проценты, а трёхступенчатая оценка ведёт бейдж и журнал слабых зон:
// The real measurement: this board's link to the AP, right where it stands.
long r = WiFi.RSSI();
if (r != 0 && r > -127) rssi = r;
// Map dBm to an intuitive 0-100 % (−50 dBm and better = 100, −100 dBm = 0).
quality = rssi >= -50 ? 100 : (rssi <= -100 ? 0 : 2.0f * (rssi + 100));
// Grade it, and log weak zones WITH their position:
int g = rssi > -60 ? 0 : (rssi > -75 ? 1 : 2);
if (g == 2 && grade != 2)
evlog->print("WEAK " + String((int)rssi) + " dBm @ " + String(lat, 4) + "," + String(lon, 4)); | RSSI | Оценка | Что это на практике |
|---|---|---|
| −30…−60 dBm | Excellent | полная скорость, видеозвонки где угодно |
| −60…−75 dBm | OK | сёрфинг и IoT в порядке |
| −75…−90 dBm | WEAK | обрывы, ретраи — двигать AP или ставить узел |
Место — маркер на каждый замер
Число без места — половина survey. На улице NEO-6M привязывает каждый замер; map-виджет рисует движущийся маркер вживую. В помещении GPS не поможет — просто смотрите RSSI и тренд, идя из комнаты в комнату; журнал слабых зон всё равно фиксирует каждый провал:
dash.layout("Survey", RICON_WIFI);
dash.map("Position", &lat, &lon); // where this reading was taken
dash.stat("RSSI", &rssi, "dBm");
dash.gauge("Quality", &quality, 0, 100, "%").variant("bar");
dash.badge("Signal", &grade).labels("Excellent", "OK", "WEAK");
dash.chart("RSSI trend", &rssi, "dBm"); // the survey trace
evlog = &dash.log("Weak zones", 5);
dash.begin(WIFI_SSID, WIFI_PASS); // STA — we measure THIS link Пример из библиотеки (examples/04_Templates/WifiSurvey) честен в том, что реально:
RSSI живой на любой плате с первого включения; GPS — это
RisalFakeGPS, проигрывающий пеший маршрут, так что весь survey
работает на столе. Для реального уличного картирования подайте lat/lon из TinyGPS++ —
подключение и разбор NMEA есть в сборке GPS-трекера.
Тактика обхода
Идите медленно — RSSI усреднён и запаздывает на секунду-две. Мерьте на высоте стола, не у пола. Пройдите петлю дважды и верьте худшему проходу (люди и двери двигаются). А когда найдёте мёртвый угол — лечится обычно позицией AP, а не мощностью: сначала переставить, потом расширять. Что физически значат dBm — антенны, стены, 2.4 vs 5 ГГц — в гайде по беспроводным протоколам.
RSSI живой с первого включения — GPS может оставаться фейковым, пока не выйдете на улицу.