Compare commits
	
		
			14 Commits
		
	
	
		
			v1.3.91
			...
			de67cdbff3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| de67cdbff3 | |||
| 98fce15ccc | |||
| ab417ba64b | |||
| 320057bc49 | |||
| 9007a65fc2 | |||
| 2214f5f5de | |||
| 5c5846c52c | |||
| 517fa37a3d | |||
| aaa7a6ee9c | |||
| a0b8639488 | |||
| a16c05287e | |||
| ecb35a97bd | |||
| ba968611ec | |||
| 6bd11ddce3 | 
							
								
								
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,5 +1,18 @@ | ||||
| # Changelog | ||||
|  | ||||
| ## [1.3.92] - 2025-02-24 | ||||
| ### Changed | ||||
| - update webpages for version v1.3.92 | ||||
| - remove commented-out code in setBambuSpool function | ||||
| - update installation instructions and formatting in README files | ||||
|  | ||||
| ### Fixed | ||||
| - configure CPU frequency settings in setup function only for testing | ||||
| - update comment to clarify NVS reading process | ||||
| - adjust weight display logic to handle cases for weight less than 2 | ||||
| - update weight display logic to handle negative and specific weight cases | ||||
|  | ||||
|  | ||||
| ## [1.3.91] - 2025-02-23 | ||||
| ### Added | ||||
| - update GitHub Actions workflow for FTP firmware upload with improved credential checks | ||||
|   | ||||
							
								
								
									
										26
									
								
								README.de.md
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								README.de.md
									
									
									
									
									
								
							| @@ -71,14 +71,15 @@ Deutsches Erklärvideo: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaO | ||||
| | OLED SCL          | 22        | | ||||
| | PN532 IRQ         | 32        | | ||||
| | PN532 RESET       | 33        | | ||||
| | PN532 SCK         | 14        | | ||||
| | PN532 MOSI        | 13        | | ||||
| | PN532 MISO        | 12        | | ||||
| | PN532 CS/SS       | 15        | | ||||
| | PN532 SDA         | 21        | | ||||
| | PN532 SCL         | 22        | | ||||
|  | ||||
| Ich nutze die HSPI default PINs + IRQ und RESET am PN532 | ||||
| **Achte darauf, dass am PN532 die DIP-Schalter auf I2C gestellt sind** | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Software-Abhängigkeiten | ||||
|  | ||||
| @@ -105,21 +106,20 @@ Ich nutze die HSPI default PINs + IRQ und RESET am PN532 | ||||
|   - PN532 NFC Modul | ||||
|   - Verbindungskabel | ||||
|  | ||||
| ### Schritt-für-Schritt Installation | ||||
| ## Einfache Installation | ||||
| 1. **Gehe auf https://www.filaman.app/installer.html | ||||
| ## Schritt-für-Schritt Installation | ||||
| ### Einfache Installation | ||||
| 1. **Gehe auf [FilaMan Installer](https://www.filaman.app/installer.html)** | ||||
|  | ||||
| 2. **Stecke dein ESP an den Rechner und klicke Connect | ||||
| 2. **Stecke dein ESP an den Rechner und klicke Connect** | ||||
|  | ||||
| 3. **Wähle dein Device Port und klicke Intall | ||||
| 3. **Wähle dein Device Port und klicke Intall** | ||||
|  | ||||
| 4. **Ersteinrichtung:** | ||||
|     - Mit dem "FilaMan" WLAN-Zugangspunkt verbinden. | ||||
|     - WLAN-Einstellungen über das Konfigurationsportal vornehmen. | ||||
|     - Weboberfläche unter `http://filaman.local` oder der IP-Adresse aufrufen. | ||||
|  | ||||
| ## Compile by yourself | ||||
|  | ||||
| ### Compile by yourself | ||||
| 1. **Repository klonen:** | ||||
|     ```bash | ||||
|     git clone https://github.com/ManuelW77/Filaman.git | ||||
|   | ||||
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							| @@ -75,14 +75,15 @@ german explanatory video: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62z | ||||
| | OLED SCL          | 22        | | ||||
| | PN532 IRQ         | 32        | | ||||
| | PN532 RESET       | 33        | | ||||
| | PN532 SCK  	    | 14        | | ||||
| | PN532 MOSI    	| 13        | | ||||
| | PN532 MISO       	| 12        | | ||||
| | PN532 CS/SS       | 15        | | ||||
| | PN532 SDA         | 21        | | ||||
| | PN532 SCL         | 22        | | ||||
|  | ||||
| I use the HSPI default PINs + IRQ and RESET at the PN532 | ||||
| **Make sure that the DIP switches on the PN532 are set to I2C** | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Software Dependencies | ||||
|  | ||||
| @@ -95,9 +96,9 @@ I use the HSPI default PINs + IRQ and RESET at the PN532 | ||||
| - `Adafruit_SSD1306`: OLED display control | ||||
| - `HX711`: Load cell communication | ||||
|  | ||||
| ## Installation | ||||
| ### Installation | ||||
|  | ||||
| ### Prerequisites | ||||
| ## Prerequisites | ||||
| - **Software:** | ||||
|   - [PlatformIO](https://platformio.org/) in VS Code | ||||
|   - [Spoolman](https://github.com/Donkie/Spoolman) instance | ||||
| @@ -109,20 +110,20 @@ I use the HSPI default PINs + IRQ and RESET at the PN532 | ||||
|   - PN532 NFC Module | ||||
|   - Connecting wires | ||||
|  | ||||
| ### Step-by-Step Installation | ||||
| ## Easy Installation | ||||
| 1. **Go to https://www.filaman.app/installer.html | ||||
| ## Step-by-Step Installation | ||||
| ### Easy Installation | ||||
| 1. **Go to [FilaMan Installer](https://www.filaman.app/installer.html)** | ||||
|  | ||||
| 2. **Plug you device in and push Connect button | ||||
| 2. **Plug you device in and push Connect button** | ||||
|  | ||||
| 3. **Select your Device Port and push Intall | ||||
| 3. **Select your Device Port and push Intall** | ||||
|  | ||||
| 4. **Initial Setup:** | ||||
|     - Connect to the "FilaMan" WiFi access point. | ||||
|     - Configure WiFi settings through the captive portal. | ||||
|     - Access the web interface at `http://filaman.local` or the IP address. | ||||
|  | ||||
| ## Compile by yourself | ||||
| ### Compile by yourself | ||||
| 1. **Clone the Repository:** | ||||
|     ```bash | ||||
|     git clone https://github.com/ManuelW77/Filaman.git | ||||
|   | ||||
| @@ -1,7 +1,31 @@ | ||||
| { | ||||
|     "GFU99": "Generic TPU", | ||||
|     "GFN99": "Generic PA", | ||||
|     "GFN98": "Generic PA-CF", | ||||
|     "GFU99": "TPU", | ||||
|     "GFN99": "PA", | ||||
|     "GFN98": "PA-CF", | ||||
|     "GFL99": "PLA", | ||||
|     "GFL96": "PLA Silk", | ||||
|     "GFL98": "PLA-CF", | ||||
|     "GFL95": "PLA High Speed", | ||||
|     "GFG99": "PETG", | ||||
|     "GFG98": "PETG-CF", | ||||
|     "GFG97": "PCTG", | ||||
|     "GFB99": "ABS", | ||||
|     "GFC99": "PC", | ||||
|     "GFB98": "ASA", | ||||
|     "GFS99": "PVA", | ||||
|     "GFS98": "HIPS", | ||||
|     "GFT98": "PPS-CF", | ||||
|     "GFT97": "PPS", | ||||
|     "GFN97": "PPA-CF", | ||||
|     "GFN96": "PPA-GF", | ||||
|     "GFP99": "PE", | ||||
|     "GFP98": "PE-CF", | ||||
|     "GFP97": "PP", | ||||
|     "GFP96": "PP-CF", | ||||
|     "GFP95": "PP-GF", | ||||
|     "GFR99": "EVA", | ||||
|     "GFR98": "PHA", | ||||
|     "GFS97": "BVOH", | ||||
|     "GFA01": "Bambu PLA Matte", | ||||
|     "GFA00": "Bambu PLA Basic", | ||||
|     "GFA09": "Bambu PLA Tough", | ||||
| @@ -13,15 +37,11 @@ | ||||
|     "GFL03": "eSUN PLA+", | ||||
|     "GFL01": "PolyTerra PLA", | ||||
|     "GFL00": "PolyLite PLA", | ||||
|     "GFL99": "Generic PLA", | ||||
|     "GFL96": "Generic PLA Silk", | ||||
|     "GFL98": "Generic PLA-CF", | ||||
|     "GFA50": "Bambu PLA-CF", | ||||
|     "GFS02": "Bambu Support For PLA", | ||||
|     "GFA11": "Bambu PLA Aero", | ||||
|     "GFL04": "Overture PLA", | ||||
|     "GFL05": "Overture Matte PLA", | ||||
|     "GFL95": "Generic PLA High Speed", | ||||
|     "GFA12": "Bambu PLA Glow", | ||||
|     "GFA13": "Bambu PLA Dynamic", | ||||
|     "GFA15": "Bambu PLA Galaxy", | ||||
| @@ -30,41 +50,21 @@ | ||||
|     "GFU00": "Bambu TPU 95A HF", | ||||
|     "GFG00": "Bambu PETG Basic", | ||||
|     "GFT01": "Bambu PET-CF", | ||||
|     "GFG99": "Generic PETG", | ||||
|     "GFG98": "Generic PETG-CF", | ||||
|     "GFG50": "Bambu PETG-CF", | ||||
|     "GFG60": "PolyLite PETG", | ||||
|     "GFG01": "Bambu PETG Translucent", | ||||
|     "GFG97": "Generic PCTG", | ||||
|     "GFB00": "Bambu ABS", | ||||
|     "GFB99": "Generic ABS", | ||||
|     "GFB60": "PolyLite ABS", | ||||
|     "GFB50": "Bambu ABS-GF", | ||||
|     "GFC00": "Bambu PC", | ||||
|     "GFC99": "Generic PC", | ||||
|     "GFB98": "Generic ASA", | ||||
|     "GFB01": "Bambu ASA", | ||||
|     "GFB61": "PolyLite ASA", | ||||
|     "GFB02": "Bambu ASA-Aero", | ||||
|     "GFS99": "Generic PVA", | ||||
|     "GFS04": "Bambu PVA", | ||||
|     "GFS01": "Bambu Support G", | ||||
|     "GFN03": "Bambu PA-CF", | ||||
|     "GFN04": "Bambu PAHT-CF", | ||||
|     "GFS03": "Bambu Support For PA/PET", | ||||
|     "GFN05": "Bambu PA6-CF", | ||||
|     "GFN08": "Bambu PA6-GF", | ||||
|     "GFS98": "Generic HIPS", | ||||
|     "GFT98": "Generic PPS-CF", | ||||
|     "GFT97": "Generic PPS", | ||||
|     "GFN97": "Generic PPA-CF", | ||||
|     "GFN96": "Generic PPA-GF", | ||||
|     "GFP99": "Generic PE", | ||||
|     "GFP98": "Generic PE-CF", | ||||
|     "GFP97": "Generic PP", | ||||
|     "GFP96": "Generic PP-CF", | ||||
|     "GFP95": "Generic PP-GF", | ||||
|     "GFR99": "Generic EVA", | ||||
|     "GFR98": "Generic PHA", | ||||
|     "GFS97": "Generic BVOH" | ||||
|     "GFN08": "Bambu PA6-GF" | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								img/IMG_2589.jpeg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/IMG_2589.jpeg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 136 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/IMG_2590.jpeg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/IMG_2590.jpeg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 143 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/Schaltplan.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/Schaltplan.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 283 KiB | 
| @@ -9,7 +9,7 @@ | ||||
| ; https://docs.platformio.org/page/projectconf.html | ||||
|  | ||||
| [common] | ||||
| version = "1.3.91" | ||||
| version = "1.3.92" | ||||
| ## | ||||
| [env:esp32dev] | ||||
| platform = espressif32 | ||||
|   | ||||
							
								
								
									
										116
									
								
								src/bambu.cpp
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								src/bambu.cpp
									
									
									
									
									
								
							| @@ -81,19 +81,23 @@ bool loadBambuCredentials() { | ||||
|     return false; | ||||
| } | ||||
|  | ||||
| String findFilamentIdx(String brand, String type) { | ||||
| struct FilamentResult { | ||||
|     String key; | ||||
|     String type; | ||||
| }; | ||||
|  | ||||
| FilamentResult findFilamentIdx(String brand, String type) { | ||||
|     // JSON-Dokument für die Filament-Daten erstellen | ||||
|     JsonDocument doc; | ||||
|      | ||||
|     // Laden der bambu_filaments.json | ||||
|     if (!loadJsonValue("/bambu_filaments.json", doc)) { | ||||
|         Serial.println("Fehler beim Laden der Filament-Daten"); | ||||
|         return "GFL99"; // Fallback auf Generic PLA | ||||
|         return {"GFL99", "PLA"}; // Fallback auf Generic PLA | ||||
|     } | ||||
|  | ||||
|     // 1. Erst versuchen wir die exakte Brand + Type Kombination zu finden | ||||
|     String searchKey; | ||||
|      | ||||
|     // 1. Suche nach Brand + Type Kombination | ||||
|     if (brand == "Bambu" || brand == "Bambulab") { | ||||
|         searchKey = "Bambu " + type; | ||||
|     } else if (brand == "PolyLite") { | ||||
| @@ -109,20 +113,43 @@ String findFilamentIdx(String brand, String type) { | ||||
|     // Durchsuche alle Einträge nach der Brand + Type Kombination | ||||
|     for (JsonPair kv : doc.as<JsonObject>()) { | ||||
|         if (kv.value().as<String>() == searchKey) { | ||||
|             return kv.key().c_str(); | ||||
|             return {kv.key().c_str(), kv.value().as<String>()}; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // 2. Wenn nicht gefunden, suche nach Generic + Type | ||||
|     searchKey = "Generic " + type; | ||||
|     // 2. Wenn nicht gefunden, zerlege den type String in Wörter und suche nach jedem Wort | ||||
|     // Sammle alle vorhandenen Filamenttypen aus der JSON | ||||
|     std::vector<String> knownTypes; | ||||
|     for (JsonPair kv : doc.as<JsonObject>()) { | ||||
|         if (kv.value().as<String>() == searchKey) { | ||||
|             return kv.key().c_str(); | ||||
|         String value = kv.value().as<String>(); | ||||
|         // Extrahiere den Typ ohne Markennamen | ||||
|         if (value.indexOf(" ") != -1) { | ||||
|             value = value.substring(value.indexOf(" ") + 1); | ||||
|         } | ||||
|         if (!value.isEmpty()) { | ||||
|             knownTypes.push_back(value); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Zerlege den Input-Type in Wörter | ||||
|     String typeStr = type; | ||||
|     typeStr.trim(); | ||||
|      | ||||
|     // Durchsuche für jedes bekannte Filament, ob es im Input vorkommt | ||||
|     for (const String& knownType : knownTypes) { | ||||
|         if (typeStr.indexOf(knownType) != -1) { | ||||
|             // Suche nach diesem Typ in der Original-JSON | ||||
|             for (JsonPair kv : doc.as<JsonObject>()) { | ||||
|                 String value = kv.value().as<String>(); | ||||
|                 if (value.indexOf(knownType) != -1) { | ||||
|                     return {kv.key().c_str(), knownType}; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // 3. Wenn immer noch nichts gefunden, gebe GFL99 zurück (Generic PLA) | ||||
|     return "GFL99"; | ||||
|     return {"GFL99", "PLA"}; | ||||
| } | ||||
|  | ||||
| bool sendMqttMessage(String payload) { | ||||
| @@ -156,15 +183,22 @@ bool setBambuSpool(String payload) { | ||||
|     int minTemp = doc["nozzle_temp_min"]; | ||||
|     int maxTemp = doc["nozzle_temp_max"]; | ||||
|     String type = doc["type"].as<String>(); | ||||
|     (type == "PLA+") ? type = "PLA" : type; | ||||
|     String brand = doc["brand"].as<String>(); | ||||
|     String tray_info_idx = (doc["tray_info_idx"].as<String>() != "-1") ? doc["tray_info_idx"].as<String>() : ""; | ||||
|     if (tray_info_idx == "") tray_info_idx = (brand != "" && type != "") ? findFilamentIdx(brand, type) : ""; | ||||
|     if (tray_info_idx == "") { | ||||
|         if (brand != "" && type != "") { | ||||
|             FilamentResult result = findFilamentIdx(brand, type); | ||||
|             tray_info_idx = result.key; | ||||
|             type = result.type;  // Aktualisiere den type mit dem gefundenen Basistyp | ||||
|         } | ||||
|     } | ||||
|     String setting_id = doc["bambu_setting_id"].as<String>(); | ||||
|     String cali_idx = doc["cali_idx"].as<String>(); | ||||
|  | ||||
|     doc.clear(); | ||||
|  | ||||
|     doc["print"]["sequence_id"] = 0; | ||||
|     doc["print"]["sequence_id"] = "0"; | ||||
|     doc["print"]["command"] = "ams_filament_setting"; | ||||
|     doc["print"]["ams_id"] = amsId < 200 ? amsId : 255; | ||||
|     doc["print"]["tray_id"] = trayId < 200 ? trayId : 254; | ||||
| @@ -172,10 +206,10 @@ bool setBambuSpool(String payload) { | ||||
|     doc["print"]["nozzle_temp_min"] = minTemp; | ||||
|     doc["print"]["nozzle_temp_max"] = maxTemp; | ||||
|     doc["print"]["tray_type"] = type; | ||||
|     doc["print"]["cali_idx"] = (cali_idx != "") ? cali_idx : ""; | ||||
|     //doc["print"]["cali_idx"] = (cali_idx != "") ? cali_idx : ""; | ||||
|     doc["print"]["tray_info_idx"] = tray_info_idx; | ||||
|     doc["print"]["setting_id"] = setting_id; | ||||
|  | ||||
|      | ||||
|     // Serialize the JSON | ||||
|     String output; | ||||
|     serializeJson(doc, output); | ||||
| @@ -194,13 +228,13 @@ bool setBambuSpool(String payload) { | ||||
|  | ||||
|     if (cali_idx != "") { | ||||
|         yield(); | ||||
|         doc["print"]["sequence_id"] = 0; | ||||
|         doc["print"]["sequence_id"] = "0"; | ||||
|         doc["print"]["command"] = "extrusion_cali_sel"; | ||||
|         doc["print"]["filament_id"] = tray_info_idx; | ||||
|         doc["print"]["nozzle_diameter"] = "0.4"; | ||||
|         doc["print"]["cali_idx"] = cali_idx.toInt(); | ||||
|         doc["print"]["tray_id"] = trayId < 200 ? trayId : 254; | ||||
|         doc["print"]["ams_id"] = amsId < 200 ? amsId : 255; | ||||
|         //doc["print"]["ams_id"] = amsId < 200 ? amsId : 255; | ||||
|  | ||||
|         // Serialize the JSON | ||||
|         String output; | ||||
| @@ -218,37 +252,6 @@ bool setBambuSpool(String payload) { | ||||
|         doc.clear(); | ||||
|         yield(); | ||||
|     } | ||||
| /* | ||||
|     if (setting_id != "") { | ||||
|         yield(); | ||||
|         doc["print"]["sequence_id"] = 0; | ||||
|         doc["print"]["command"] = "ams_filament_setting"; | ||||
|         doc["print"]["nozzle_temp_min"] = minTemp; | ||||
|         doc["print"]["nozzle_temp_max"] = maxTemp; | ||||
|         doc["print"]["setting_id"] = setting_id; | ||||
|         doc["print"]["tray_color"] = color.length() == 8 ? color : color+"FF"; | ||||
|         doc["print"]["ams_id"] = amsId < 200 ? amsId : 255; | ||||
|         doc["print"]["tray_id"] = trayId < 200 ? trayId : 254; | ||||
|         doc["print"]["tray_info_idx"] = tray_info_idx; | ||||
|         doc["print"]["tray_type"] = type; | ||||
|  | ||||
|         // Serialize the JSON | ||||
|         String output; | ||||
|         serializeJson(doc, output); | ||||
|  | ||||
|         if (sendMqttMessage(output)) { | ||||
|             Serial.println("Filament Setting successfully set"); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             Serial.println("Failed to set Filament setting"); | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         doc.clear(); | ||||
|         yield(); | ||||
|     } | ||||
| */ | ||||
|  | ||||
|     return true; | ||||
| } | ||||
| @@ -256,6 +259,7 @@ bool setBambuSpool(String payload) { | ||||
| // init | ||||
| void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|     String message; | ||||
|  | ||||
|     for (int i = 0; i < length; i++) { | ||||
|         message += (char)payload[i]; | ||||
|     } | ||||
| @@ -270,9 +274,9 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|     } | ||||
|  | ||||
|     // Prüfen, ob "print->upgrade_state" und "print.ams.ams" existieren | ||||
|     if (doc["print"]["upgrade_state"].is<String>()) { | ||||
|     if (doc["print"]["upgrade_state"].is<JsonObject>()) { | ||||
|         // Prüfen ob AMS-Daten vorhanden sind | ||||
|         if (!doc["print"]["ams"].is<String>() || !doc["print"]["ams"]["ams"].is<String>()) { | ||||
|         if (!doc["print"]["ams"].is<JsonObject>() || !doc["print"]["ams"]["ams"].is<JsonArray>()) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
| @@ -315,7 +319,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|         } | ||||
|  | ||||
|         // Prüfe die externe Spule | ||||
|         if (!hasChanges && doc["print"]["vt_tray"].is<String>()) { | ||||
|         if (!hasChanges && doc["print"]["vt_tray"].is<JsonObject>()) { | ||||
|             JsonObject vtTray = doc["print"]["vt_tray"]; | ||||
|             bool foundExternal = false; | ||||
|              | ||||
| @@ -363,7 +367,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|         ams_count = amsArray.size(); | ||||
|  | ||||
|         // Wenn externe Spule vorhanden, füge sie hinzu | ||||
|         if (doc["print"]["vt_tray"].is<String>()) { | ||||
|         if (doc["print"]["vt_tray"].is<JsonObject>()) { | ||||
|             JsonObject vtTray = doc["print"]["vt_tray"]; | ||||
|             int extIdx = ams_count;  // Index für externe Spule | ||||
|             ams_data[extIdx].ams_id = 255;  // Spezielle ID für externe Spule | ||||
| @@ -374,8 +378,12 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|             ams_data[extIdx].trays[0].tray_color = vtTray["tray_color"].as<String>(); | ||||
|             ams_data[extIdx].trays[0].nozzle_temp_min = vtTray["nozzle_temp_min"].as<int>(); | ||||
|             ams_data[extIdx].trays[0].nozzle_temp_max = vtTray["nozzle_temp_max"].as<int>(); | ||||
|             ams_data[extIdx].trays[0].setting_id = vtTray["setting_id"].as<String>(); | ||||
|             ams_data[extIdx].trays[0].cali_idx = vtTray["cali_idx"].as<String>(); | ||||
|  | ||||
|             if (doc["print"]["vt_tray"]["tray_type"].as<String>() != "") | ||||
|             { | ||||
|                 ams_data[extIdx].trays[0].setting_id = vtTray["setting_id"].as<String>(); | ||||
|                 ams_data[extIdx].trays[0].cali_idx = vtTray["cali_idx"].as<String>(); | ||||
|             } | ||||
|             ams_count++;  // Erhöhe ams_count für die externe Spule | ||||
|         } | ||||
|  | ||||
| @@ -415,7 +423,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) { | ||||
|         int amsId = doc["print"]["ams_id"].as<int>(); | ||||
|         int trayId = doc["print"]["tray_id"].as<int>(); | ||||
|         String settingId = doc["print"]["setting_id"].as<String>(); | ||||
|          | ||||
|  | ||||
|         // Finde das entsprechende AMS und Tray | ||||
|         for (int i = 0; i < ams_count; i++) { | ||||
|             if (ams_data[i].ams_id == amsId) { | ||||
|   | ||||
| @@ -122,7 +122,7 @@ void loop() { | ||||
|   // Ausgabe der Waage auf Display | ||||
|   if (pauseMainTask == 0 && weight != lastWeight && hasReadRfidTag == 0) | ||||
|   { | ||||
|     (weight < 0) ? oledShowMessage("!! -1") : oledShowWeight(weight); | ||||
|     (weight < 2) ? ((weight < -2) ? oledShowMessage("!! -0") : oledShowWeight(0)) : oledShowWeight(weight); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -55,7 +55,7 @@ uint8_t start_scale() { | ||||
|   Serial.println("Prüfe Calibration Value"); | ||||
|   long calibrationValue; | ||||
|  | ||||
|   // NVS | ||||
|   // NVS lesen | ||||
|   preferences.begin(NVS_NAMESPACE, true); // true = readonly | ||||
|   calibrationValue = preferences.getLong(NVS_KEY_CALIBRATION, defaultScaleCalibrationValue); | ||||
|   preferences.end(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user