diff --git a/CMakeLists.txt b/CMakeLists.txt index d56e4e5..5cc8305 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/main/App.cpp b/main/App.cpp index 6fcf808..f98a3d9 100644 --- a/main/App.cpp +++ b/main/App.cpp @@ -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 diff --git a/main/ProvisionSoftAP.cpp b/main/ProvisionSoftAP.cpp index 0921085..dacbb33 100755 --- a/main/ProvisionSoftAP.cpp +++ b/main/ProvisionSoftAP.cpp @@ -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); diff --git a/main/Wifi.cpp b/main/Wifi.cpp index 2eb037f..cb9cfe1 100644 --- a/main/Wifi.cpp +++ b/main/Wifi.cpp @@ -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;