ESP32 Wi-Fi RSSI Value Is Unreliable
DodaTech
Updated 2026-06-26
1 min read
In this tutorial, you'll learn about ESP32 Wi. We cover key concepts, practical examples, and best practices.
The Problem
ESP32 reports inconsistent or inaccurate RSSI values for Wi-Fi signal strength measurement.
Quick Fix
Wrong
int rssi = WiFi.RSSI();
Serial.printf("Signal: %d dBm
", rssi);
Signal: -42 dBm
Signal: -67 dBm
Signal: -38 dBm
(values jump wildly between reads)
Right
#include <WiFi.h>
float smoothRSSI = 0;
void loop() {
int rssi = WiFi.RSSI();
if (smoothRSSI == 0) smoothRSSI = rssi;
smoothRSSI = smoothRSSI * 0.7 + rssi * 0.3;
Serial.printf("Raw: %d dBm | Smooth: %.1f dBm
", rssi, smoothRSSI);
delay(2000);
}
Raw: -42 dBm | Smooth: -44.2 dBm
Raw: -47 dBm | Smooth: -45.0 dBm
Raw: -44 dBm | Smooth: -44.7 dBm
Prevention
Apply exponential moving average to RSSI readings. Read RSSI at most once per second. Filter out values below -100 dBm (out of range). Use dBm, not percentages for precision. Compare RSSI against known baseline for your environment.
DodaTech engineers apply these same patterns when building Doda Browser's networking stack, DodaZIP's firmware packaging pipeline, and Durga Antivirus Pro's sensor communication layer.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro