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 # CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5) 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) include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(wellhub) project(wellhub)

View File

@ -36,7 +36,12 @@ CommandProcessor * App::getCommandProcessor()
void App::init() void App::init()
{ {
#pragma message(WH_VERSION)
ESP_LOGW(TAG, "Starting the app..."); 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_led = new Led(LED_PIN);
m_wifi = new Wifi(); m_wifi = new Wifi();
@ -48,6 +53,17 @@ void App::init()
bool needs_provision = true; 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) if(SETTINGS.wifi.num > 0)
{ {
// try connecting // try connecting

View File

@ -152,13 +152,14 @@ void ProvisionSoftAP::start(const char * ssid, const char * password)
m_rwriter->appendf("num:%d|", num_networks); m_rwriter->appendf("num:%d|", num_networks);
for (int n = 0; n < num_networks; n++) 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) if(n != num_networks - 1)
m_rwriter->append('|'); m_rwriter->append('|');
} }
ESP_LOGI(TAG, "Sending '%s'", m_rwriter->getBuffer()); ESP_LOGI(TAG, "Sending '%s'", m_rwriter->getBuffer());
m_webSocket->textAll(m_rwriter->getBuffer()); m_webSocket->textAll(m_rwriter->getBuffer());
vTaskDelay(550); vTaskDelay(1550);
} }
if(m_tryConnect) if(m_tryConnect)
@ -288,6 +289,8 @@ void ProvisionSoftAP::tryConnect()
waitBufferEmpty(); waitBufferEmpty();
ESP_LOGI(TAG, "restarting..."); ESP_LOGI(TAG, "restarting...");
WiFi.disconnect();
WiFi.mode(WIFI_MODE_NULL);
esp_restart(); esp_restart();
} }
WiFi.mode(WIFI_MODE_AP); 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); ESP_LOGI(TAG, "Connecting to %s...", SETTINGS.wifi.entry[index].ssid);
delay(1000);
// set hostname // set hostname
uint8_t mac[6]; uint8_t mac[6];
WiFi.macAddress(mac); WiFi.macAddress(mac);
@ -112,6 +114,9 @@ Wifi::WIFI_STATUS Wifi::connectTo(int index)
ESP_LOGI(TAG, "Connected"); ESP_LOGI(TAG, "Connected");
return WIFI_STATUS::CONNECTED; return WIFI_STATUS::CONNECTED;
} }
delay(1000);
WiFi.disconnect(); WiFi.disconnect();
ESP_LOGW(TAG, "Failed to connect"); ESP_LOGW(TAG, "Failed to connect");
return WIFI_STATUS::NOT_CONNECTED; return WIFI_STATUS::NOT_CONNECTED;
@ -121,7 +126,10 @@ int Wifi::start()
{ {
if(m_task == nullptr) 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); 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; return 0;
@ -154,7 +162,7 @@ Wifi::WIFI_STATUS Wifi::startConnecting()
if(SETTINGS.wifi.num == 1) if(SETTINGS.wifi.num == 1)
{ {
SETTINGS.wifi.selected = 0; 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) if(connectTo(SETTINGS.wifi.selected) == WIFI_STATUS::CONNECTED)
return WIFI_STATUS::CONNECTED; return WIFI_STATUS::CONNECTED;