diff --git a/.github/workflows/compile_esp8266.yml b/.github/workflows/compile_release.yml similarity index 80% rename from .github/workflows/compile_esp8266.yml rename to .github/workflows/compile_release.yml index cf61b1f9..91ae35bf 100644 --- a/.github/workflows/compile_esp8266.yml +++ b/.github/workflows/compile_release.yml @@ -4,10 +4,11 @@ on: push: branches: main paths: - - 'tools/esp8266/**' # build only when changes occur here - - '!tools/esp8266/README.md' - - '!tools/esp8266/CHANGES.md' - - '!tools/esp8266/User_Manual.md' + - 'src/**' # build only when changes occur here + - '.github/workflows/compile_release.yml' + - '!README.md' + - '!CHANGES.md' + - '!User_Manual.md' jobs: build: runs-on: ubuntu-latest @@ -48,8 +49,9 @@ jobs: - name: Convert HTML files working-directory: src/web/html run: python convert.py + - name: Run PlatformIO - run: pio run -d tools/esp8266 --environment esp8266-release --environment esp8285-release --environment esp32-wroom32-release + run: pio run -d src --environment esp8266-release --environment esp8285-release --environment esp32-wroom32-release - name: Rename Binary files id: rename-binary-files @@ -64,17 +66,19 @@ jobs: prerelease: false release_name: ${{ steps.rename-binary-files.outputs.name }} tag_name: ${{ steps.rename-binary-files.outputs.name }} - body_path: tools/esp8266/CHANGES.md + body_path: src/CHANGES.md env: GITHUB_TOKEN: ${{ github.token }} - - name: set-version + + - name: Set Version uses: cschleiden/replace-tokens@v1 with: - files: tools/esp8266/User_Manual.md + files: User_Manual.md env: VERSION: ${{ steps.rename-binary-files.outputs.name }} - - name: create-artifact - run: zip --junk-paths ${{ steps.rename-binary-files.outputs.name }}.zip tools/esp8266/.pio/build/out/* tools/esp8266/User_Manual.md + + - name: Create Artifact + run: zip --junk-paths ${{ steps.rename-binary-files.outputs.name }}.zip src/firmware/* User_Manual.md - name: Upload Release id: upload-release diff --git a/README.md b/README.md index 52c5283d..df276ccb 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ List of approaches ## Quick Start with ESP8266 - [Go here ✨](Getting_Started.md#things-needed) +- [Our Website](https://ahoydtu.de) ## Success Stories diff --git a/src/CHANGES.md b/src/CHANGES.md new file mode 100644 index 00000000..4bf99ac5 --- /dev/null +++ b/src/CHANGES.md @@ -0,0 +1,13 @@ +# Changelog + +* fix browser sync NTP button +* added login feature (protect web ui) +* added static IP option +* improved initial boot - don't connect to `YOUR_WIFI_SSID` any more, directly boot into AP mode +* added status LED support +* improved MQTT handling (boot, periodic updates, no zero values any more) +* replaced deprecated workflow functions +* refactored code to make it more clearly +* added scheduler to register functions which need to be run each second / minute / ... +* changed settings to littlefs (-> no currupt settings in future on memory layout changes) +* added a lot of system infos to `System` page for support diff --git a/src/app.cpp b/src/app.cpp index 10e60c92..5fc3d089 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -42,6 +42,8 @@ void app::setup(uint32_t timeout) { mMqtt.setup(&mConfig->mqtt, mConfig->sys.deviceName, mVersion, mSys, &mUtcTimestamp, &mSunrise, &mSunset); mPayload.addListener(std::bind(&PubMqttType::payloadEventListener, &mMqtt, std::placeholders::_1)); addListener(EVERY_SEC, std::bind(&PubMqttType::tickerSecond, &mMqtt)); + addListener(EVERY_MIN, std::bind(&PubMqttType::tickerMinute, &mMqtt)); + addListener(EVERY_HR, std::bind(&PubMqttType::tickerHour, &mMqtt)); } #endif setupLed(); @@ -225,7 +227,6 @@ void app::resetSystem(void) { mRxTicker = 0; mSendLastIvId = 0; - mShowRebootRequest = false; memset(&mStat, 0, sizeof(statistics_t)); diff --git a/src/defines.h b/src/defines.h index edbc4aed..947c7615 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 5 -#define VERSION_PATCH 40 +#define VERSION_PATCH 41 //------------------------------------- typedef struct { diff --git a/src/publisher/pubMqtt.h b/src/publisher/pubMqtt.h index f3ff4eb1..90f27d45 100644 --- a/src/publisher/pubMqtt.h +++ b/src/publisher/pubMqtt.h @@ -67,6 +67,23 @@ class PubMqtt { sendIvData(); } + void tickerMinute() { + if(mAddressSet) { + char val[40]; + snprintf(val, 40, "%ld", millis() / 1000); + sendMsg("uptime", val); + + sendMsg("wifi_rssi", String(WiFi.RSSI()).c_str()); + } + } + + void tickerHour() { + if(mAddressSet) { + sendMsg("sunrise", String(*mSunrise).c_str()); + sendMsg("sunset", String(*mSunset).c_str()); + } + } + void setCallback(MQTT_CALLBACK_SIGNATURE) { mClient->setCallback(callback); } @@ -218,18 +235,10 @@ class PubMqtt { return; isConnected(true); // really needed? See comment from HorstG-57 #176 - char topic[32 + MAX_NAME_LENGTH], val[32]; + char topic[32 + MAX_NAME_LENGTH], val[40]; float total[4]; bool sendTotal = false; bool totalIncomplete = false; - snprintf(val, 40, "%ld", millis() / 1000); - - sendMsg("uptime", val); - - sendMsg("wifi_rssi", String(WiFi.RSSI()).c_str()); - - sendMsg("sunrise", String(*mSunrise).c_str()); - sendMsg("sunset", String(*mSunset).c_str()); while(!mSendList.empty()) { memset(total, 0, sizeof(float) * 4); diff --git a/src/web/html/api.js b/src/web/html/api.js index 3a8ad7f1..508a671d 100644 --- a/src/web/html/api.js +++ b/src/web/html/api.js @@ -31,32 +31,6 @@ function parseESP(obj) { document.getElementById("esp_type").innerHTML="Board: " + obj["esp_type"]; } -function parseSysInfo(obj) { - const data = ["sdk_version", "cpu_freq", "chip_revision", "chip_model", "chip_cores", "esp_type"]; - - var ul = document.getElementById("info"); - - if(!isNaN(obj["heap_total"])) { - document.getElementById("info").innerHTML = 'Heap: bytes ( bytes)'; - changeProgressbar("heap", obj["heap_used"], obj["heap_total"]); - } - - for (const [key, value] of Object.entries(obj)) { - if(!data.includes(key) || (typeof value == 'undefined')) continue; - var li = document.createElement("li"); - li.appendChild(document.createTextNode(key + ": " + value)); - ul.appendChild(li); - } -} - -function changeProgressbar(id, value, max) { - document.getElementById(id).value = value; - document.getElementById(id).max = max; - - document.getElementById("heap_used").textContent = value; - document.getElementById("heap_total").textContent = max; -} - function setHide(id, hide) { var elm = document.getElementById(id); if(hide) { @@ -67,7 +41,6 @@ function setHide(id, hide) { elm.classList.remove('hide'); } - function toggle(id) { var e = document.getElementById(id); if(!e.classList.contains("hide")) diff --git a/src/web/html/system.html b/src/web/html/system.html index a3219d6b..d8a473a2 100644 --- a/src/web/html/system.html +++ b/src/web/html/system.html @@ -18,7 +18,7 @@