프로그래밍/IoT

[IoT] WiFi Max RSSI인 SSID 얻기

흔한티벳여우 2020. 9. 14. 17:42
반응형

esp32를 사용하여 Wifi를 연결할 때, 첫 번째로 가장 중요한 요소는 Wifi와의 연결 강도가 될 수 있습니다.

기껏 esp32를 통해 간단한 웹서버를 만들거나 mqtt를 사용한다거나 카메라 화면등을 가져오는데 Wifi의 연결때문에 신호가 끊어져서 데이터를 읽는 경우가 많습니다.

 

아래의 코드는 현재 ESP32가 연결 가능한 Wifi들을 수집하여 RSSI가 가장 좋은 SSID를 얻는 방법입니다.

 

int numSsid = WiFi.scanNetworks();
if(numSsid < 0) numSsid = 0;
if (numSsid == -1) {
    INFO("Couldn't get a wifi connection");
    while (true);
}

// print the list of networks seen
INFO1("Number of available networks:",numSsid);

String ssid = "";
String tempSSID = "";

int32_t maxRSSI = -9999;
int32_t tempRSSI = 0;

// print the network number and name for each network found
for (int thisNet = 0; thisNet < numSsid; thisNet++) {
    
    tempSSID = String(WiFi.SSID(thisNet));

    if(tempSSID.indexOf(String("찾길 원하는 SSID")) != -1){
        tempRSSI = WiFi.RSSI(thisNet);
        if(tempRSSI > maxRSSI){
            ssid = tempSSID;
            maxRSSI = tempRSSI;
        }
        INFO3(WiFi.SSID(thisNet),"\tSignal: ",WiFi.RSSI(thisNet), " dBm");
    }
}

if(maxRSSI == -9999){
    return "";
}

INFO1("SSID is ",ssid);
INFO1("RSSI is ",maxRSSI);

 

반응형