diff --git a/lib/uuid-console/src/uuid/console.h b/lib/uuid-console/src/uuid/console.h index c1b1027d5..1143ba80f 100644 --- a/lib/uuid-console/src/uuid/console.h +++ b/lib/uuid-console/src/uuid/console.h @@ -892,7 +892,7 @@ class Shell : public std::enable_shared_from_this, public uuid::log::Hand * @since 0.1.0 */ size_t vprintf(const __FlashStringHelper * format, va_list ap); - void set_command_str(const __FlashStringHelper * str); + void set_command_str(const __FlashStringHelper * str); static const uuid::log::Logger logger_; /*!< uuid::log::Logger instance for shells. @since 0.1.0 */ static std::set> shells_; /*!< Registered running shells to be executed. @since 0.1.0 */ diff --git a/src/console.cpp b/src/console.cpp index 107ef4841..7658f3ea5 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -487,11 +487,9 @@ void Console::load_standard_commands(unsigned int context) { Test::run_test(shell, arguments.front()); } }); -#if defined(EMSESP_STANDALONE) EMSESPShell::commands->add_command(context, CommandFlags::USER, flash_string_vector{F("t")}, [](Shell & shell, const std::vector & arguments) { Test::run_test(shell, "default"); }); -#endif #endif EMSESPShell::commands->add_command( diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index b899a1260..c6698901e 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -30,6 +30,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const LOG_DEBUG(F("Adding new Boiler with device ID 0x%02X"), device_id); + System::show_mem("starting boiler regs"); // TODO remove debug + // the telegram handlers... register_telegram_type(0x10, F("UBAErrorMessage1"), false, [&](std::shared_ptr t) { process_UBAErrorMessage(t); }); register_telegram_type(0x11, F("UBAErrorMessage2"), false, [&](std::shared_ptr t) { process_UBAErrorMessage(t); }); @@ -54,6 +56,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_telegram_type(0x494, F("UBAEnergySupplied"), false, [&](std::shared_ptr t) { process_UBAEnergySupplied(t); }); register_telegram_type(0x495, F("UBAInformation"), false, [&](std::shared_ptr t) { process_UBAInformation(t); }); + EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) + EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) + EMSESP::send_read_request(0x15, device_id); // read maintenace data on start (only published on change) + + System::show_mem("after telegram type reg"); // TODO remove debug + // MQTT commands for boiler topic register_mqtt_cmd(F("comfort"), [&](const char * value, const int8_t id) { return set_warmwater_mode(value, id); }); register_mqtt_cmd(F("wwactivated"), [&](const char * value, const int8_t id) { return set_warmwater_activated(value, id); }); @@ -73,15 +81,124 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_mqtt_cmd(F("burnperiod"), [&](const char * value, const int8_t id) { return set_burn_period(value, id); }); register_mqtt_cmd(F("pumpdelay"), [&](const char * value, const int8_t id) { return set_pump_delay(value, id); }); // register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); - register_mqtt_cmd(F("maintenance"), [&](const char * value, const int8_t id) { return set_maintenance(value, id); }); - EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) - EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) - EMSESP::send_read_request(0x15, device_id); // read maintenace data on start (only published on change) + System::show_mem("after mqtt cmd reg"); // TODO remove debug // add values + // init_devicevalues(30); // TODO reserve mem + + // main - boiler_data topic + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &heatingActive_, DeviceValueType::BOOL, {}, F("heatingActive"), F("Heating active"), DeviceValueUOM::NONE); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &tapwaterActive_, DeviceValueType::BOOL, {}, F("tapwaterActive"), F("Warm water/DHW active"), DeviceValueUOM::NONE); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &selFlowTemp_, DeviceValueType::UINT, {}, F("selFlowTemp"), F("Selected flow temperature"), DeviceValueUOM::DEGREES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &selBurnPow_, DeviceValueType::UINT, {}, F("selBurnPow"), F("Burner selected max power"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpMod_, DeviceValueType::UINT, {}, F("pumpMod"), F("Pump modulation"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpMod2_, DeviceValueType::UINT, {}, F("pumpMod2"), F("Heat pump modulation"), DeviceValueUOM::PERCENT); + + register_device_value(TAG_BOILER_DATA, + &outdoorTemp_, + DeviceValueType::SHORT, + flash_string_vector{F("10")}, + F("outdoorTemp"), + F("Outside temperature"), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &curFlowTemp_, + DeviceValueType::USHORT, + flash_string_vector{F("10")}, + F("curFlowTemp"), + F("Current flow temperature"), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &retTemp_, + DeviceValueType::USHORT, + flash_string_vector{F("10")}, + F("retTemp"), + F("Return temperature"), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &switchTemp_, + DeviceValueType::USHORT, + flash_string_vector{F("10")}, + F("switchTemp"), + F("Mixing switch temperature"), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &sysPress_, + DeviceValueType::UINT, + flash_string_vector{F("10")}, + F("sysPress"), + F("System pressure"), + DeviceValueUOM::BAR); + register_device_value(TAG_BOILER_DATA, + &boilTemp_, + DeviceValueType::USHORT, + flash_string_vector{F("10")}, + F("boilTemp"), + F("Max boiler temperature"), + DeviceValueUOM::DEGREES); + register_device_value(TAG_BOILER_DATA, + &exhaustTemp_, + DeviceValueType::USHORT, + flash_string_vector{F("10")}, + F("exhaustTemp"), + F("Exhaust temperature"), + DeviceValueUOM::DEGREES); + + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnGas_, DeviceValueType::BOOL, {}, F("burnGas"), F("Gas"), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &flameCurr_, DeviceValueType::USHORT, {F("10")}, F("flameCurr"), F("Flame current"), DeviceValueUOM::UA); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &heatPump_, DeviceValueType::BOOL, {}, F("heatPump"), F("Heat pump"), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &fanWork_, DeviceValueType::BOOL, {}, F("fanWork"), F("Fan"), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &ignWork_, DeviceValueType::BOOL, {}, F("ignWork"), F("Ignition"), DeviceValueUOM::NONE); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &heatingActivated_, DeviceValueType::BOOL, {}, F("heatingActivated"), F("Heating activated"), DeviceValueUOM::NONE); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &heatingTemp_, DeviceValueType::UINT, {}, F("heatingTemp"), F("Heating temperature"), DeviceValueUOM::DEGREES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &pumpModMax_, DeviceValueType::UINT, {}, F("pumpModMax"), F("Burner pump max power"), DeviceValueUOM::PERCENT); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &pumpModMin_, DeviceValueType::UINT, {}, F("pumpModMin"), F("Burner pump min power"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpDelay_, DeviceValueType::UINT, {}, F("pumpDelay"), F("Pump delay"), DeviceValueUOM::MINUTES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &burnMinPeriod_, DeviceValueType::UINT, {}, F("burnMinPeriod"), F("Burner min period"), DeviceValueUOM::MINUTES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnMinPower_, DeviceValueType::UINT, {}, F("burnMinPower"), F("Burner min power"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnMaxPower_, DeviceValueType::UINT, {}, F("burnMaxPower"), F("Burner max power"), DeviceValueUOM::PERCENT); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &boilHystOn_, DeviceValueType::INT, {}, F("boilHystOn"), F("Hysteresis on temperature"), DeviceValueUOM::DEGREES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &boilHystOff_, DeviceValueType::INT, {}, F("boilHystOff"), F("Hysteresis off temperature"), DeviceValueUOM::DEGREES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &setFlowTemp_, DeviceValueType::UINT, {}, F("setFlowTemp"), F("Set flow temperature"), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &setBurnPow_, DeviceValueType::UINT, {}, F("setBurnPow"), F("Burner set power"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &curBurnPow_, DeviceValueType::UINT, {}, F("curBurnPow"), F("Burner current power"), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnStarts_, DeviceValueType::ULONG, {}, F("burnStarts"), F("Burner # starts"), DeviceValueUOM::NONE); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &burnWorkMin_, DeviceValueType::TIME, {}, F("burnWorkMin"), F("Total burner operating time"), DeviceValueUOM::MINUTES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &heatWorkMin_, DeviceValueType::TIME, {}, F("heatWorkMin"), F("Total heat operating time"), DeviceValueUOM::MINUTES); + register_device_value( + DeviceValueTAG::TAG_BOILER_DATA, &UBAuptime_, DeviceValueType::TIME, {}, F("UBAuptime"), F("Total UBA operating time"), DeviceValueUOM::MINUTES); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &lastCode_, DeviceValueType::TEXT, {}, F("lastCode"), F("Last error code"), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &serviceCode_, DeviceValueType::TEXT, {}, F("serviceCode"), F("Service code"), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &serviceCodeNumber_, + DeviceValueType::USHORT, + {}, + F("serviceCodeNumber"), + F("Service code number"), + DeviceValueUOM::NONE); + + System::show_mem("after device value reg"); // TODO remove debug + +#ifdef EMSESP_FORCE_SERIAL + return; // TODO remove early exit +#endif + // ww - boiler_data_ww topic register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wWSelTemp_, @@ -215,108 +332,6 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueTAG::TAG_BOILER_DATA_WW, &wWStarts2_, DeviceValueType::ULONG, {}, F("wWStarts2"), F("Warm Water # starts (control)"), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wWWorkM_, DeviceValueType::TIME, {}, F("wWWorkM"), F("Warm Water active time"), DeviceValueUOM::MINUTES); - // main - boiler_data topic - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &heatingActive_, DeviceValueType::BOOL, {}, F("heatingActive"), F("Heating active"), DeviceValueUOM::NONE); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &tapwaterActive_, DeviceValueType::BOOL, {}, F("tapwaterActive"), F("Warm water/DHW active"), DeviceValueUOM::NONE); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &selFlowTemp_, DeviceValueType::UINT, {}, F("selFlowTemp"), F("Selected flow temperature"), DeviceValueUOM::DEGREES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &selBurnPow_, DeviceValueType::UINT, {}, F("selBurnPow"), F("Burner selected max power"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpMod_, DeviceValueType::UINT, {}, F("pumpMod"), F("Pump modulation"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpMod2_, DeviceValueType::UINT, {}, F("pumpMod2"), F("Heat pump modulation"), DeviceValueUOM::PERCENT); - register_device_value(TAG_BOILER_DATA, - &outdoorTemp_, - DeviceValueType::SHORT, - flash_string_vector{F("10")}, - F("outdoorTemp"), - F("Outside temperature"), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, - &curFlowTemp_, - DeviceValueType::USHORT, - flash_string_vector{F("10")}, - F("curFlowTemp"), - F("Current flow temperature"), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, - &retTemp_, - DeviceValueType::USHORT, - flash_string_vector{F("10")}, - F("retTemp"), - F("Return temperature"), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, - &switchTemp_, - DeviceValueType::USHORT, - flash_string_vector{F("10")}, - F("switchTemp"), - F("Mixing switch temperature"), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, - &sysPress_, - DeviceValueType::UINT, - flash_string_vector{F("10")}, - F("sysPress"), - F("System pressure"), - DeviceValueUOM::BAR); - register_device_value(TAG_BOILER_DATA, - &boilTemp_, - DeviceValueType::USHORT, - flash_string_vector{F("10")}, - F("boilTemp"), - F("Max boiler temperature"), - DeviceValueUOM::DEGREES); - register_device_value(TAG_BOILER_DATA, - &exhaustTemp_, - DeviceValueType::USHORT, - flash_string_vector{F("10")}, - F("exhaustTemp"), - F("Exhaust temperature"), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnGas_, DeviceValueType::BOOL, {}, F("burnGas"), F("Gas"), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &flameCurr_, DeviceValueType::USHORT, {F("10")}, F("flameCurr"), F("Flame current"), DeviceValueUOM::UA); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &heatPump_, DeviceValueType::BOOL, {}, F("heatPump"), F("Heat pump"), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &fanWork_, DeviceValueType::BOOL, {}, F("fanWork"), F("Fan"), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &ignWork_, DeviceValueType::BOOL, {}, F("ignWork"), F("Ignition"), DeviceValueUOM::NONE); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &heatingActivated_, DeviceValueType::BOOL, {}, F("heatingActivated"), F("Heating activated"), DeviceValueUOM::NONE); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &heatingTemp_, DeviceValueType::UINT, {}, F("heatingTemp"), F("Heating temperature"), DeviceValueUOM::DEGREES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &pumpModMax_, DeviceValueType::UINT, {}, F("pumpModMax"), F("Burner pump max power"), DeviceValueUOM::PERCENT); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &pumpModMin_, DeviceValueType::UINT, {}, F("pumpModMin"), F("Burner pump min power"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &pumpDelay_, DeviceValueType::UINT, {}, F("pumpDelay"), F("Pump delay"), DeviceValueUOM::MINUTES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &burnMinPeriod_, DeviceValueType::UINT, {}, F("burnMinPeriod"), F("Burner min period"), DeviceValueUOM::MINUTES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnMinPower_, DeviceValueType::UINT, {}, F("burnMinPower"), F("Burner min power"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnMaxPower_, DeviceValueType::UINT, {}, F("burnMaxPower"), F("Burner max power"), DeviceValueUOM::PERCENT); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &boilHystOn_, DeviceValueType::INT, {}, F("boilHystOn"), F("Hysteresis on temperature"), DeviceValueUOM::DEGREES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &boilHystOff_, DeviceValueType::INT, {}, F("boilHystOff"), F("Hysteresis off temperature"), DeviceValueUOM::DEGREES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &setFlowTemp_, DeviceValueType::UINT, {}, F("setFlowTemp"), F("Set flow temperature"), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &setBurnPow_, DeviceValueType::UINT, {}, F("setBurnPow"), F("Burner set power"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &curBurnPow_, DeviceValueType::UINT, {}, F("curBurnPow"), F("Burner current power"), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &burnStarts_, DeviceValueType::ULONG, {}, F("burnStarts"), F("Burner # starts"), DeviceValueUOM::NONE); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &burnWorkMin_, DeviceValueType::TIME, {}, F("burnWorkMin"), F("Total burner operating time"), DeviceValueUOM::MINUTES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &heatWorkMin_, DeviceValueType::TIME, {}, F("heatWorkMin"), F("Total heat operating time"), DeviceValueUOM::MINUTES); - register_device_value( - DeviceValueTAG::TAG_BOILER_DATA, &UBAuptime_, DeviceValueType::TIME, {}, F("UBAuptime"), F("Total UBA operating time"), DeviceValueUOM::MINUTES); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &lastCode_, DeviceValueType::TEXT, {}, F("lastCode"), F("Last error code"), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &serviceCode_, DeviceValueType::TEXT, {}, F("serviceCode"), F("Service code"), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA, - &serviceCodeNumber_, - DeviceValueType::USHORT, - {}, - F("serviceCodeNumber"), - F("Service code number"), - DeviceValueUOM::NONE); - // info - boiler_data_info topic register_device_value(DeviceValueTAG::TAG_BOILER_DATA_INFO, &upTimeControl_, diff --git a/src/emsdevice.h b/src/emsdevice.h index 3eda4a1ac..f998091cd 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -351,6 +351,10 @@ class EMSdevice { }; const std::vector devicevalues() const; + void init_devicevalues(uint8_t size) { + devicevalues_.reserve(size); + } + private: uint8_t unique_id_; uint8_t device_type_ = DeviceType::SYSTEM; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 616daa014..f4798a22d 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -758,6 +758,24 @@ void EMSESP::show_devices(uuid::console::Shell & shell) { emsdevice->show_telegram_handlers(shell); // emsdevice->show_mqtt_handlers(shell); shell.println(); + +#if defined(EMSESP_DEBUG) + // TODO debug stuff - count size of objects + size_t total_s = 0; + uint8_t count = 0; + for (const auto & dv : emsdevice->devicevalues()) { + size_t s = sizeof(dv); + if (dv.full_name) { + shell.printfln("[%s] %d", uuid::read_flash_string(dv.full_name).c_str(), s); + } else { + shell.printfln("[%s]* %d", uuid::read_flash_string(dv.short_name).c_str(), s); + } + total_s += s; + count++; + } + shell.printfln("Total size of %d elements: %d", count, total_s); + shell.println(); +#endif } } } @@ -785,7 +803,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std:: // find the name and flags in our database for (const auto & device : device_library_) { if (device.product_id == product_id) { - emsdevice->name(uuid::read_flash_string(device.name)); + emsdevice->name(std::move(uuid::read_flash_string(device.name))); emsdevice->add_flags(device.flags); } } diff --git a/src/system.cpp b/src/system.cpp index a2055a097..4d420fc70 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -192,6 +192,10 @@ void System::start() { #endif } +#if defined(EMSESP_DEBUG) + show_mem("Startup"); +#endif + // print boot message EMSESP::esp8266React.getWiFiSettingsService()->read( [&](WiFiSettings & wifiSettings) { LOG_INFO(F("System %s booted (EMS-ESP version %s)"), wifiSettings.hostname.c_str(), EMSESP_APP_VERSION); }); @@ -300,7 +304,19 @@ void System::loop() { void System::show_mem(const char * note) { #if defined(ESP8266) #if defined(EMSESP_DEBUG) - LOG_INFO(F("(%s) Free heap: %d%% (%lu), frag:%u%%"), note, free_mem(), (unsigned long)ESP.getFreeHeap(), ESP.getHeapFragmentation()); + static uint32_t old_free_heap = 0; + static uint8_t old_heap_frag = 0; + uint32_t free_heap = ESP.getFreeHeap(); + uint8_t heap_frag = ESP.getHeapFragmentation(); + LOG_INFO(F("(%s) Free heap: %d%% (%lu) (~%lu), frag:%d%% (~%d)"), + note, + free_mem(), + free_heap, + (uint32_t)abs(free_heap - old_free_heap), + heap_frag, + (uint8_t)abs(heap_frag - old_heap_frag)); + old_free_heap = free_heap; + old_heap_frag = heap_frag; #endif #endif } diff --git a/src/test/test.h b/src/test/test.h index f5df61917..1ed36f6eb 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -43,8 +43,8 @@ namespace emsesp { // #define EMSESP_TEST_DEFAULT "solar" // #define EMSESP_TEST_DEFAULT "mixer" // #define EMSESP_TEST_DEFAULT "web" -#define EMSESP_TEST_DEFAULT "general" -// #define EMSESP_TEST_DEFAULT "boiler" +// #define EMSESP_TEST_DEFAULT "general" +#define EMSESP_TEST_DEFAULT "boiler" class Test { public: