From ebbe32cc12ff459049bf9827e68feafebdda4b49 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 7 Jan 2021 21:20:35 +0100 Subject: [PATCH] stop bluetooth and adc if not used --- src/system.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/system.cpp b/src/system.cpp index 68b06f4b9..befadf872 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -105,7 +105,7 @@ void System::restart() { // saves all settings void System::wifi_reconnect() { - LOG_INFO(F("The wifi will reconnect...")); + LOG_INFO(F("Wifi reconnecting...")); Shell::loop_all(); delay(1000); // wait a second EMSESP::webSettingsService.save(); // local settings @@ -220,6 +220,20 @@ void System::init() { EMSESP::esp8266React.getWiFiSettingsService()->read([&](WiFiSettings & settings) { hostname(settings.hostname.c_str()); }); +// TODO power options +#if defined(ESP32) + // setCpuFrequencyMhz(160); // default is 240 + + // disable bluetooth + btStop(); + esp_bt_controller_disable(); + + // turn off ADC to save power if not needed + if (!analog_enabled_) { + adc_power_off(); + } +#endif + EMSESP::init_tx(); // start UART } @@ -335,8 +349,11 @@ void System::send_heartbeat() { doc["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3); doc["uptime_sec"] = uuid::get_uptime_sec(); doc["mqttfails"] = Mqtt::publish_fails(); - doc["txfails"] = EMSESP::txservice_.telegram_fail_count(); + doc["rxsent"] = EMSESP::rxservice_.telegram_count(); doc["rxfails"] = EMSESP::rxservice_.telegram_error_count(); + doc["txread"] = EMSESP::txservice_.telegram_read_count(); + doc["txwrite"] = EMSESP::txservice_.telegram_write_count(); + doc["txfails"] = EMSESP::txservice_.telegram_fail_count(); #ifndef EMSESP_STANDALONE doc["freemem"] = ESP.getFreeHeap(); #endif @@ -381,9 +398,32 @@ void System::set_led_speed(uint32_t speed) { led_monitor(); } -void System::reset_system_check() { +void System::init_wifi() { last_system_check_ = 0; // force the LED to go from fast flash to pulse send_heartbeat(); + +#if defined(ESP32) + // TODO wifi tx power + /* + WIFI_POWER_19_5dBm = 78,// 19.5dBm + WIFI_POWER_19dBm = 76,// 19dBm + WIFI_POWER_18_5dBm = 74,// 18.5dBm + WIFI_POWER_17dBm = 68,// 17dBm + WIFI_POWER_15dBm = 60,// 15dBm + WIFI_POWER_13dBm = 52,// 13dBm + WIFI_POWER_11dBm = 44,// 11dBm + WIFI_POWER_8_5dBm = 34,// 8.5dBm + WIFI_POWER_7dBm = 28,// 7dBm + WIFI_POWER_5dBm = 20,// 5dBm + WIFI_POWER_2dBm = 8,// 2dBm + WIFI_POWER_MINUS_1dBm = -4// -1dBm + */ + // wifi_power_t a1 = WiFi.getTxPower(); + // // bool ok = WiFi.setTxPower(WIFI_POWER_17dBm); + // bool ok = true; + // wifi_power_t a2 = WiFi.getTxPower(); + // LOG_INFO("Wifi Tx power was %d, is now %d, ok=%s", a1, a2, ok ? "ok" : "failed"); +#endif } // check health of system, done every few seconds @@ -832,7 +872,6 @@ bool System::check_upgrade() { mqttSettings.enabled = mqtt["enabled"]; mqttSettings.keepAlive = FACTORY_MQTT_KEEP_ALIVE; mqttSettings.cleanSession = FACTORY_MQTT_CLEAN_SESSION; - mqttSettings.maxTopicLength = FACTORY_MQTT_MAX_TOPIC_LENGTH; return StateUpdateResult::CHANGED; }, @@ -954,7 +993,6 @@ bool System::command_settings(const char * value, const int8_t id, JsonObject & node["client_id"] = settings.clientId; node["keep_alive"] = settings.keepAlive; node["clean_session"] = Helpers::render_boolean(s, settings.cleanSession); - node["max_topic_length"] = settings.maxTopicLength; node["publish_time_boiler"] = settings.publish_time_boiler; node["publish_time_thermostat"] = settings.publish_time_thermostat; node["publish_time_solar"] = settings.publish_time_solar;