espressif / esp-faq

Apache License 2.0
35 stars 10 forks source link

Ask issue: WIFI的连接问题 #11

Open WangShuoran opened 1 year ago

WangShuoran commented 1 year ago

在ESP32作为STA时找到多个AP的连接中,FAQ给的答案是:

[Connect] 当环境内存在多个相同 SSID 时,设备如何连接 ? 设备会连接优先扫描到的 AP 设备。 如果想要根据信号质量等排序,可以使用 Scan 方法自主筛选。 如果想要连接指定 AP, 可以在连接参数中填入 BSSID 信息。

在https://docs.espressif.com/projects/esp-idf/zh_CN/v5.0/esp32c3/api-guides/wifi.html中提到: 该场景与 ESP32-C3 Wi-Fi station 连接场景 相似,不同之处在于该场景中不会产生 WIFI_EVENT_STA_DISCONNECTED 事件,除非 station 无法连接所有找到的 AP。

那么我想问:

  1. 如果我选的排序是基于RSSI,是依照最强的RSSI到最弱进行连接,还是从第一个信道找到AP就连接,如果不管RSSI,只是找到就连接的话,wifi_sta_config_t中的scan_method是不是就不对这个场景生效?
  2. 如果按照文档说的是进行多个AP都尝试,因为WIFI尝试连接不保证一次就成功,也有可能是密码输入有误,那么我想问,错误异常我怎么知道是基于与哪个AP进行的?如果没办法知道,是不是也有规律可循(比如最后连接的那一个,第1问中RSSI排序最强的第一个)
WangShuoran commented 1 year ago

我在Wifi Driver中找到:如果设置为WIFI_CONNECT_AP_BY_SIGNAL,所有匹配的AP将会按照信号强度排序,信号最好的AP会被首先连接。比如,如果station想要连接ssid为apxx的AP,且扫描到两个这样的AP。第一个AP的信号为-90dBm,第二个AP的信号为-30dBm,station首先连接第二个AP。除非失败,才会连接第一个。 那么,请问第二个问题的WIFI_EVENT_STA_DISCONNECTED中的异常号是基于哪个AP连接返回的?

WangShuoran commented 1 year ago

一个新问题:在FAQ中WIFI_REASON_CONNECTION_FAIL 扫描阶段返回的错误码,主要是由于 STA 扫描到了匹配的 AP,但是这个 AP 在黑名单里。AP 在黑名单里面的原因是上次 AP 主动踢掉了 STA,或者 STA 连接 AP 的过程中失败了。 那么请问,设备如何把黑名单中的AP设置依然可连接?

WangShuoran commented 1 year ago

一个新问题:在手动通过esp_wifi_disconnect()或esp_wifi_stop()关闭WIFI连接,会不会发送DHCP的DHCPRELEASE报文?