diff --git a/.github/workflows/build_fw.yml b/.github/workflows/build_fw.yml index a810aa7..1ebca20 100644 --- a/.github/workflows/build_fw.yml +++ b/.github/workflows/build_fw.yml @@ -94,6 +94,18 @@ jobs: bin/XZG_${{ steps.get_version.outputs.version }}.ota.bin bin/XZG_${{ steps.get_version.outputs.version }}.full.bin + - name: Send Telegram Notification about release + run: | + curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \ + -d chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \ + -d parse_mode="MarkdownV2" \ + -d message_thread_id=14 \ + -d text="[${{ steps.get_version.outputs.version }}](https://github.com/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.version }})" \ + -d link_preview_options='{ + "show_above_text": true, + "prefer_large_media": false + }' + - name: Checkout releases branch uses: actions/checkout@v3 with: diff --git a/bin/XZG_20240506.full.bin b/bin/XZG_20240507.full.bin similarity index 72% rename from bin/XZG_20240506.full.bin rename to bin/XZG_20240507.full.bin index a0d011f..28addeb 100644 Binary files a/bin/XZG_20240506.full.bin and b/bin/XZG_20240507.full.bin differ diff --git a/bin/XZG_20240506.ota.bin b/bin/XZG_20240507.ota.bin similarity index 71% rename from bin/XZG_20240506.ota.bin rename to bin/XZG_20240507.ota.bin index b9f1fd0..a6d0d48 100644 Binary files a/bin/XZG_20240506.ota.bin and b/bin/XZG_20240507.ota.bin differ diff --git a/lib/CCTools/src/CCTools.h b/lib/CCTools/src/CCTools.h index b8da1be..1f21f17 100644 --- a/lib/CCTools/src/CCTools.h +++ b/lib/CCTools/src/CCTools.h @@ -102,6 +102,10 @@ class CommandInterface { return "CC2652P"; } + else if (chip_id == 0x3102 && wafer_id == 0xBB41 && pg_rev == 0x3) + { + return "CC2652RB"; + } else { static char unknownDescription[50]; diff --git a/src/main.cpp b/src/main.cpp index 20abc13..81f26fd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,7 +16,7 @@ #include // NO SSL SUPPORT in current SDK -//#define ASYNC_TCP_SSL_ENABLED 1 +// #define ASYNC_TCP_SSL_ENABLED 1 #include "config.h" #include "web.h" @@ -138,7 +138,6 @@ void startServers(bool usb = false) } } - /* //not available now if (vpnCfg.hnEnable) { @@ -165,7 +164,6 @@ void handleTmrNetworkOverseer() if (WiFi.isConnected()) { LOGD("WIFI CONNECTED"); - startServers(); tmrNetworkOverseer.stop(); } else @@ -185,7 +183,6 @@ void handleTmrNetworkOverseer() if (vars.connectedEther) { LOGD("LAN CONNECTED"); - startServers(); tmrNetworkOverseer.stop(); } else @@ -247,7 +244,7 @@ void NetworkEvent(WiFiEvent_t event) LOGD("%s Connected", ethKey); break; case ARDUINO_EVENT_ETH_GOT_IP: // 22: // SYSTEM_EVENT_ETH_GOT_IP: - + startServers(); LOGI("%s MAC: %s, IP: %s, Mask: %s, Gw: %s, %dMbps", ethKey, ETH.macAddress().c_str(), ETH.localIP().toString().c_str(), @@ -278,7 +275,7 @@ void NetworkEvent(WiFiEvent_t event) } break; case ARDUINO_EVENT_WIFI_STA_GOT_IP: // SYSTEM_EVENT_STA_GOT_IP: - + startServers(); LOGI("%s MAC: %s, IP: %s, Mask: %s, Gw: %s", wifiKey, WiFi.macAddress().c_str(), WiFi.localIP().toString().c_str(), @@ -378,14 +375,13 @@ void connectWifi() } else { + WiFi.setHostname(systemCfg.hostname); LOGD("WiFi.mode(WIFI_STA)"); WiFi.mode(WIFI_STA); } delay(100); - WiFi.begin(networkCfg.wifiSsid, networkCfg.wifiPass); WiFi.setSleep(false); - LOGD("WiFi.begin"); if (!networkCfg.wifiDhcp) { @@ -394,8 +390,11 @@ void connectWifi() } else { + WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE, INADDR_NONE); LOGD("Try DHCP"); } + WiFi.begin(networkCfg.wifiSsid, networkCfg.wifiPass); + LOGD("WiFi.begin"); } else { @@ -430,7 +429,7 @@ void mDNS_start() { LOGD("mDNS responder started"); //----- WEB ------ - mDNS.addService(http, tcp, 80); + mDNS.addService(http, tcp, 80); //--zeroconf zha-- mDNS.addService(host, tcp, systemCfg.socketPort); mDNS.addServiceTxt(host, tcp, "version", "1.0"); @@ -452,13 +451,17 @@ void setupCoordinatorMode() String workModeString = systemCfg.workMode ? "USB" : "Network"; LOGI("%s", workModeString); - if (systemCfg.workMode != WORK_MODE_USB || systemCfg.keepWeb) + if ((systemCfg.workMode != WORK_MODE_USB) || systemCfg.keepWeb) { // start network overseer if (tmrNetworkOverseer.state() == STOPPED) { tmrNetworkOverseer.start(); } WiFi.onEvent(NetworkEvent); + if (networkCfg.ethEnable) + initLan(); + if (networkCfg.wifiEnable) + connectWifi(); } switch (systemCfg.workMode) @@ -470,16 +473,12 @@ void setupCoordinatorMode() break; case WORK_MODE_NETWORK: ledControl.powerLED.mode = LED_BLINK_1Hz; - if (networkCfg.ethEnable) - initLan(); - if (networkCfg.wifiEnable) - connectWifi(); break; default: break; } - if (!systemCfg.disableWeb && (systemCfg.workMode != WORK_MODE_USB || systemCfg.keepWeb)) + if (!systemCfg.disableWeb && ((systemCfg.workMode != WORK_MODE_USB) || systemCfg.keepWeb)) updWeb = true; // handle web server if (systemCfg.workMode == WORK_MODE_USB && systemCfg.keepWeb) connectWifi(); // try 2 connect wifi diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 2558d6e..b5f8f63 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -419,8 +419,9 @@ void mqttPublishDiscovery() { DynamicJsonDocument devInfo(256); devInfo["ids"] = vars.deviceId; - devInfo["name"] = hwConfig.board; + devInfo["name"] = systemCfg.hostname; devInfo["mf"] = "XZG"; + devInfo["mdl"] = hwConfig.board; char verArr[25]; const char *env = STRINGIFY(BUILD_ENV_NAME); sprintf(verArr, "%s (%s)", VERSION, env); diff --git a/src/version.h b/src/version.h index f6f197e..c9dbee1 100644 --- a/src/version.h +++ b/src/version.h @@ -1,4 +1,4 @@ // AUTO GENERATED FILE #ifndef VERSION - #define VERSION "20240506" + #define VERSION "20240507" #endif diff --git a/src/web.cpp b/src/web.cpp index 974104d..043a1a4 100644 --- a/src/web.cpp +++ b/src/web.cpp @@ -472,8 +472,9 @@ void handleApi() API_SEND_HEX, API_WIFICONNECTSTAT, API_CMD, - API_GET_LOG //, - // API_FLASH_ZB + API_GET_LOG, + API_DEL_FILE, + API_FLASH_ZB }; const char *action = "action"; const char *page = "page"; @@ -771,6 +772,19 @@ void handleApi() serverWeb.send(HTTP_CODE_OK, contTypeText, result); } break; + case API_DEL_FILE: + { + String result = wrongArgs; + const char *argFilename = "filename"; + if (serverWeb.hasArg(argFilename)) + { + String filename = "/" + serverWeb.arg(argFilename); + LOGW("Remove file %s", filename.c_str()); + LittleFS.remove(filename); + } + serverWeb.send(HTTP_CODE_OK, contTypeText, result); + } + break; case API_GET_PARAM: { String resp = wrongArgs; diff --git a/src/websrc/css/custom.css b/src/websrc/css/custom.css index 6c9db89..8acb557 100644 --- a/src/websrc/css/custom.css +++ b/src/websrc/css/custom.css @@ -296,6 +296,10 @@ body { color: var(--link-color); } +.del_icon { + color: red; +} + .status_icon { width: 25px; height: 25px; diff --git a/src/websrc/html/PAGE_MQTT.html b/src/websrc/html/PAGE_MQTT.html index ac0df59..b496bc9 100644 --- a/src/websrc/html/PAGE_MQTT.html +++ b/src/websrc/html/PAGE_MQTT.html @@ -10,11 +10,9 @@
-
@@ -26,23 +24,21 @@
- +
- +
+ aria-describedby="tglPassViewVisibility" name="MqttPass" minlength="4" + maxlength="50" data-i18n="p.mq.pass.ph[placeholder];p.mq.pass.tt[title]">
-
-
@@ -71,8 +66,7 @@ data-i18n="p.mq.reconnect.ph[placeholder];p.mq.reconnect.tt[title]" required>
-