Compare commits
19 Commits
v1.4.2
...
024056cb7d
Author | SHA1 | Date | |
---|---|---|---|
024056cb7d | |||
e040a736b0 | |||
72b6b349c6 | |||
536950eeb3 | |||
fe4d2d7479 | |||
43719aac41 | |||
16d0079f7a | |||
48b9bf7076 | |||
b6bd4cb9ad | |||
e89bb1d547 | |||
f25789d703 | |||
65d8cd675f | |||
9dfe75ffa2 | |||
68cdd8ab40 | |||
1069781931 | |||
eada54eff2 | |||
48301ade36 | |||
76e0b20393 | |||
a765b39896 |
29
CHANGELOG.md
29
CHANGELOG.md
@ -1,5 +1,34 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.4.5] - 2025-03-25
|
||||||
|
### Changed
|
||||||
|
- update platformio.ini for version v1.4.5
|
||||||
|
- Merge branch 'testing'
|
||||||
|
- remove unused request_topic subscription and reduce MQTT task stack size
|
||||||
|
- Merge pull request #26 from tugsi/main
|
||||||
|
- rename report_topic to topic and update MQTT subscription logic, switched publish topic to request
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- increase MQTT buffer size and adjust task stack size
|
||||||
|
- Fix BufferSize for larger JSONs from X-Series
|
||||||
|
|
||||||
|
|
||||||
|
## [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
|
## [1.4.2] - 2025-03-23
|
||||||
### Added
|
### Added
|
||||||
- add WiFi connection check and restart Bambu if not connected
|
- add WiFi connection check and restart Bambu if not connected
|
||||||
|
@ -141,15 +141,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Rechte Spalte -->
|
|
||||||
<div class="column">
|
|
||||||
<div class="feature-box">
|
|
||||||
<h2>Bambu AMS</h2>
|
|
||||||
<div id="amsDataContainer">
|
|
||||||
<div class="amsData" id="amsData">Wait for AMS-Data...</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
14
html/rfid.js
14
html/rfid.js
@ -11,7 +11,7 @@ let reconnectTimer = null;
|
|||||||
// WebSocket Funktionen
|
// WebSocket Funktionen
|
||||||
function startHeartbeat() {
|
function startHeartbeat() {
|
||||||
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
||||||
|
|
||||||
heartbeatTimer = setInterval(() => {
|
heartbeatTimer = setInterval(() => {
|
||||||
// Prüfe ob zu lange keine Antwort kam
|
// Prüfe ob zu lange keine Antwort kam
|
||||||
if (Date.now() - lastHeartbeatResponse > HEARTBEAT_TIMEOUT) {
|
if (Date.now() - lastHeartbeatResponse > HEARTBEAT_TIMEOUT) {
|
||||||
@ -29,7 +29,7 @@ function startHeartbeat() {
|
|||||||
updateConnectionStatus();
|
updateConnectionStatus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Sende Heartbeat
|
// Sende Heartbeat
|
||||||
socket.send(JSON.stringify({ type: 'heartbeat' }));
|
socket.send(JSON.stringify({ type: 'heartbeat' }));
|
||||||
@ -83,7 +83,7 @@ function initWebSocket() {
|
|||||||
isConnected = false;
|
isConnected = false;
|
||||||
updateConnectionStatus();
|
updateConnectionStatus();
|
||||||
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
||||||
|
|
||||||
// Bei Fehler Verbindung schließen und neu aufbauen
|
// Bei Fehler Verbindung schließen und neu aufbauen
|
||||||
if (socket) {
|
if (socket) {
|
||||||
socket.close();
|
socket.close();
|
||||||
@ -109,7 +109,7 @@ function initWebSocket() {
|
|||||||
const bambuDot = document.getElementById('bambuDot');
|
const bambuDot = document.getElementById('bambuDot');
|
||||||
const spoolmanDot = document.getElementById('spoolmanDot');
|
const spoolmanDot = document.getElementById('spoolmanDot');
|
||||||
const ramStatus = document.getElementById('ramStatus');
|
const ramStatus = document.getElementById('ramStatus');
|
||||||
|
|
||||||
if (bambuDot) {
|
if (bambuDot) {
|
||||||
bambuDot.className = 'status-dot ' + (data.bambu_connected ? 'online' : 'offline');
|
bambuDot.className = 'status-dot ' + (data.bambu_connected ? 'online' : 'offline');
|
||||||
// Add click handler only when offline
|
// Add click handler only when offline
|
||||||
@ -208,7 +208,7 @@ document.addEventListener('spoolmanError', function(event) {
|
|||||||
showNotification(`Spoolman Error: ${event.detail.message}`, false);
|
showNotification(`Spoolman Error: ${event.detail.message}`, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('filamentSelected', function(event) {
|
document.addEventListener('filamentSelected', function (event) {
|
||||||
updateNfcInfo();
|
updateNfcInfo();
|
||||||
// Zeige Spool-Buttons wenn ein Filament ausgewählt wurde
|
// Zeige Spool-Buttons wenn ein Filament ausgewählt wurde
|
||||||
const selectedText = document.getElementById("selected-filament").textContent;
|
const selectedText = document.getElementById("selected-filament").textContent;
|
||||||
@ -490,7 +490,7 @@ function handleSpoolIn(amsId, trayId) {
|
|||||||
nozzle_temp_max: parseInt(maxTemp),
|
nozzle_temp_max: parseInt(maxTemp),
|
||||||
type: selectedSpool.filament.material,
|
type: selectedSpool.filament.material,
|
||||||
brand: selectedSpool.filament.vendor.name,
|
brand: selectedSpool.filament.vendor.name,
|
||||||
tray_info_idx: selectedSpool.filament.extra.bambu_idx.replace(/['"]+/g, '').trim(),
|
tray_info_idx: selectedSpool.filament.extra.bambu_idx?.replace(/['"]+/g, '').trim() || '',
|
||||||
cali_idx: "-1" // Default-Wert setzen
|
cali_idx: "-1" // Default-Wert setzen
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -686,4 +686,4 @@ function showNotification(message, isSuccess) {
|
|||||||
notification.remove();
|
notification.remove();
|
||||||
}, 300);
|
}, 300);
|
||||||
}, 3000);
|
}, 3000);
|
||||||
}
|
}
|
160
html/rfid_bambu.html
Normal file
160
html/rfid_bambu.html
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
<!-- head --><!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>FilaMan - Filament Management Tool</title>
|
||||||
|
<link rel="icon" type="image/png" href="/favicon.ico">
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<script>
|
||||||
|
fetch('/api/version')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
const versionSpan = document.querySelector('.version');
|
||||||
|
if (versionSpan) {
|
||||||
|
versionSpan.textContent = 'v' + data.version;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error fetching version:', error));
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="navbar">
|
||||||
|
<div style="display: flex; align-items: center; gap: 2rem;">
|
||||||
|
<img src="/logo.png" alt="FilaMan Logo" class="logo">
|
||||||
|
<div class="logo-text">
|
||||||
|
<h1>FilaMan<span class="version"></span></h1>
|
||||||
|
<h4>Filament Management Tool</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nav style="display: flex; gap: 1rem;">
|
||||||
|
<a href="/">Start</a>
|
||||||
|
<a href="/waage">Scale</a>
|
||||||
|
<a href="/spoolman">Spoolman/Bambu</a>
|
||||||
|
<a href="/about">About</a>
|
||||||
|
<a href="/upgrade">Upgrade</a>
|
||||||
|
</nav>
|
||||||
|
<div class="status-container">
|
||||||
|
<div class="status-item">
|
||||||
|
<span class="status-dot" id="bambuDot"></span>B
|
||||||
|
</div>
|
||||||
|
<div class="status-item">
|
||||||
|
<span class="status-dot" id="spoolmanDot"></span>S
|
||||||
|
</div>
|
||||||
|
<div class="ram-status" id="ramStatus"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- head -->
|
||||||
|
|
||||||
|
<div class="connection-status hidden">
|
||||||
|
<div class="spinner"></div>
|
||||||
|
<span>Connection lost. Trying to reconnect...</span>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="three-column-layout">
|
||||||
|
<!-- Linke Spalte -->
|
||||||
|
<div class="column">
|
||||||
|
<div class="feature-box">
|
||||||
|
<div class="statistics-header">
|
||||||
|
<h2>Statistics</h2>
|
||||||
|
<button id="refreshSpoolman" class="refresh-button">
|
||||||
|
<span>Refresh Spoolman</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="statistics-column">
|
||||||
|
<h3>Spools</h3>
|
||||||
|
<div class="spool-stat" style="display: flex; justify-content: center; align-items: center;">
|
||||||
|
<span class="stat-label">total:</span>
|
||||||
|
<span class="stat-value" id="totalSpools"></span>
|
||||||
|
<div style="width: auto;"></div>
|
||||||
|
<span class="stat-label">without Tag:</span>
|
||||||
|
<span class="stat-value" id="spoolsWithoutTag"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="statistics-grid">
|
||||||
|
<div class="statistics-column">
|
||||||
|
<h3>Overview</h3>
|
||||||
|
<ul class="statistics-list">
|
||||||
|
<li>
|
||||||
|
<span class="stat-label">Manufacturer:</span>
|
||||||
|
<span class="stat-value" id="totalVendors"></span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="stat-label">Weight:</span>
|
||||||
|
<span class="stat-value"><span id="totalWeight"></span></span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="stat-label">Length:</span>
|
||||||
|
<span class="stat-value"><span id="totalLength"></span></span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="statistics-column">
|
||||||
|
<h3>Materials</h3>
|
||||||
|
<ul class="statistics-list" id="materialsList">
|
||||||
|
<!-- Wird dynamisch befüllt -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="feature-box">
|
||||||
|
<div class="nfc-header">
|
||||||
|
<h2>NFC-Tag</h2>
|
||||||
|
<span id="nfcStatusIndicator" class="status-circle"></span>
|
||||||
|
</div>
|
||||||
|
<div class="nfc-status-display"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Mittlere Spalte -->
|
||||||
|
<div class="column">
|
||||||
|
<div class="feature-box">
|
||||||
|
<h2>Spoolman Spools</h2>
|
||||||
|
<label for="vendorSelect">Manufacturer:</label>
|
||||||
|
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||||
|
<select id="vendorSelect" class="styled-select">
|
||||||
|
<option value="">Please choose...</option>
|
||||||
|
</select>
|
||||||
|
<label style="margin-left: 10px;">
|
||||||
|
<input type="checkbox" id="onlyWithoutSmId" checked onchange="updateFilamentDropdown()">
|
||||||
|
Only Spools without SM ID
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="filamentSection" class="feature-box hidden">
|
||||||
|
<label>Spool / Filament:</label>
|
||||||
|
<div class="custom-dropdown">
|
||||||
|
<div class="dropdown-button" onclick="toggleFilamentDropdown()">
|
||||||
|
<div class="selected-color" id="selected-color"></div>
|
||||||
|
<span id="selected-filament">Please choose...</span>
|
||||||
|
<span class="dropdown-arrow">▼</span>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-content" id="filament-dropdown-content">
|
||||||
|
<!-- Optionen werden dynamisch hinzugefügt -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p id="nfcInfo" class="nfc-status"></p>
|
||||||
|
<button id="writeNfcButton" class="btn btn-primary hidden" onclick="writeNfcTag()">Write Tag</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Rechte Spalte -->
|
||||||
|
<div class="column">
|
||||||
|
<div class="feature-box">
|
||||||
|
<h2>Bambu AMS</h2>
|
||||||
|
<div id="amsDataContainer">
|
||||||
|
<div class="amsData" id="amsData">Wait for AMS-Data...</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="spoolman.js"></script>
|
||||||
|
<script src="rfid.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -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();
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
version = "1.4.2"
|
version = "1.4.5"
|
||||||
to_old_version = "1.4.0"
|
to_old_version = "1.4.0"
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -17,7 +17,7 @@ PubSubClient client(sslClient);
|
|||||||
|
|
||||||
TaskHandle_t BambuMqttTask;
|
TaskHandle_t BambuMqttTask;
|
||||||
|
|
||||||
String report_topic = "";
|
String topic = "";
|
||||||
//String request_topic = "";
|
//String request_topic = "";
|
||||||
const char* bambu_username = "bblp";
|
const char* bambu_username = "bblp";
|
||||||
const char* bambu_ip = nullptr;
|
const char* bambu_ip = nullptr;
|
||||||
@ -27,6 +27,7 @@ const char* bambu_serialnr = nullptr;
|
|||||||
String g_bambu_ip = "";
|
String g_bambu_ip = "";
|
||||||
String g_bambu_accesscode = "";
|
String g_bambu_accesscode = "";
|
||||||
String g_bambu_serialnr = "";
|
String g_bambu_serialnr = "";
|
||||||
|
bool bambuDisabled = false;
|
||||||
|
|
||||||
bool bambu_connected = false;
|
bool bambu_connected = false;
|
||||||
bool autoSendToBambu = false;
|
bool autoSendToBambu = false;
|
||||||
@ -91,7 +92,7 @@ bool loadBambuCredentials() {
|
|||||||
bambu_accesscode = g_bambu_accesscode.c_str();
|
bambu_accesscode = g_bambu_accesscode.c_str();
|
||||||
bambu_serialnr = g_bambu_serialnr.c_str();
|
bambu_serialnr = g_bambu_serialnr.c_str();
|
||||||
|
|
||||||
report_topic = "device/" + String(bambu_serialnr) + "/report";
|
topic = "device/" + String(bambu_serialnr);
|
||||||
//request_topic = "device/" + String(bambu_serialnr) + "/request";
|
//request_topic = "device/" + String(bambu_serialnr) + "/request";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -199,7 +200,7 @@ FilamentResult findFilamentIdx(String brand, String type) {
|
|||||||
bool sendMqttMessage(const String& payload) {
|
bool sendMqttMessage(const String& payload) {
|
||||||
Serial.println("Sending MQTT message");
|
Serial.println("Sending MQTT message");
|
||||||
Serial.println(payload);
|
Serial.println(payload);
|
||||||
if (client.publish(report_topic.c_str(), payload.c_str()))
|
if (client.publish((String(topic) + "/request").c_str(), payload.c_str()))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -557,7 +558,7 @@ void reconnect() {
|
|||||||
if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode)) {
|
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((String(topic) + "/report").c_str());
|
||||||
bambu_connected = true;
|
bambu_connected = true;
|
||||||
oledShowTopRow();
|
oledShowTopRow();
|
||||||
} else {
|
} else {
|
||||||
@ -606,14 +607,13 @@ bool setupMqtt() {
|
|||||||
bool success = loadBambuCredentials();
|
bool success = loadBambuCredentials();
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
Serial.println("Failed to load Bambu credentials");
|
bambuDisabled = true;
|
||||||
oledShowMessage("Bambu Credentials Missing");
|
|
||||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (success && bambu_ip != "" && bambu_accesscode != "" && bambu_serialnr != "")
|
if (success && bambu_ip != "" && bambu_accesscode != "" && bambu_serialnr != "")
|
||||||
{
|
{
|
||||||
|
bambuDisabled = false;
|
||||||
sslClient.setCACert(root_ca);
|
sslClient.setCACert(root_ca);
|
||||||
sslClient.setInsecure();
|
sslClient.setInsecure();
|
||||||
client.setServer(bambu_ip, 8883);
|
client.setServer(bambu_ip, 8883);
|
||||||
@ -624,9 +624,8 @@ bool setupMqtt() {
|
|||||||
if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode))
|
if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode))
|
||||||
{
|
{
|
||||||
client.setCallback(mqtt_callback);
|
client.setCallback(mqtt_callback);
|
||||||
client.setBufferSize(5120);
|
client.setBufferSize(15488);
|
||||||
client.subscribe(report_topic.c_str());
|
client.subscribe((String(topic) + "/report").c_str());
|
||||||
//client.subscribe(request_topic.c_str());
|
|
||||||
Serial.println("MQTT-Client initialisiert");
|
Serial.println("MQTT-Client initialisiert");
|
||||||
|
|
||||||
oledShowMessage("Bambu Connected");
|
oledShowMessage("Bambu Connected");
|
||||||
@ -636,7 +635,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 */
|
||||||
10240, /* Stack size in words */
|
8192, /* 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. */
|
||||||
@ -655,10 +654,7 @@ bool setupMqtt() {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Serial.println("Fehler: Keine MQTT-Daten vorhanden");
|
bambuDisabled = true;
|
||||||
oledShowMessage("Bambu Credentials Missing");
|
|
||||||
oledShowTopRow();
|
|
||||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -30,6 +30,7 @@ extern int ams_count;
|
|||||||
extern AMSData ams_data[MAX_AMS];
|
extern AMSData ams_data[MAX_AMS];
|
||||||
extern bool autoSendToBambu;
|
extern bool autoSendToBambu;
|
||||||
extern int autoSetToBambuSpoolId;
|
extern int autoSetToBambuSpoolId;
|
||||||
|
extern bool bambuDisabled;
|
||||||
|
|
||||||
bool loadBambuCredentials();
|
bool loadBambuCredentials();
|
||||||
bool saveBambuCredentials(const String& bambu_ip, const String& bambu_serialnr, const String& bambu_accesscode, const bool autoSend, const String& autoSendTime);
|
bool saveBambuCredentials(const String& bambu_ip, const String& bambu_serialnr, const String& bambu_accesscode, const bool autoSend, const String& autoSendTime);
|
||||||
|
@ -100,7 +100,7 @@ void loop() {
|
|||||||
// Wenn Bambu auto set Spool aktiv
|
// Wenn Bambu auto set Spool aktiv
|
||||||
if (autoSendToBambu && autoSetToBambuSpoolId > 0)
|
if (autoSendToBambu && autoSetToBambuSpoolId > 0)
|
||||||
{
|
{
|
||||||
if (!bambu_connected)
|
if (!bambuDisabled && !bambu_connected)
|
||||||
{
|
{
|
||||||
bambu_restart();
|
bambu_restart();
|
||||||
}
|
}
|
||||||
@ -159,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)
|
||||||
{
|
{
|
||||||
|
@ -29,7 +29,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
|
|||||||
if (type == WS_EVT_CONNECT) {
|
if (type == WS_EVT_CONNECT) {
|
||||||
Serial.println("Neuer Client verbunden!");
|
Serial.println("Neuer Client verbunden!");
|
||||||
// Sende die AMS-Daten an den neuen Client
|
// Sende die AMS-Daten an den neuen Client
|
||||||
sendAmsData(client);
|
if (!bambuDisabled) sendAmsData(client);
|
||||||
sendNfcData(client);
|
sendNfcData(client);
|
||||||
foundNfcTag(client, 0);
|
foundNfcTag(client, 0);
|
||||||
sendWriteResult(client, 3);
|
sendWriteResult(client, 3);
|
||||||
@ -213,7 +213,10 @@ void setupWebserver(AsyncWebServer &server) {
|
|||||||
// Route für RFID
|
// Route für RFID
|
||||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
Serial.println("Anfrage für /rfid erhalten");
|
Serial.println("Anfrage für /rfid erhalten");
|
||||||
AsyncWebServerResponse *response = request->beginResponse(LittleFS, "/rfid.html.gz", "text/html");
|
|
||||||
|
String page = (bambuDisabled) ? "/rfid.html.gz" : "/rfid_bambu.html.gz";
|
||||||
|
AsyncWebServerResponse *response = request->beginResponse(LittleFS, page, "text/html");
|
||||||
|
|
||||||
response->addHeader("Content-Encoding", "gzip");
|
response->addHeader("Content-Encoding", "gzip");
|
||||||
response->addHeader("Cache-Control", CACHE_CONTROL);
|
response->addHeader("Cache-Control", CACHE_CONTROL);
|
||||||
request->send(response);
|
request->send(response);
|
||||||
|
Reference in New Issue
Block a user