From a8da251d9d9caeafa6daca4e0fe32b23f43c5c47 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Wed, 2 Jul 2025 12:36:59 +0200 Subject: [PATCH 01/19] Fix aditional newline in webserial when timestamp activated set timestamp default activated --- src/www/webSerialPage.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/www/webSerialPage.html b/src/www/webSerialPage.html index 8292f92..4f9c645 100644 --- a/src/www/webSerialPage.html +++ b/src/www/webSerialPage.html @@ -244,7 +244,7 @@

let websocket; let textArea = document.getElementById("record"); let enableFlowLock = false; - let enableTimestamp = false; + let enableTimestamp = true; let pingTimeout; let connectTimeout; let commandHistory = []; @@ -346,7 +346,7 @@

function terminalWrite(raw) { if (enableTimestamp) { let now = new Date(); - raw = "[" + now.toLocaleTimeString() + "] " + raw + "\n"; + raw = "[" + now.toLocaleTimeString() + "] " + raw /*+ "\n"*/; } textArea.value += raw + "\n"; if (!enableFlowLock) { From 982e490e8f282d550ee4bbd6e0586bff47423095 Mon Sep 17 00:00:00 2001 From: softwarecrash Date: Fri, 4 Jul 2025 21:17:06 +0200 Subject: [PATCH 02/19] Fix Zero value bug in JS --- platformio.ini | 2 +- src/www/setupPage.html | 201 +++++++++++++++++++---------------------- 2 files changed, 94 insertions(+), 109 deletions(-) diff --git a/platformio.ini b/platformio.ini index b4eb014..97e59d4 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.1 #BLLC_[Major].[Minor].[Patch] +custom_version = V2.2.2.nightly.040725.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino diff --git a/src/www/setupPage.html b/src/www/setupPage.html index 13e42ad..00fd4d5 100644 --- a/src/www/setupPage.html +++ b/src/www/setupPage.html @@ -759,118 +759,103 @@

Firmware version: ??.??.??

} } - function updateConfig() { - var xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - try { - var configData = JSON.parse(xhr.responseText); - document.getElementById("firmwareversion").textContent = "Firmware Version: " + (configData.firmwareversion || "Unknown version"); - document.getElementById('brightnessslider').value = (configData.brightness !== undefined) ? configData.brightness : 100; - document.getElementById("brightnesssliderDisplay").textContent = "Brightness: " + ((configData.brightness !== undefined) ? configData.brightness : 100) + "%"; - document.getElementById('maintMode').checked = configData.maintMode || false; - document.getElementById('discoMode').checked = configData.discoMode || false; - document.getElementById('replicateLedState').checked = configData.replicateled || false; - document.getElementById('runningRGB').value = configData.runningRGB || ''; - document.getElementById('runningWW').value = configData.runningWW || 255; - document.getElementById('runningCW').value = configData.runningCW || 255; - document.getElementById('showtestcolor').checked = configData.showtestcolor || false; - document.getElementById('testRGB').value = configData.testRGB || ''; - document.getElementById('testWW').value = configData.testWW || 0; - document.getElementById('testCW').value = configData.testCW || 0; - document.getElementById('debugwifi').checked = configData.debugwifi || false; - document.getElementById('finishIndication').checked = configData.finishindication || false; - document.getElementById('finishColor').value = configData.finishColor || ''; - document.getElementById('finishWW').value = configData.finishWW || 0; - document.getElementById('finishCW').value = configData.finishCW || 0; - if (configData.finishExit) { - document.getElementById('finishEndDoor').checked = true; - setFinishExit(document.getElementById('finishEndDoor')); - } else { - document.getElementById('finishEndTimer').checked = true; - setFinishExit(document.getElementById('finishEndTimer')); - } - document.getElementById('finishTimerMins').value = configData.finishTimerMins || 10; - document.getElementById('inactivityEnabled').checked = configData.inactivityEnabled || false; - document.getElementById('inactivityMins').value = configData.inactivityMins || 30; - document.getElementById('controlChamberLight').checked = configData.controlChamberLight || false; - document.getElementById('debuging').checked = configData.debuging || false; - document.getElementById('debugingchange').checked = configData.debugingchange || false; - document.getElementById('mqttdebug').checked = configData.mqttdebug || false; - document.getElementById('p1Printer').checked = configData.p1Printer || false; - document.getElementById('doorSwitch').checked = configData.doorSwitch || false; - document.getElementById('stage14RGB').value = configData.stage14RGB || ''; - document.getElementById('stage14WW').value = configData.stage14WW || 0; - document.getElementById('stage14CW').value = configData.stage14CW || 0; - document.getElementById('stage1RGB').value = configData.stage1RGB || ''; - document.getElementById('stage1WW').value = configData.stage1WW || 0; - document.getElementById('stage1CW').value = configData.stage1CW || 0; - document.getElementById('stage8RGB').value = configData.stage8RGB || ''; - document.getElementById('stage8WW').value = configData.stage8WW || 0; - document.getElementById('stage8CW').value = configData.stage8CW || 0; - document.getElementById('stage9RGB').value = configData.stage9RGB || ''; - document.getElementById('stage9WW').value = configData.stage9WW || 0; - document.getElementById('stage9CW').value = configData.stage9CW || 0; - document.getElementById('stage10RGB').value = configData.stage10RGB || ''; - document.getElementById('stage10WW').value = configData.stage10WW || 0; - document.getElementById('stage10CW').value = configData.stage10CW || 0; - document.getElementById('errorDetection').checked = configData.errordetection || false; - document.getElementById('wifiRGB').value = configData.wifiRGB || ''; - document.getElementById('wifiWW').value = configData.wifiWW || 0; - document.getElementById('wifiCW').value = configData.wifiCW || 0; - document.getElementById('pauseRGB').value = configData.pauseRGB || ''; - document.getElementById('pauseWW').value = configData.pauseWW || 0; - document.getElementById('pauseCW').value = configData.pauseCW || 0; - document.getElementById('firstlayerRGB').value = configData.firstlayerRGB || ''; - document.getElementById('firstlayerWW').value = configData.firstlayerWW || 0; - document.getElementById('firstlayerCW').value = configData.firstlayerCW || 0; - document.getElementById('nozzleclogRGB').value = configData.nozzleclogRGB || ''; - document.getElementById('nozzleclogWW').value = configData.nozzleclogWW || 0; - document.getElementById('nozzleclogCW').value = configData.nozzleclogCW || 0; - document.getElementById('hmsSeriousRGB').value = configData.hmsSeriousRGB || ''; - document.getElementById('hmsSeriousWW').value = configData.hmsSeriousWW || 0; - document.getElementById('hmsSeriousCW').value = configData.hmsSeriousCW || 0; - document.getElementById('hmsFatalRGB').value = configData.hmsFatalRGB || ''; - document.getElementById('hmsFatalWW').value = configData.hmsFatalWW || 0; - document.getElementById('hmsFatalCW').value = configData.hmsFatalCW || 0; - document.getElementById('filamentRunoutRGB').value = configData.filamentRunoutRGB || ''; - document.getElementById('filamentRunoutWW').value = configData.filamentRunoutWW || 0; - document.getElementById('filamentRunoutCW').value = configData.filamentRunoutCW || 0; - document.getElementById('frontCoverRGB').value = configData.frontCoverRGB || ''; - document.getElementById('frontCoverWW').value = configData.frontCoverWW || 0; - document.getElementById('frontCoverCW').value = configData.frontCoverCW || 0; - document.getElementById('nozzleTempRGB').value = configData.nozzleTempRGB || ''; - document.getElementById('nozzleTempWW').value = configData.nozzleTempWW || 0; - document.getElementById('nozzleTempCW').value = configData.nozzleTempCW || 0; - document.getElementById('bedTempRGB').value = configData.bedTempRGB || ''; - document.getElementById('bedTempWW').value = configData.bedTempWW || 0; - document.getElementById('bedTempCW').value = configData.bedTempCW || 0; - //HMS Error handling - document.getElementById('hmsIgnoreList').value = configData.hmsIgnoreList || ''; - - updateIdle(); - showhideOptions(); - showcustomColors(); - setFinishColor(); - setFinishChoice(); - showMessage("Success", "Configuration loaded successfully!"); - } catch (e) { - console.log(e); - showMessage("Error", "Invalid server response! (" + e + ")."); - } - } else if (xhr.status >= 400 && xhr.status < 500) { - showMessage("Error", "Client Error (" + xhr.status + "): " + (xhr.responseText || "Request failed.")); - } else if (xhr.status >= 500) { - showMessage("Error", "Server Error (" + xhr.status + "): " + (xhr.responseText || "Internal server error.")); + function getSafeNumber(val, fallback) { + return (val !== undefined) ? val : fallback; +} + +function updateConfig() { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + try { + var configData = JSON.parse(xhr.responseText); + + document.getElementById("firmwareversion").textContent = "Firmware Version: " + (configData.firmwareversion || "Unknown version"); + document.getElementById('brightnessslider').value = getSafeNumber(configData.brightness, 100); + document.getElementById("brightnesssliderDisplay").textContent = "Brightness: " + getSafeNumber(configData.brightness, 100) + "%"; + + document.getElementById('maintMode').checked = configData.maintMode || false; + document.getElementById('discoMode').checked = configData.discoMode || false; + document.getElementById('replicateLedState').checked = configData.replicateled || false; + + document.getElementById('runningRGB').value = configData.runningRGB || ''; + document.getElementById('runningWW').value = getSafeNumber(configData.runningWW, 255); + document.getElementById('runningCW').value = getSafeNumber(configData.runningCW, 255); + + document.getElementById('showtestcolor').checked = configData.showtestcolor || false; + document.getElementById('testRGB').value = configData.testRGB || ''; + document.getElementById('testWW').value = getSafeNumber(configData.testWW, 0); + document.getElementById('testCW').value = getSafeNumber(configData.testCW, 0); + + document.getElementById('debugwifi').checked = configData.debugwifi || false; + document.getElementById('finishIndication').checked = configData.finishindication || false; + document.getElementById('finishColor').value = configData.finishColor || ''; + document.getElementById('finishWW').value = getSafeNumber(configData.finishWW, 0); + document.getElementById('finishCW').value = getSafeNumber(configData.finishCW, 0); + + if (configData.finishExit) { + document.getElementById('finishEndDoor').checked = true; + setFinishExit(document.getElementById('finishEndDoor')); } else { - showMessage("Error", "Unexpected response (" + xhr.status + ")."); + document.getElementById('finishEndTimer').checked = true; + setFinishExit(document.getElementById('finishEndTimer')); } + + document.getElementById('finishTimerMins').value = getSafeNumber(configData.finishTimerMins, 10); + document.getElementById('inactivityEnabled').checked = configData.inactivityEnabled || false; + document.getElementById('inactivityMins').value = getSafeNumber(configData.inactivityMins, 30); + + document.getElementById('controlChamberLight').checked = configData.controlChamberLight || false; + document.getElementById('debuging').checked = configData.debuging || false; + document.getElementById('debugingchange').checked = configData.debugingchange || false; + document.getElementById('mqttdebug').checked = configData.mqttdebug || false; + document.getElementById('p1Printer').checked = configData.p1Printer || false; + document.getElementById('doorSwitch').checked = configData.doorSwitch || false; + + const stages = ['stage14', 'stage1', 'stage8', 'stage9', 'stage10']; + for (const s of stages) { + document.getElementById(`${s}RGB`).value = configData[`${s}RGB`] || ''; + document.getElementById(`${s}WW`).value = getSafeNumber(configData[`${s}WW`], 0); + document.getElementById(`${s}CW`).value = getSafeNumber(configData[`${s}CW`], 0); + } + + document.getElementById('errorDetection').checked = configData.errordetection || false; + + const errorTypes = [ + 'wifi', 'pause', 'firstlayer', 'nozzleclog', 'hmsSerious', 'hmsFatal', + 'filamentRunout', 'frontCover', 'nozzleTemp', 'bedTemp' + ]; + for (const e of errorTypes) { + document.getElementById(`${e}RGB`).value = configData[`${e}RGB`] || ''; + document.getElementById(`${e}WW`).value = getSafeNumber(configData[`${e}WW`], 0); + document.getElementById(`${e}CW`).value = getSafeNumber(configData[`${e}CW`], 0); + } + + document.getElementById('hmsIgnoreList').value = configData.hmsIgnoreList || ''; + + updateIdle(); + showhideOptions(); + showcustomColors(); + setFinishColor(); + setFinishChoice(); + showMessage("Success", "Configuration loaded successfully!"); + } catch (e) { + console.log(e); + showMessage("Error", "Invalid server response! (" + e + ")."); } - }; - xhr.open('GET', '/getConfig', true); - xhr.send(); + } else if (xhr.status >= 400 && xhr.status < 500) { + showMessage("Error", "Client Error (" + xhr.status + "): " + (xhr.responseText || "Request failed.")); + } else if (xhr.status >= 500) { + showMessage("Error", "Server Error (" + xhr.status + "): " + (xhr.responseText || "Internal server error.")); + } else { + showMessage("Error", "Unexpected response (" + xhr.status + ")."); + } } + }; + xhr.open('GET', '/getConfig', true); + xhr.send(); +} window.onload = function () { document.getElementById("brightnessslider").addEventListener("input", function (e) { document.getElementById("brightnesssliderDisplay").textContent = "Brightness: " + e.target.value + "%"; From 2f9537462d0000a121c3dd3f579294b6afbbd7cb Mon Sep 17 00:00:00 2001 From: softwarecrash Date: Fri, 4 Jul 2025 21:17:52 +0200 Subject: [PATCH 03/19] fix typo --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 97e59d4..619e417 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = V2.2.2.nightly.040725.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.2.nightly.040725.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino From 819c248e7b475a51f2e81e76603d941ae333ac4c Mon Sep 17 00:00:00 2001 From: Rocky <44615614+softwarecrash@users.noreply.github.com> Date: Sat, 5 Jul 2025 22:04:31 +0200 Subject: [PATCH 04/19] Create push-to-blledflasher.yml --- .github/workflows /push-to-blledflasher.yml | 68 ++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows /push-to-blledflasher.yml diff --git a/.github/workflows /push-to-blledflasher.yml b/.github/workflows /push-to-blledflasher.yml new file mode 100644 index 0000000..3a5a944 --- /dev/null +++ b/.github/workflows /push-to-blledflasher.yml @@ -0,0 +1,68 @@ +name: Push Firmware to BLLED-Flasher + +on: + release: + types: [published, edited] + +jobs: + push-firmware: + runs-on: ubuntu-latest + + steps: + - name: Checkout BLLEDController-NG + uses: actions/checkout@v3 + + - name: Download .bin from current release + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const fs = require('fs'); + const owner = context.repo.owner; + const repo = context.repo.repo; + const release = context.payload.release; + const tag = release.tag_name; + + const assets = release.assets.filter(a => a.name.endsWith('.bin')); + if (assets.length === 0) { + core.setFailed("No .bin files found in release"); + return; + } + + fs.mkdirSync('firmware', { recursive: true }); + + for (const asset of assets) { + const dl = await github.rest.repos.getReleaseAsset({ + owner, + repo, + asset_id: asset.id, + headers: { Accept: 'application/octet-stream' } + }); + + fs.writeFileSync(`firmware/${asset.name}`, Buffer.from(dl.data)); + console.log(`✅ Downloaded: ${asset.name}`); + } + + - name: Clone BLLED-Flasher repo + run: | + git clone https://x-access-token:${{ secrets.BLLED_FLASHER_TOKEN }}@github.com/softwarecrash/BLLED-Flasher.git flasher + cp firmware/*.bin flasher/firmware/ + + - name: Generate firmware.json + manifests + run: | + cd flasher + node generateRelease.js + + - name: Commit and Push to BLLED-Flasher + run: | + cd flasher + git config user.name "BLLED Release Bot" + git config user.email "actions@github.com" + git fetch origin + git add firmware/ + if git diff --cached --quiet; then + echo "✅ Keine Änderungen – kein Push." + else + git commit -m "📦 Add firmware from release ${{ github.event.release.tag_name }}" + git push + fi From e6305da51a3438f541e492204aa57714dbbd3dd0 Mon Sep 17 00:00:00 2001 From: Rocky <44615614+softwarecrash@users.noreply.github.com> Date: Sat, 5 Jul 2025 22:09:24 +0200 Subject: [PATCH 05/19] Delete .github/workflows directory --- .github/workflows /push-to-blledflasher.yml | 68 -------------------- 1 file changed, 68 deletions(-) delete mode 100644 .github/workflows /push-to-blledflasher.yml diff --git a/.github/workflows /push-to-blledflasher.yml b/.github/workflows /push-to-blledflasher.yml deleted file mode 100644 index 3a5a944..0000000 --- a/.github/workflows /push-to-blledflasher.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Push Firmware to BLLED-Flasher - -on: - release: - types: [published, edited] - -jobs: - push-firmware: - runs-on: ubuntu-latest - - steps: - - name: Checkout BLLEDController-NG - uses: actions/checkout@v3 - - - name: Download .bin from current release - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const fs = require('fs'); - const owner = context.repo.owner; - const repo = context.repo.repo; - const release = context.payload.release; - const tag = release.tag_name; - - const assets = release.assets.filter(a => a.name.endsWith('.bin')); - if (assets.length === 0) { - core.setFailed("No .bin files found in release"); - return; - } - - fs.mkdirSync('firmware', { recursive: true }); - - for (const asset of assets) { - const dl = await github.rest.repos.getReleaseAsset({ - owner, - repo, - asset_id: asset.id, - headers: { Accept: 'application/octet-stream' } - }); - - fs.writeFileSync(`firmware/${asset.name}`, Buffer.from(dl.data)); - console.log(`✅ Downloaded: ${asset.name}`); - } - - - name: Clone BLLED-Flasher repo - run: | - git clone https://x-access-token:${{ secrets.BLLED_FLASHER_TOKEN }}@github.com/softwarecrash/BLLED-Flasher.git flasher - cp firmware/*.bin flasher/firmware/ - - - name: Generate firmware.json + manifests - run: | - cd flasher - node generateRelease.js - - - name: Commit and Push to BLLED-Flasher - run: | - cd flasher - git config user.name "BLLED Release Bot" - git config user.email "actions@github.com" - git fetch origin - git add firmware/ - if git diff --cached --quiet; then - echo "✅ Keine Änderungen – kein Push." - else - git commit -m "📦 Add firmware from release ${{ github.event.release.tag_name }}" - git push - fi From 325c3d17acc97fec95305976f83de9d976561c8d Mon Sep 17 00:00:00 2001 From: Rocky <44615614+softwarecrash@users.noreply.github.com> Date: Sat, 5 Jul 2025 22:10:48 +0200 Subject: [PATCH 06/19] Create push-to-blledflasher.yml --- .github/workflows/push-to-blledflasher.yml | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/push-to-blledflasher.yml diff --git a/.github/workflows/push-to-blledflasher.yml b/.github/workflows/push-to-blledflasher.yml new file mode 100644 index 0000000..3a5a944 --- /dev/null +++ b/.github/workflows/push-to-blledflasher.yml @@ -0,0 +1,68 @@ +name: Push Firmware to BLLED-Flasher + +on: + release: + types: [published, edited] + +jobs: + push-firmware: + runs-on: ubuntu-latest + + steps: + - name: Checkout BLLEDController-NG + uses: actions/checkout@v3 + + - name: Download .bin from current release + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const fs = require('fs'); + const owner = context.repo.owner; + const repo = context.repo.repo; + const release = context.payload.release; + const tag = release.tag_name; + + const assets = release.assets.filter(a => a.name.endsWith('.bin')); + if (assets.length === 0) { + core.setFailed("No .bin files found in release"); + return; + } + + fs.mkdirSync('firmware', { recursive: true }); + + for (const asset of assets) { + const dl = await github.rest.repos.getReleaseAsset({ + owner, + repo, + asset_id: asset.id, + headers: { Accept: 'application/octet-stream' } + }); + + fs.writeFileSync(`firmware/${asset.name}`, Buffer.from(dl.data)); + console.log(`✅ Downloaded: ${asset.name}`); + } + + - name: Clone BLLED-Flasher repo + run: | + git clone https://x-access-token:${{ secrets.BLLED_FLASHER_TOKEN }}@github.com/softwarecrash/BLLED-Flasher.git flasher + cp firmware/*.bin flasher/firmware/ + + - name: Generate firmware.json + manifests + run: | + cd flasher + node generateRelease.js + + - name: Commit and Push to BLLED-Flasher + run: | + cd flasher + git config user.name "BLLED Release Bot" + git config user.email "actions@github.com" + git fetch origin + git add firmware/ + if git diff --cached --quiet; then + echo "✅ Keine Änderungen – kein Push." + else + git commit -m "📦 Add firmware from release ${{ github.event.release.tag_name }}" + git push + fi From 0b10da95af462fa8781d3a2a14ed0940db939604 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Mon, 7 Jul 2025 10:36:04 +0200 Subject: [PATCH 07/19] reduce doortest function time to 2 seconds --- src/blled/leds.h | 2 +- src/blled/mqttmanager.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blled/leds.h b/src/blled/leds.h index 45e17ad..f9ce327 100644 --- a/src/blled/leds.h +++ b/src/blled/leds.h @@ -422,7 +422,7 @@ void updateleds() if (printerConfig.debugingchange) { - LogSerial.print(F("Door closed twice within 6 seconds - ")); + LogSerial.print(F("Door closed twice within 2 seconds - ")); if (ledsAreOff) LogSerial.print(F("Turning LEDs ON")); diff --git a/src/blled/mqttmanager.h b/src/blled/mqttmanager.h index c590b26..2b5d878 100644 --- a/src/blled/mqttmanager.h +++ b/src/blled/mqttmanager.h @@ -359,7 +359,7 @@ if (!messageobject["print"]["home_flag"].isNull()) printerConfig.isIdleOFFActive = false; // Detect double-close toggle - if ((millis() - printerVariables.lastdoorOpenms) < 6000) + if ((millis() - printerVariables.lastdoorOpenms) < 2000) { printerVariables.doorSwitchTriggered = true; } From a9db31eb65f30d58a33e9ab852f0d95b111e7b34 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Mon, 7 Jul 2025 12:18:23 +0200 Subject: [PATCH 08/19] correct sort --- src/blled/types.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/blled/types.h b/src/blled/types.h index 0e1f49f..3f8f494 100644 --- a/src/blled/types.h +++ b/src/blled/types.h @@ -42,7 +42,9 @@ extern "C" unsigned long lastdoorClosems = 0; // Last time door was opened unsigned long lastdoorOpenms = 0; // Last time door was closed bool chamberLightLocked = false; // blocks replicate while true + bool ledWasForcedByDoor = false; } PrinterVariables; + PrinterVariables printerVariables; typedef struct SecurityVariables{ // Security @@ -51,7 +53,7 @@ extern "C" }SecurityVariables; SecurityVariables securityVariables; - PrinterVariables printerVariables; + typedef struct GlobalVariablesStruct{ char SSID[32]; From 6c3ee79d77d3e0c53d10c88ebe8f697eb786d6a9 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Wed, 9 Jul 2025 11:48:33 +0200 Subject: [PATCH 09/19] another doorfix --- src/blled/mqttmanager.h | 58 +++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/src/blled/mqttmanager.h b/src/blled/mqttmanager.h index 2b5d878..488e067 100644 --- a/src/blled/mqttmanager.h +++ b/src/blled/mqttmanager.h @@ -329,6 +329,7 @@ if (!messageobject["print"]["home_flag"].isNull()) printerVariables.printerledstate = true; printerConfig.replicate_update = false; controlChamberLight(true); + printerVariables.stage = 255; LogSerial.println(F("[MQTT] Door opened – Light forced ON")); } @@ -340,33 +341,44 @@ if (!messageobject["print"]["home_flag"].isNull()) updateleds(); } - // Door closed - else - { - printerVariables.lastdoorClosems = millis(); +else // Door closed +{ + printerVariables.lastdoorClosems = millis(); - // If light was forced on by door, turn it off now - if (printerVariables.chamberLightLocked) - { - printerVariables.chamberLightLocked = false; - printerVariables.printerledstate = false; - controlChamberLight(false); - LogSerial.println(F("[MQTT] Door closed – Light OFF and lock released")); - } + // Turn off chamber light if enabled + if (printerConfig.controlChamberLight) + { + //controlChamberLight(false); + printerVariables.chamberLightLocked = false; + //LogSerial.println(F("[MQTT] Door closed – Chamber light OFF")); + } - // Restart inactivity timer - printerConfig.inactivityStartms = millis(); - printerConfig.isIdleOFFActive = false; + if (!printerConfig.inactivityEnabled) + { + // Turn off LED bar immediately + printerVariables.printerledstate = false; + printerConfig.replicate_update = false; + printerVariables.stage = 999; + tweenToColor(0,0,0,0,0); + controlChamberLight(false); + LogSerial.println(F("[MQTT] Door closed – LED bar OFF (inactivity disabled)")); + } - // Detect double-close toggle - if ((millis() - printerVariables.lastdoorOpenms) < 2000) - { - printerVariables.doorSwitchTriggered = true; - } + // Reset inactivity timer + printerConfig.inactivityStartms = millis(); + printerConfig.isIdleOFFActive = false; + + // Double-close detection + if ((millis() - printerVariables.lastdoorOpenms) < 2000) + { + printerVariables.doorSwitchTriggered = true; + } + + Changed = true; + updateleds(); + +} - Changed = true; - updateleds(); - } } } From f8a9e68d3d18d68d6f8c3cc657e4c6eec17bfc3d Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Wed, 9 Jul 2025 11:51:46 +0200 Subject: [PATCH 10/19] version correct --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 619e417..732aa3c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.2.nightly.040725.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.2.nightly.090725.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino From b41596601e4f29722e64d440f6610a4567f49bbe Mon Sep 17 00:00:00 2001 From: Rocky <44615614+softwarecrash@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:59:11 +0200 Subject: [PATCH 11/19] version Bump --- platformio.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 732aa3c..c399629 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.2.nightly.090725.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.3 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino @@ -31,4 +31,4 @@ lib_deps = luc-github/ESP32SSDP@1.2.1 ESP32Async/AsyncTCP ESP32Async/ESPAsyncWebServer - mathieucarbou/MycilaWebSerial@^8.1.1 \ No newline at end of file + mathieucarbou/MycilaWebSerial@^8.1.1 From 58a90e7a141954a1ca9fa83b9cfb16bea4a52d38 Mon Sep 17 00:00:00 2001 From: Rocky <44615614+softwarecrash@users.noreply.github.com> Date: Thu, 10 Jul 2025 12:05:21 +0200 Subject: [PATCH 12/19] Add self --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 64b94a0..7848559 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ The BL Led Controller is released under Creative Commons Attribution-NonCommerci - **[Modbot](https://github.com/Modbot)**: Tester for X1C, P1P & P1S - **[xps3riments](https://github.com/xps3riments)**: Inspiration for the foundation of the code - **[longrackslabs](https://github.com/longrackslabs)**: Build process, documentation, developer & community support +- **[SoftWareCrash](https://github.com/softwarecrash)**: Any small unimportant changes ### Author From b972b0f65046763e09616049aebff8f9fff67dbe Mon Sep 17 00:00:00 2001 From: softwarecrash Date: Mon, 14 Jul 2025 21:48:48 +0200 Subject: [PATCH 13/19] catch buffer overflow --- src/blled/AutoGrowBufferStream.h | 6 ++++++ src/blled/mqttmanager.h | 14 +++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/blled/AutoGrowBufferStream.h b/src/blled/AutoGrowBufferStream.h index 6589de9..3b226b7 100644 --- a/src/blled/AutoGrowBufferStream.h +++ b/src/blled/AutoGrowBufferStream.h @@ -6,6 +6,7 @@ #include #define BUFFER_INCREMENTS 128 +#define MAX_BUFFER_SIZE 65536 class AutoGrowBufferStream : public Stream { @@ -26,6 +27,11 @@ class AutoGrowBufferStream : public Stream } virtual size_t write(uint8_t byte) { + if (this->_len + 1 > MAX_BUFFER_SIZE) { + LogSerial.println(F("Max buffer size reached — flushing")); + this->flush(); + return 0; + } if (this->_len + 1 > this->buffer_size) { auto tmp = (char*)realloc(this->_buffer, this->buffer_size + BUFFER_INCREMENTS); if (tmp == NULL) { diff --git a/src/blled/mqttmanager.h b/src/blled/mqttmanager.h index 488e067..3b2209b 100644 --- a/src/blled/mqttmanager.h +++ b/src/blled/mqttmanager.h @@ -188,14 +188,6 @@ void ParseCallback(char *topic, byte *payload, unsigned int length) JsonDocument filter; // Rather than showing the entire message to Serial - grabbing only the pertinent bits for BLLED. // Device Status - - // sniped: implement to get layer num. for hms error, swap back to running state after layer change - /* "print": { - "3D": { - "layer_num": 0, - "total_layer_num": 191 - } */ - filter["print"]["command"] = true; filter["print"]["fail_reason"] = true; filter["print"]["gcode_state"] = true; @@ -245,7 +237,7 @@ void ParseCallback(char *topic, byte *payload, unsigned int length) if (printerConfig.mqttdebug) { LogSerial.print(F("(Filtered) MQTT payload, [")); - LogSerial.print(millis()); + LogSerial.print(stream.current_length()); LogSerial.print(F("], ")); serializeJson(messageobject, LogSerial); LogSerial.println(); @@ -692,8 +684,8 @@ void setupMqtt() report_topic = device_topic + String("/report"); wifiSecureClient.setInsecure(); - wifiSecureClient.setTimeout(10); - mqttClient.setSocketTimeout(10); + wifiSecureClient.setTimeout(15); + mqttClient.setSocketTimeout(17); mqttClient.setBufferSize(1024); mqttClient.setServer(printerConfig.printerIP, 8883); mqttClient.setStream(stream); From 1d5c715a1c82a6c84287d229cc54780904df7305 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Tue, 15 Jul 2025 09:45:08 +0200 Subject: [PATCH 14/19] correct --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index c399629..4487dab 100644 --- a/platformio.ini +++ b/platformio.ini @@ -32,3 +32,4 @@ lib_deps = ESP32Async/AsyncTCP ESP32Async/ESPAsyncWebServer mathieucarbou/MycilaWebSerial@^8.1.1 + From 528ffc51b125c503fe275e0e59c74e570217b4a8 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Tue, 15 Jul 2025 15:50:59 +0200 Subject: [PATCH 15/19] add log incerase heap for task --- platformio.ini | 3 +-- src/blled/mqttmanager.h | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 4487dab..7d5ed57 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.3 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.3.nightly.150725.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino @@ -32,4 +32,3 @@ lib_deps = ESP32Async/AsyncTCP ESP32Async/ESPAsyncWebServer mathieucarbou/MycilaWebSerial@^8.1.1 - diff --git a/src/blled/mqttmanager.h b/src/blled/mqttmanager.h index 3b2209b..51c2fe4 100644 --- a/src/blled/mqttmanager.h +++ b/src/blled/mqttmanager.h @@ -1,6 +1,8 @@ #ifndef _MQTTMANAGER #define _MQTTMANAGER +#define TASK_RAM 20480 // 20kB for MQTT Task Stack Size + #include #include #include @@ -180,6 +182,7 @@ void mqttTask(void *parameter) mqttTaskRunning = false; vTaskDelete(NULL); + LogSerial.printf("[MQTT Task] HighWaterMark: %d bytes\n", uxTaskGetStackHighWaterMark(NULL)); } void ParseCallback(char *topic, byte *payload, unsigned int length) @@ -701,7 +704,7 @@ void setupMqtt() result = xTaskCreate( mqttTask, "mqttTask", - 6144, + TASK_RAM, NULL, 1, &mqttTaskHandle); @@ -709,7 +712,7 @@ void setupMqtt() result = xTaskCreatePinnedToCore( mqttTask, "mqttTask", - 6144, + TASK_RAM, NULL, 1, &mqttTaskHandle, From d3e16a1903f59f3b0fbee14625bde6723d6fe147 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Tue, 2 Sep 2025 11:39:38 +0200 Subject: [PATCH 16/19] fix uppercase input issue --- platformio.ini | 2 +- src/www/wifiSetup.html | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 7d5ed57..12a6b8c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.3.nightly.150725.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.3.nightly.020925.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino diff --git a/src/www/wifiSetup.html b/src/www/wifiSetup.html index dba00e4..e12b2f1 100644 --- a/src/www/wifiSetup.html +++ b/src/www/wifiSetup.html @@ -179,7 +179,8 @@

Select Printer

const pass = document.getElementById("password").value; const bssid = document.getElementById("bssid").value; const printerIP = document.getElementById("printerIP").value; - const printerSerial = document.getElementById("printerSerial").value; + //const printerSerial = document.getElementById("printerSerial").value; + const printerSerial = document.getElementById("printerSerial").value.trim().toUpperCase(); const accessCode = document.getElementById("accessCode").value; const webUser = document.getElementById("webUser").value; const webPass = document.getElementById("webPass").value; From 408d0aeb2ea7fdc3ba0c8420e1d8d633bcdcb6a2 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Thu, 4 Sep 2025 17:10:12 +0200 Subject: [PATCH 17/19] discovery button more present --- src/www/wifiSetup.html | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/www/wifiSetup.html b/src/www/wifiSetup.html index e12b2f1..dd3d0e7 100644 --- a/src/www/wifiSetup.html +++ b/src/www/wifiSetup.html @@ -25,12 +25,25 @@

BLLED WiFi Setup

- + + + +
+ + + + + +
+ From 8225167e40ef9fd4c698639c63b122dffcd3fe18 Mon Sep 17 00:00:00 2001 From: SoftWareCrash Date: Thu, 4 Sep 2025 17:10:51 +0200 Subject: [PATCH 18/19] version bump --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 12a6b8c..0b4c520 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.3.nightly.020925.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.3.nightly.040925.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino From c73633e03911b56d6b7ca29a64af48b2b25a76cf Mon Sep 17 00:00:00 2001 From: softwarecrash Date: Sun, 7 Sep 2025 12:00:11 +0200 Subject: [PATCH 19/19] version bump --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 0b4c520..e96a3ee 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ [env:esp32dev] custom_project_name = BLLC custom_project_codename = Balder -custom_version = 2.2.3.nightly.040925.1 #BLLC_[Major].[Minor].[Patch] +custom_version = 2.2.3.nightly.070925.1 #BLLC_[Major].[Minor].[Patch] platform = espressif32 board = esp32dev framework = arduino