Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
68cdd8ab40 | |||
1069781931 | |||
eada54eff2 | |||
48301ade36 | |||
76e0b20393 | |||
a765b39896 | |||
d68f6c4a89 | |||
1702e2396e | |||
af23b07df1 | |||
dd7ba3bf5d | |||
a818dcd3c0 | |||
b5279b167a | |||
a09fd4fda4 | |||
e4fe08f54c | |||
3eac0e5ac4 | |||
24d91693d9 | |||
94c26590c8 |
34
CHANGELOG.md
34
CHANGELOG.md
@ -1,5 +1,39 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.4.4] - 2025-03-23
|
||||||
|
### Added
|
||||||
|
- add error handling for missing vendor IDs in filament data
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- update platformio.ini for version v1.4.4
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- adjust weight threshold for tare check to allow negative values
|
||||||
|
|
||||||
|
|
||||||
|
## [1.4.3] - 2025-03-23
|
||||||
|
### Changed
|
||||||
|
- update platformio.ini for version v1.4.3
|
||||||
|
|
||||||
|
|
||||||
|
## [1.4.2] - 2025-03-23
|
||||||
|
### Added
|
||||||
|
- add WiFi connection check and restart Bambu if not connected
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- update platformio.ini for version v1.4.2
|
||||||
|
- increase stack size for BambuMqtt task
|
||||||
|
- update Discord Link
|
||||||
|
- update Discord Link
|
||||||
|
- remove commented-out subscription topic in MQTT setup
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- use unique client ID for MQTT connection to avoid conflicts
|
||||||
|
- reload page after firmware update completion
|
||||||
|
- increase WiFi connection timeout from 5 to 10 seconds
|
||||||
|
- ensure valid URL format and remove trailing slash in setupWebserver
|
||||||
|
|
||||||
|
|
||||||
## [1.4.1] - 2025-03-10
|
## [1.4.1] - 2025-03-10
|
||||||
### Added
|
### Added
|
||||||
- added new .step, now with correct individual parts
|
- added new .step, now with correct individual parts
|
||||||
|
@ -9,7 +9,7 @@ Das System integriert sich nahtlos mit der [Spoolman](https://github.com/Donkie/
|
|||||||
Weitere Bilder finden Sie im [img Ordner](/img/)
|
Weitere Bilder finden Sie im [img Ordner](/img/)
|
||||||
oder auf meiner Website: [FilaMan Website](https://www.filaman.app)
|
oder auf meiner Website: [FilaMan Website](https://www.filaman.app)
|
||||||
Deutsches Erklärvideo: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
|
Deutsches Erklärvideo: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
|
||||||
Discord Server: [https://discord.gg/vMAx2gf5](https://discord.gg/vMAx2gf5)
|
Discord Server: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
|
||||||
|
|
||||||
### Es gibt jetzt auch ein Wiki, dort sind nochmal alle Funktionen beschrieben: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
|
### Es gibt jetzt auch ein Wiki, dort sind nochmal alle Funktionen beschrieben: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ The system integrates seamlessly with [Bambulab](https://bambulab.com/en-us) 3D
|
|||||||
More Images can be found in the [img Folder](/img/)
|
More Images can be found in the [img Folder](/img/)
|
||||||
or my website: [FilaMan Website](https://www.filaman.app)
|
or my website: [FilaMan Website](https://www.filaman.app)
|
||||||
german explanatory video: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
|
german explanatory video: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
|
||||||
Discord Server: [https://discord.gg/vMAx2gf5](https://discord.gg/vMAx2gf5)
|
Discord Server: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
|
||||||
|
|
||||||
### Now more detailed informations about the usage: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
|
### Now more detailed informations about the usage: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
|
||||||
|
|
||||||
|
@ -147,6 +147,13 @@ function updateFilamentDropdown(selectedSmId = null) {
|
|||||||
|
|
||||||
if (vendorId) {
|
if (vendorId) {
|
||||||
const filteredFilaments = spoolsData.filter(spool => {
|
const filteredFilaments = spoolsData.filter(spool => {
|
||||||
|
if (!spool?.filament?.vendor?.id) {
|
||||||
|
console.log('Problem aufgetreten bei: ', spool?.filament?.vendor);
|
||||||
|
console.log('Problematische Spulen:',
|
||||||
|
spoolsData.filter(spool => !spool?.filament?.vendor?.id));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const hasValidNfcId = spool.extra &&
|
const hasValidNfcId = spool.extra &&
|
||||||
spool.extra.nfc_id &&
|
spool.extra.nfc_id &&
|
||||||
spool.extra.nfc_id !== '""' &&
|
spool.extra.nfc_id !== '""' &&
|
||||||
@ -240,18 +247,6 @@ async function fetchSpoolData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// Exportiere Funktionen
|
|
||||||
window.getSpoolData = () => spoolsData;
|
|
||||||
window.reloadSpoolData = initSpoolman;
|
|
||||||
window.populateVendorDropdown = populateVendorDropdown;
|
|
||||||
window.updateFilamentDropdown = updateFilamentDropdown;
|
|
||||||
window.toggleFilamentDropdown = () => {
|
|
||||||
const content = document.getElementById("filament-dropdown-content");
|
|
||||||
content.classList.toggle("show");
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Event Listener
|
// Event Listener
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
initSpoolman();
|
initSpoolman();
|
||||||
|
@ -129,6 +129,7 @@
|
|||||||
if (data.status === 'success' || lastReceivedProgress >= 98) {
|
if (data.status === 'success' || lastReceivedProgress >= 98) {
|
||||||
clearTimeout(wsReconnectTimer);
|
clearTimeout(wsReconnectTimer);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
window.location.reload(true);
|
||||||
window.location.href = '/';
|
window.location.href = '/';
|
||||||
}, 30000);
|
}, 30000);
|
||||||
}
|
}
|
||||||
@ -148,6 +149,7 @@
|
|||||||
status.style.display = 'block';
|
status.style.display = 'block';
|
||||||
clearTimeout(wsReconnectTimer);
|
clearTimeout(wsReconnectTimer);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
window.location.reload(true);
|
||||||
window.location.href = '/';
|
window.location.href = '/';
|
||||||
}, 30000);
|
}, 30000);
|
||||||
} else {
|
} else {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
version = "1.4.1"
|
version = "1.4.4"
|
||||||
to_old_version = "1.4.0"
|
to_old_version = "1.4.0"
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -553,7 +553,8 @@ void reconnect() {
|
|||||||
oledShowTopRow();
|
oledShowTopRow();
|
||||||
|
|
||||||
// Attempt to connect
|
// Attempt to connect
|
||||||
if (client.connect(bambu_serialnr, bambu_username, bambu_accesscode)) {
|
String clientId = String(bambu_serialnr) + "_" + String(random(0, 100));
|
||||||
|
if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode)) {
|
||||||
Serial.println("MQTT re/connected");
|
Serial.println("MQTT re/connected");
|
||||||
|
|
||||||
client.subscribe(report_topic.c_str());
|
client.subscribe(report_topic.c_str());
|
||||||
@ -619,11 +620,11 @@ bool setupMqtt() {
|
|||||||
|
|
||||||
// Verbinden mit dem MQTT-Server
|
// Verbinden mit dem MQTT-Server
|
||||||
bool connected = true;
|
bool connected = true;
|
||||||
if (client.connect(bambu_serialnr, bambu_username, bambu_accesscode))
|
String clientId = String(bambu_serialnr) + "_" + String(random(0, 100));
|
||||||
|
if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode))
|
||||||
{
|
{
|
||||||
client.setCallback(mqtt_callback);
|
client.setCallback(mqtt_callback);
|
||||||
client.setBufferSize(5120);
|
client.setBufferSize(5120);
|
||||||
// Optional: Topic abonnieren
|
|
||||||
client.subscribe(report_topic.c_str());
|
client.subscribe(report_topic.c_str());
|
||||||
//client.subscribe(request_topic.c_str());
|
//client.subscribe(request_topic.c_str());
|
||||||
Serial.println("MQTT-Client initialisiert");
|
Serial.println("MQTT-Client initialisiert");
|
||||||
@ -635,7 +636,7 @@ bool setupMqtt() {
|
|||||||
xTaskCreatePinnedToCore(
|
xTaskCreatePinnedToCore(
|
||||||
mqtt_loop, /* Function to implement the task */
|
mqtt_loop, /* Function to implement the task */
|
||||||
"BambuMqtt", /* Name of the task */
|
"BambuMqtt", /* Name of the task */
|
||||||
8192, /* Stack size in words */
|
10240, /* Stack size in words */
|
||||||
NULL, /* Task input parameter */
|
NULL, /* Task input parameter */
|
||||||
mqttTaskPrio, /* Priority of the task */
|
mqttTaskPrio, /* Priority of the task */
|
||||||
&BambuMqttTask, /* Task handle. */
|
&BambuMqttTask, /* Task handle. */
|
||||||
|
13
src/main.cpp
13
src/main.cpp
@ -92,12 +92,19 @@ void loop() {
|
|||||||
unsigned long currentMillis = millis();
|
unsigned long currentMillis = millis();
|
||||||
|
|
||||||
// Überprüfe regelmäßig die WLAN-Verbindung
|
// Überprüfe regelmäßig die WLAN-Verbindung
|
||||||
if (intervalElapsed(currentMillis, lastWifiCheckTime, wifiCheckInterval)) {
|
if (intervalElapsed(currentMillis, lastWifiCheckTime, wifiCheckInterval))
|
||||||
|
{
|
||||||
checkWiFiConnection();
|
checkWiFiConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wenn Bambu auto set Spool aktiv
|
// Wenn Bambu auto set Spool aktiv
|
||||||
if (autoSendToBambu && autoSetToBambuSpoolId > 0) {
|
if (autoSendToBambu && autoSetToBambuSpoolId > 0)
|
||||||
|
{
|
||||||
|
if (!bambu_connected)
|
||||||
|
{
|
||||||
|
bambu_restart();
|
||||||
|
}
|
||||||
|
|
||||||
if (intervalElapsed(currentMillis, lastAutoSetBambuAmsTime, autoSetBambuAmsInterval))
|
if (intervalElapsed(currentMillis, lastAutoSetBambuAmsTime, autoSetBambuAmsInterval))
|
||||||
{
|
{
|
||||||
if (hasReadRfidTag == 0)
|
if (hasReadRfidTag == 0)
|
||||||
@ -152,7 +159,7 @@ void loop() {
|
|||||||
lastWeightReadTime = currentMillis;
|
lastWeightReadTime = currentMillis;
|
||||||
|
|
||||||
// Prüfen ob die Waage korrekt genullt ist
|
// Prüfen ob die Waage korrekt genullt ist
|
||||||
if ((weight > 0 && weight < 5) || weight < 0)
|
if ((weight > 0 && weight < 5) || weight < -1)
|
||||||
{
|
{
|
||||||
if(scaleTareCounter < 5)
|
if(scaleTareCounter < 5)
|
||||||
{
|
{
|
||||||
|
@ -286,6 +286,14 @@ void setupWebserver(AsyncWebServer &server) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String url = request->getParam("url")->value();
|
String url = request->getParam("url")->value();
|
||||||
|
if (url.indexOf("http://") == -1 && url.indexOf("https://") == -1) {
|
||||||
|
url = "http://" + url;
|
||||||
|
}
|
||||||
|
// Remove trailing slash if exists
|
||||||
|
if (url.length() > 0 && url.charAt(url.length()-1) == '/') {
|
||||||
|
url = url.substring(0, url.length()-1);
|
||||||
|
}
|
||||||
|
|
||||||
bool octoEnabled = (request->getParam("octoEnabled")->value() == "true") ? true : false;
|
bool octoEnabled = (request->getParam("octoEnabled")->value() == "true") ? true : false;
|
||||||
String octoUrl = request->getParam("octoUrl")->value();
|
String octoUrl = request->getParam("octoUrl")->value();
|
||||||
String octoToken = (request->getParam("octoToken")->value() != "") ? request->getParam("octoToken")->value() : "";
|
String octoToken = (request->getParam("octoToken")->value() != "") ? request->getParam("octoToken")->value() : "";
|
||||||
@ -300,7 +308,7 @@ void setupWebserver(AsyncWebServer &server) {
|
|||||||
request->send(200, "application/json", jsonResponse);
|
request->send(200, "application/json", jsonResponse);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Route für das Überprüfen der Spoolman-Instanz
|
// Route für das Überprüfen der Bambu-Instanz
|
||||||
server.on("/api/bambu", HTTP_GET, [](AsyncWebServerRequest *request){
|
server.on("/api/bambu", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
if (!request->hasParam("bambu_ip") || !request->hasParam("bambu_serialnr") || !request->hasParam("bambu_accesscode")) {
|
if (!request->hasParam("bambu_ip") || !request->hasParam("bambu_serialnr") || !request->hasParam("bambu_accesscode")) {
|
||||||
request->send(400, "application/json", "{\"success\": false, \"error\": \"Missing parameter\"}");
|
request->send(400, "application/json", "{\"success\": false, \"error\": \"Missing parameter\"}");
|
||||||
|
@ -59,7 +59,7 @@ void initWiFi() {
|
|||||||
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
|
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
|
||||||
//wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
|
//wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
|
||||||
wm.setWiFiAutoReconnect(true);
|
wm.setWiFiAutoReconnect(true);
|
||||||
wm.setConnectTimeout(5);
|
wm.setConnectTimeout(10);
|
||||||
|
|
||||||
oledShowTopRow();
|
oledShowTopRow();
|
||||||
oledShowMessage("WiFi Setup");
|
oledShowMessage("WiFi Setup");
|
||||||
|
Reference in New Issue
Block a user