diff --git a/platformio.ini b/platformio.ini
index 1f962a8d9..2033b2faf 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -185,7 +185,7 @@ build_type = debug ; I'm debugging with ICE a lot now
build_flags =
${arduino_base.build_flags} -Wno-unused-variable
-Isrc/nrf52
- -Isdk-nrfxlib/crypto/nrf_oberon/include -Lsdk-nrfxlib/crypto/nrf_oberon/lib/cortex-m4/hard-float/ -lliboberon_3.0.3
+ -Isdk-nrfxlib/crypto/nrf_oberon/include -Lsdk-nrfxlib/crypto/nrf_oberon/lib/cortex-m4/hard-float/ -lliboberon_3.0.7
;-DCFG_DEBUG=3
src_filter =
${arduino_base.src_filter} - - - -
diff --git a/src/mesh/http/WebServer.cpp b/src/mesh/http/WebServer.cpp
index 1c1b5a825..193508b7e 100644
--- a/src/mesh/http/WebServer.cpp
+++ b/src/mesh/http/WebServer.cpp
@@ -80,6 +80,8 @@ bool isCertReady = 0;
uint32_t timeSpeedUp = 0;
+uint32_t numberOfRequests = 0;
+
// We need to specify some content-type mapping, so the resources get delivered with the
// right content type and are displayed correctly in the browser
char contentTypes[][2][32] = {{".txt", "text/plain"}, {".html", "text/html"},
@@ -337,6 +339,8 @@ void middlewareSpeedUp240(HTTPRequest *req, HTTPResponse *res, std::function next)
@@ -355,6 +359,8 @@ void middlewareSpeedUp160(HTTPRequest *req, HTTPResponse *res, std::functionprintln("\"wifi\": {");
+ res->printf("\"web_request_count\": %d,\n", numberOfRequests);
res->println("\"rssi\": " + String(WiFi.RSSI()) + ",");
if (radioConfig.preferences.wifi_ap_mode || isSoftAPForced()) {
@@ -1169,8 +1176,18 @@ void handleReport(HTTPRequest *req, HTTPResponse *res)
res->println("},");
+ res->println("\"memory\": {");
+ res->printf("\"heap_total\": %d,\n", ESP.getHeapSize());
+ res->printf("\"heap_free\": %d,\n", ESP.getFreeHeap());
+ res->printf("\"psram_total\": %d,\n", ESP.getPsramSize());
+ res->printf("\"psram_free\": %d,\n", ESP.getFreePsram());
+ res->println("\"spiffs_total\" : " + String(SPIFFS.totalBytes()) + ",");
+ res->println("\"spiffs_used\" : " + String(SPIFFS.usedBytes()) + ",");
+ res->println("\"spiffs_free\" : " + String(SPIFFS.totalBytes() - SPIFFS.usedBytes()));
+ res->println("},");
+
res->println("\"power\": {");
-#define BoolToString(x) ((x)?"true":"false")
+#define BoolToString(x) ((x) ? "true" : "false")
res->printf("\"battery_percent\": %u,\n", powerStatus->getBatteryChargePercent());
res->printf("\"battery_voltage_mv\": %u,\n", powerStatus->getBatteryVoltageMv());
res->printf("\"has_battery\": %s,\n", BoolToString(powerStatus->getHasBattery()));
diff --git a/src/plugins/SerialPlugin.cpp b/src/plugins/SerialPlugin.cpp
index 236b29f94..7e764ee8b 100644
--- a/src/plugins/SerialPlugin.cpp
+++ b/src/plugins/SerialPlugin.cpp
@@ -66,6 +66,17 @@ char serialStringChar[Constants_DATA_PAYLOAD_LEN];
int32_t SerialPlugin::runOnce()
{
#ifndef NO_ESP32
+
+ /*
+ Uncomment the preferences below if you want to use the plugin
+ without having to configure it from the PythonAPI or WebUI.
+ */
+
+ // radioConfig.preferences.serialplugin_enabled = 1;
+ // radioConfig.preferences.serialplugin_rxd = 35;
+ // radioConfig.preferences.serialplugin_txd = 15;
+ // radioConfig.preferences.serialplugin_timeout = 1000;
+
if (radioConfig.preferences.serialplugin_enabled) {
if (firstTime) {
@@ -147,8 +158,8 @@ bool SerialPluginRadio::handleReceived(const MeshPacket &mp)
if (radioConfig.preferences.serialplugin_enabled) {
auto &p = mp.decoded.data;
- // DEBUG_MSG("Received text msg self=0x%0x, from=0x%0x, to=0x%0x, id=%d, msg=%.*s\n", nodeDB.getNodeNum(),
- // mp.from, mp.to, mp.id, p.payload.size, p.payload.bytes);
+ // DEBUG_MSG("Received text msg self=0x%0x, from=0x%0x, to=0x%0x, id=%d, msg=%.*s\n",
+ // nodeDB.getNodeNum(), mp.from, mp.to, mp.id, p.payload.size, p.payload.bytes);
if (mp.from == nodeDB.getNodeNum()) {