1) Reduce the roam threshold to 5dBm to fix issues where a device might connect at -80dBM which is marginal operation, but would not roam to a -72dBm AP
2) Reduce the scan rate from 44 minutes to 5 minutes to accelerate network harmony
3) Arduino SDK was allowed to control re-connections which resulted in a de-authentication attack on teh WiFi AP. Explicitly disable with WiFi.setAutoReconnect(false);
4) Reduce WIFI_CHECK_SEC to 5, and Wifi.retry_init times to accommodate Tasmota dealing with retransmissions.
5) WifiBeginAfterScan: Save the last BSSID a connection attempt was made on. Should that error, pick the next strongest AP for the next attempt. Addresses situations where an AP has a high RSSI, but poor channel health due to it being overloaded.
6) WifiCheckIPAddrStatus: Error cases did not properly alternate between AP's, with some error cases geeting hug up where they did not initiate a reconnection so the device became non-responsive. Device now starts at Wifi.retry_init, tries to connect, does again at Wifi.retry_init/2, and then does a WifiConfig. Should no IP address be received, restart DHCP each second during this time.
Test Environment:
27 Tasmota devices
3 SonicWALL corporate AP's
Highly interfered 801.11n network