fix: trim C3 mqtt firmware size and make web panel optional

Este commit está contenido en:
Jared Dohrman
2026-04-09 15:14:06 +10:00
padre e8377c2dfb
commit 238e19d9b7
Se han modificado 3 ficheros con 90 adiciones y 43 borrados
+35 -2
Ver fichero
@@ -1,6 +1,8 @@
#include "MQTTUplink.h"
#include "MQTTCaCerts.h"
#include "WebPanelCert.h"
#if defined(WITH_WEB_PANEL) && WITH_WEB_PANEL
#include "WebPanelCert.h"
#endif
#ifdef WITH_MQTT_UPLINK
@@ -75,6 +77,7 @@ void freeScratchBuffer(void* ptr) {
}
}
#if WITH_WEB_PANEL
const char kWebPanelHtml[] PROGMEM = R"HTML(
<!doctype html>
<html>
@@ -418,6 +421,7 @@ const char kWebPanelHtml[] PROGMEM = R"HTML(
</body>
</html>
)HTML";
#endif
const char* getWifiStateLabel(const MQTTPrefs& prefs, bool wifi_started) {
if (prefs.wifi_ssid[0] == 0) {
@@ -447,10 +451,16 @@ MQTTUplink::MQTTUplink(mesh::RTCClock& rtc, mesh::LocalIdentity& identity)
: _fs(nullptr), _rtc(&rtc), _identity(&identity), _running(false), _wifi_started(false), _sntp_started(false),
_have_time_sync(false), _wifi_sta_started_at(0), _last_wifi_attempt(0), _last_status_publish(0), _last_status{},
_node_name(nullptr),
_web_runner(nullptr), _web_server(nullptr) {
_web_runner(nullptr)
#if WITH_WEB_PANEL
, _web_server(nullptr)
#endif
{
memset(_device_id, 0, sizeof(_device_id));
#if WITH_WEB_PANEL
memset(_web_token, 0, sizeof(_web_token));
_web_route_context.self = this;
#endif
MQTTPrefsStore::setDefaults(_prefs);
for (size_t i = 0; i < 3; ++i) {
memset(&_brokers[i], 0, sizeof(_brokers[i]));
@@ -837,6 +847,7 @@ void MQTTUplink::handleMqttEvent(void* handler_args, esp_event_base_t, int32_t e
}
}
#if WITH_WEB_PANEL
esp_err_t MQTTUplink::handleWebIndex(httpd_req_t* req) {
auto* ctx = static_cast<WebRouteContext*>(req->user_ctx);
if (ctx == nullptr || ctx->self == nullptr) {
@@ -846,7 +857,9 @@ esp_err_t MQTTUplink::handleWebIndex(httpd_req_t* req) {
httpd_resp_set_hdr(req, "Cache-Control", "no-store");
return httpd_resp_send(req, kWebPanelHtml, HTTPD_RESP_USE_STRLEN);
}
#endif
#if WITH_WEB_PANEL
esp_err_t MQTTUplink::handleWebLogin(httpd_req_t* req) {
auto* ctx = static_cast<WebRouteContext*>(req->user_ctx);
if (ctx == nullptr || ctx->self == nullptr || ctx->self->_web_runner == nullptr) {
@@ -876,7 +889,9 @@ esp_err_t MQTTUplink::handleWebLogin(httpd_req_t* req) {
httpd_resp_set_hdr(req, "Cache-Control", "no-store");
return httpd_resp_sendstr(req, ctx->self->_web_token);
}
#endif
#if WITH_WEB_PANEL
esp_err_t MQTTUplink::handleWebCommand(httpd_req_t* req) {
auto* ctx = static_cast<WebRouteContext*>(req->user_ctx);
if (ctx == nullptr || ctx->self == nullptr || ctx->self->_web_runner == nullptr) {
@@ -909,7 +924,9 @@ esp_err_t MQTTUplink::handleWebCommand(httpd_req_t* req) {
freeScratchBuffer(reply);
return rc;
}
#endif
#if WITH_WEB_PANEL
bool MQTTUplink::readRequestBody(httpd_req_t* req, char* buffer, size_t buffer_size) const {
if (req == nullptr || buffer == nullptr || buffer_size == 0 || req->content_len <= 0 ||
req->content_len >= static_cast<int>(buffer_size)) {
@@ -998,6 +1015,10 @@ void MQTTUplink::ensureWebServer() {
}
startWebServer();
}
#else
void MQTTUplink::ensureWebServer() { }
void MQTTUplink::stopWebServer() { }
#endif
void MQTTUplink::ensureWifi() {
if (_prefs.wifi_ssid[0] == 0) {
@@ -1178,7 +1199,9 @@ void MQTTUplink::begin(FILESYSTEM* fs) {
_fs = fs;
MQTTPrefsStore::load(_fs, _prefs);
refreshIdentityStrings();
#if WITH_WEB_PANEL
refreshWebToken();
#endif
_running = true;
_last_status_publish = millis();
MQTT_LOG("begin iata=%s enabled_mask=0x%02X wifi_ssid=%s", _prefs.iata, _prefs.enabled_mask, _prefs.wifi_ssid);
@@ -1301,6 +1324,7 @@ void MQTTUplink::formatStatusReply(char* reply, size_t reply_size) const {
}
void MQTTUplink::formatWebStatusReply(char* reply, size_t reply_size) const {
#if WITH_WEB_PANEL
if (_web_runner == nullptr) {
snprintf(reply, reply_size, "> web:off");
return;
@@ -1318,6 +1342,10 @@ void MQTTUplink::formatWebStatusReply(char* reply, size_t reply_size) const {
snprintf(reply, reply_size, "> web:up url:https://%s/ auth:%s", WiFi.localIP().toString().c_str(),
_web_token[0] ? "unlocked" : "locked");
#else
(void)reply_size;
snprintf(reply, reply_size, "> web:unsupported");
#endif
}
bool MQTTUplink::setEndpointEnabled(uint8_t bit, bool enabled) {
@@ -1355,6 +1383,7 @@ bool MQTTUplink::setTxEnabled(bool enabled) {
}
bool MQTTUplink::setWebEnabled(bool enabled) {
#if WITH_WEB_PANEL
_prefs.web_enabled = enabled ? 1 : 0;
bool ok = savePrefs();
if (_prefs.web_enabled == 0) {
@@ -1363,6 +1392,10 @@ bool MQTTUplink::setWebEnabled(bool enabled) {
ensureWebServer();
}
return ok;
#else
(void)enabled;
return false;
#endif
}
bool MQTTUplink::setIata(const char* iata) {
+14 -1
Ver fichero
@@ -11,7 +11,12 @@
#if defined(ESP_PLATFORM)
#include <WiFi.h>
#include <esp_https_server.h>
#if !defined(WITH_WEB_PANEL)
#define WITH_WEB_PANEL 1
#endif
#if WITH_WEB_PANEL
#include <esp_https_server.h>
#endif
#include <mqtt_client.h>
#endif
@@ -105,9 +110,11 @@ private:
char offline_payload[256];
};
#if WITH_WEB_PANEL
struct WebRouteContext {
MQTTUplink* self;
};
#endif
#endif
FILESYSTEM* _fs;
@@ -133,20 +140,26 @@ private:
static const BrokerSpec kBrokerSpecs[3];
BrokerState _brokers[3];
#if WITH_WEB_PANEL
httpd_handle_t _web_server;
char _web_token[33];
WebRouteContext _web_route_context;
#endif
static void handleMqttEvent(void* handler_args, esp_event_base_t base, int32_t event_id, void* event_data);
#if WITH_WEB_PANEL
static esp_err_t handleWebIndex(httpd_req_t* req);
static esp_err_t handleWebLogin(httpd_req_t* req);
static esp_err_t handleWebCommand(httpd_req_t* req);
#endif
void ensureWebServer();
void stopWebServer();
bool startWebServer();
#if WITH_WEB_PANEL
bool isWebAuthorized(httpd_req_t* req) const;
bool readRequestBody(httpd_req_t* req, char* buffer, size_t buffer_size) const;
void refreshWebToken();
#endif
void ensureWifi();
void updateTimeSync();
bool hasEnabledBroker() const;
+41 -40
Ver fichero
@@ -8,7 +8,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -33,7 +33,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -54,7 +54,7 @@ build_flags =
-D PERSISTANT_GPS=1
-D ENV_SKIP_GPS_DETECT=1
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -79,7 +79,8 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
-D WITH_WEB_PANEL=0
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -100,7 +101,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -123,7 +124,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -146,7 +147,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -169,7 +170,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -194,7 +195,7 @@ build_flags =
-D MAX_NEIGHBOURS=50
-D PERSISTANT_GPS=1
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -217,7 +218,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -243,7 +244,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -269,7 +270,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -287,7 +288,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -310,7 +311,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -334,7 +335,7 @@ build_flags =
-D MESH_PACKET_LOGGING=1
-D SX126X_RX_BOOSTED_GAIN=1
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -357,7 +358,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -387,7 +388,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -413,7 +414,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -433,7 +434,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -458,7 +459,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -483,7 +484,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -508,7 +509,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -533,7 +534,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -557,7 +558,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -581,7 +582,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -607,7 +608,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -628,7 +629,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -649,7 +650,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -670,7 +671,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -689,7 +690,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -714,7 +715,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -740,7 +741,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=8
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -762,7 +763,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=8
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -781,7 +782,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -810,7 +811,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -835,7 +836,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -856,7 +857,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -881,7 +882,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -906,7 +907,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'
@@ -931,7 +932,7 @@ build_flags =
-D ADMIN_PASSWORD='"password"'
-D MAX_NEIGHBOURS=50
-D WITH_MQTT_UPLINK=1
-D MQTT_DEBUG=1
; -D MQTT_DEBUG=1
-D WIFI_SSID='"myssid"'
-D WIFI_PWD='"mypwd"'
-D MQTT_DEFAULT_IATA='"MEL"'