added delay and increaset retry count for connecting to wifi, WiFi.SSID(n) is no longer corrupted. Root cause unknown

This commit is contained in:
Miro Zmrzli 2024-07-28 15:48:46 -07:00
parent de8b89fd19
commit cbe99e6f79
4 changed files with 35 additions and 4 deletions

View File

@ -2,6 +2,10 @@
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
execute_process(COMMAND git describe --always --tags --dirty
OUTPUT_VARIABLE WH_VERSION
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
add_definitions("-DWH_VERSION=\"${WH_VERSION}\"")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(wellhub)

View File

@ -36,7 +36,12 @@ CommandProcessor * App::getCommandProcessor()
void App::init()
{
#pragma message(WH_VERSION)
ESP_LOGW(TAG, "Starting the app...");
uint8_t mac[8];
esp_read_mac(mac, ESP_MAC_WIFI_STA);
ESP_LOGI(TAG, "mqtt_id: %s, wifi mac: %02x:%02x:%02x:%02x:%02x:%02x ...", SETTINGS.mqtt.device_id,
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
m_led = new Led(LED_PIN);
m_wifi = new Wifi();
@ -48,6 +53,17 @@ void App::init()
bool needs_provision = true;
#if 0
ESP_LOGI(TAG, "Scanning wifi networks...");
int num_networks = WiFi.scanNetworks(false, false, false, 0);
for(int n = 0; n < num_networks; n++)
{
ESP_LOGI(TAG, "%s, %d", WiFi.SSID(n).c_str(), WiFi.RSSI(n));
}
#endif
if(SETTINGS.wifi.num > 0)
{
// try connecting

View File

@ -152,13 +152,14 @@ void ProvisionSoftAP::start(const char * ssid, const char * password)
m_rwriter->appendf("num:%d|", num_networks);
for (int n = 0; n < num_networks; n++)
{
m_rwriter->appendf("%s,%d,%d", WiFi.SSID(n), WiFi.encryptionType(n) == WIFI_AUTH_OPEN ? 0 : 1, WiFi.RSSI(n));
ESP_LOGI(TAG, "'%s', %d", WiFi.SSID(n).c_str(), WiFi.RSSI(n));
m_rwriter->appendf("%s,%d,%d", WiFi.SSID(n).c_str(), WiFi.encryptionType(n) == WIFI_AUTH_OPEN ? 0 : 1, WiFi.RSSI(n));
if(n != num_networks - 1)
m_rwriter->append('|');
}
ESP_LOGI(TAG, "Sending '%s'", m_rwriter->getBuffer());
m_webSocket->textAll(m_rwriter->getBuffer());
vTaskDelay(550);
vTaskDelay(1550);
}
if(m_tryConnect)
@ -288,6 +289,8 @@ void ProvisionSoftAP::tryConnect()
waitBufferEmpty();
ESP_LOGI(TAG, "restarting...");
WiFi.disconnect();
WiFi.mode(WIFI_MODE_NULL);
esp_restart();
}
WiFi.mode(WIFI_MODE_AP);

View File

@ -94,6 +94,8 @@ Wifi::WIFI_STATUS Wifi::connectTo(int index)
ESP_LOGI(TAG, "Connecting to %s...", SETTINGS.wifi.entry[index].ssid);
delay(1000);
// set hostname
uint8_t mac[6];
WiFi.macAddress(mac);
@ -112,6 +114,9 @@ Wifi::WIFI_STATUS Wifi::connectTo(int index)
ESP_LOGI(TAG, "Connected");
return WIFI_STATUS::CONNECTED;
}
delay(1000);
WiFi.disconnect();
ESP_LOGW(TAG, "Failed to connect");
return WIFI_STATUS::NOT_CONNECTED;
@ -121,7 +126,10 @@ int Wifi::start()
{
if(m_task == nullptr)
{
ESP_LOGW(TAG, "Starting wifi...");
uint8_t mac[8];
esp_read_mac(mac, ESP_MAC_WIFI_STA);
ESP_LOGW(TAG, "Starting wifi, mac: %02x:%02x:%02x:%02x:%02x:%02x ...", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
m_task = TaskMgr::getInstance().createTask(std::bind(&Wifi::task, this), WIFI_TASK_NAME, WIFI_TASK_STACK_SIZE, WIFI_TASK_PRIORITY, WIFI_TASK_CORE);
}
return 0;
@ -154,7 +162,7 @@ Wifi::WIFI_STATUS Wifi::startConnecting()
if(SETTINGS.wifi.num == 1)
{
SETTINGS.wifi.selected = 0;
for(int n = 0; n < 3; n++)
for(int n = 0; n < 7; n++)
{
if(connectTo(SETTINGS.wifi.selected) == WIFI_STATUS::CONNECTED)
return WIFI_STATUS::CONNECTED;