Compare commits
	
		
			10 Commits
		
	
	
		
			v2.0.0-bet
			...
			v2.0.0-bet
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7a15424bc7 | |||
| 039a29fa3c | |||
| 6cccf3d603 | |||
| 693ee839e5 | |||
| 0bf383ecd9 | |||
| 6451d91c59 | |||
| 8d82e221b5 | |||
| bf63ecd594 | |||
| 0daa3a148b | |||
| 602642c203 | 
							
								
								
									
										340
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										340
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,5 +1,345 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  | ## [2.0.0-beta12] - 2025-08-30 | ||||||
|  | ### Breaking Changes | ||||||
|  | - enhance commit categorization for breaking changes | ||||||
|  | - Handling of Spools with Tags from Vendors. fix: improve get_last_tag function to handle non-beta tags and fallback to newest tag | ||||||
|  |  | ||||||
|  | ### Added | ||||||
|  | - enhance weight processing with filtered display and API stability checks | ||||||
|  | - implement weight stabilization functions and improve tare handling | ||||||
|  | - add fast-path JSON reading for web interface display | ||||||
|  | - add handling for successful NFC tag writes to send weight to Spoolman without auto-sending to Bambu | ||||||
|  | - implement robust page reading with error recovery for NFC tags | ||||||
|  | - enhance NFC tag reading with robust error recovery and JSON optimization for fast-path detection | ||||||
|  | - implement robust page reading and safe tag detection with error recovery | ||||||
|  | - add Manufacturer Tags support documentation in German and English | ||||||
|  | - add display delay for vendor, filament, and spool creation processes | ||||||
|  | - add progress bar updates for vendor and filament creation processes | ||||||
|  | - update vendor and filament ID handling to use NULL and add delays for stability | ||||||
|  | - add delay to ensure proper setting of vendor and filament IDs after API state changes | ||||||
|  | - enhance NDEF decoding with detailed validation and debugging output | ||||||
|  | - enhance NDEF decoding to validate structure and extract JSON payload | ||||||
|  | - add logging for decoded JSON data in NFC processing | ||||||
|  | - implement filament and spool creation in Spoolman API | ||||||
|  | - Add JSON structure comments for filament and spool creation | ||||||
|  | - Add vendor and filament management to API; implement recycling factory handling in NFC | ||||||
|  |  | ||||||
|  | ### Changed | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta12 | ||||||
|  | - update changelog and header for version v2.0.0-beta11 | ||||||
|  | - update changelog and header for version v2.0.0-beta11 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta11 | ||||||
|  | - update changelog and header for version v2.0.0-beta10 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta10 | ||||||
|  | - update changelog and header for version v2.0.0-beta9 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta9 | ||||||
|  | - update changelog and header for version v2.0.0-beta8 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta8 | ||||||
|  | - update changelog and header for version v2.0.0-beta7 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta7 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta5 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta5 | ||||||
|  | - update changelog and header for version v2.0.0-beta4 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta4 | ||||||
|  | - update changelog and header for version v2.0.0-beta3 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta3 | ||||||
|  | - update createVendor and checkVendor functions to accept JsonDocument payload | ||||||
|  | - update changelog and header for version v2.0.0-beta2 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta2 | ||||||
|  | - clarify product URL description for Manufacturer Tags in German and English documentation | ||||||
|  | - update changelog and header for version v2.0.0-beta1 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta1 | ||||||
|  | - update version to 2.0.0 in platformio.ini | ||||||
|  | - update changelog and header for version v1.5.12-beta18 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta18 | ||||||
|  | - update changelog and header for version v1.5.12-beta17 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta17 | ||||||
|  | - optimize page limit detection and remove redundant verification code | ||||||
|  | - update changelog and header for version v1.5.12-beta16 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta16 | ||||||
|  | - Refactor NFC interface handling and improve error diagnostics | ||||||
|  | - update changelog and header for version v1.5.12-beta15 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta15 | ||||||
|  | - enhance NFC write operation diagnostics and improve error handling | ||||||
|  | - enhance NFC write operation handling and prevent tag operations during write | ||||||
|  | - update changelog and header for version v1.5.12-beta14 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta14 | ||||||
|  | - optimize JSON payload structure and enhance NFC tag validation process | ||||||
|  | - update changelog and header for version v1.5.12-beta13 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta13 | ||||||
|  | - reorganize clearUserDataArea function for improved clarity and safety | ||||||
|  | - update changelog and header for version v1.5.12-beta12 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta12 | ||||||
|  | - update changelog and header for version v1.5.12-beta11 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta11 | ||||||
|  | - update changelog and header for version v1.5.12-beta10 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta10 | ||||||
|  | - streamline task creation in checkVendor and checkFilament functions | ||||||
|  | - update changelog and header for version v1.5.12-beta9 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta9 | ||||||
|  | - update changelog and header for version v1.5.12-beta8 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta8 | ||||||
|  | - update changelog and header for version v1.5.12-beta7 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta7 | ||||||
|  | - update changelog and header for version v1.5.12-beta6 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta6 | ||||||
|  | - improve task synchronization in vendor, filament, and spool creation functions | ||||||
|  | - update changelog and header for version v1.5.12-beta5 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta5 | ||||||
|  | - update changelog and header for version v1.5.12-beta4 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta4 | ||||||
|  | - update changelog and header for version v1.5.12-beta3 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta3 | ||||||
|  | - update changelog and header for version v1.5.12-beta2 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta2 | ||||||
|  | - update changelog and header for version v1.5.12-beta1 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta1 | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  |  | ||||||
|  | ### Fixed | ||||||
|  | - call scale.tare() in setup after starting scale | ||||||
|  | - update createVendor function to use external_id as comment instead of static text | ||||||
|  | - update to_old_version in platformio.ini to reflect correct previous version | ||||||
|  | - increase delay in start_scale function for improved stability | ||||||
|  | - replace progress bar with message display for remaining weight in sendToApi function | ||||||
|  | - update vendor check to use shorthand key in payload | ||||||
|  | - reset NFC state on API send failure to allow retry | ||||||
|  | - update createdFilamentId reset value to 65535 for better task handling | ||||||
|  | - update createdVendorId reset value to 65535 for improved API handling | ||||||
|  | - update spoolman ID reset values to 65535 for better API response detection | ||||||
|  | - correct color_hex key usage and comment out unused date fields in spool creation | ||||||
|  | - improve API state handling and vendor name formatting | ||||||
|  | - enhance filament creation logic to include dynamic comments based on payload | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [2.0.0-beta11] - 2025-08-30 | ||||||
|  | ### Breaking Changes | ||||||
|  | - enhance commit categorization for breaking changes | ||||||
|  | - Handling of Spools with Tags from Vendors. fix: improve get_last_tag function to handle non-beta tags and fallback to newest tag | ||||||
|  |  | ||||||
|  | ### Added | ||||||
|  | - implement weight stabilization functions and improve tare handling | ||||||
|  | - add fast-path JSON reading for web interface display | ||||||
|  | - add handling for successful NFC tag writes to send weight to Spoolman without auto-sending to Bambu | ||||||
|  | - implement robust page reading with error recovery for NFC tags | ||||||
|  | - enhance NFC tag reading with robust error recovery and JSON optimization for fast-path detection | ||||||
|  | - implement robust page reading and safe tag detection with error recovery | ||||||
|  | - add Manufacturer Tags support documentation in German and English | ||||||
|  | - add display delay for vendor, filament, and spool creation processes | ||||||
|  | - add progress bar updates for vendor and filament creation processes | ||||||
|  | - update vendor and filament ID handling to use NULL and add delays for stability | ||||||
|  | - add delay to ensure proper setting of vendor and filament IDs after API state changes | ||||||
|  | - enhance NDEF decoding with detailed validation and debugging output | ||||||
|  | - enhance NDEF decoding to validate structure and extract JSON payload | ||||||
|  | - add logging for decoded JSON data in NFC processing | ||||||
|  | - implement filament and spool creation in Spoolman API | ||||||
|  | - Add JSON structure comments for filament and spool creation | ||||||
|  | - Add vendor and filament management to API; implement recycling factory handling in NFC | ||||||
|  |  | ||||||
|  | ### Changed | ||||||
|  | - update changelog and header for version v2.0.0-beta11 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta11 | ||||||
|  | - update changelog and header for version v2.0.0-beta10 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta10 | ||||||
|  | - update changelog and header for version v2.0.0-beta9 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta9 | ||||||
|  | - update changelog and header for version v2.0.0-beta8 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta8 | ||||||
|  | - update changelog and header for version v2.0.0-beta7 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta7 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta5 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta5 | ||||||
|  | - update changelog and header for version v2.0.0-beta4 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta4 | ||||||
|  | - update changelog and header for version v2.0.0-beta3 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta3 | ||||||
|  | - update createVendor and checkVendor functions to accept JsonDocument payload | ||||||
|  | - update changelog and header for version v2.0.0-beta2 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta2 | ||||||
|  | - clarify product URL description for Manufacturer Tags in German and English documentation | ||||||
|  | - update changelog and header for version v2.0.0-beta1 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta1 | ||||||
|  | - update version to 2.0.0 in platformio.ini | ||||||
|  | - update changelog and header for version v1.5.12-beta18 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta18 | ||||||
|  | - update changelog and header for version v1.5.12-beta17 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta17 | ||||||
|  | - optimize page limit detection and remove redundant verification code | ||||||
|  | - update changelog and header for version v1.5.12-beta16 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta16 | ||||||
|  | - Refactor NFC interface handling and improve error diagnostics | ||||||
|  | - update changelog and header for version v1.5.12-beta15 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta15 | ||||||
|  | - enhance NFC write operation diagnostics and improve error handling | ||||||
|  | - enhance NFC write operation handling and prevent tag operations during write | ||||||
|  | - update changelog and header for version v1.5.12-beta14 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta14 | ||||||
|  | - optimize JSON payload structure and enhance NFC tag validation process | ||||||
|  | - update changelog and header for version v1.5.12-beta13 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta13 | ||||||
|  | - reorganize clearUserDataArea function for improved clarity and safety | ||||||
|  | - update changelog and header for version v1.5.12-beta12 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta12 | ||||||
|  | - update changelog and header for version v1.5.12-beta11 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta11 | ||||||
|  | - update changelog and header for version v1.5.12-beta10 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta10 | ||||||
|  | - streamline task creation in checkVendor and checkFilament functions | ||||||
|  | - update changelog and header for version v1.5.12-beta9 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta9 | ||||||
|  | - update changelog and header for version v1.5.12-beta8 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta8 | ||||||
|  | - update changelog and header for version v1.5.12-beta7 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta7 | ||||||
|  | - update changelog and header for version v1.5.12-beta6 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta6 | ||||||
|  | - improve task synchronization in vendor, filament, and spool creation functions | ||||||
|  | - update changelog and header for version v1.5.12-beta5 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta5 | ||||||
|  | - update changelog and header for version v1.5.12-beta4 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta4 | ||||||
|  | - update changelog and header for version v1.5.12-beta3 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta3 | ||||||
|  | - update changelog and header for version v1.5.12-beta2 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta2 | ||||||
|  | - update changelog and header for version v1.5.12-beta1 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta1 | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  |  | ||||||
|  | ### Fixed | ||||||
|  | - call scale.tare() in setup after starting scale | ||||||
|  | - update createVendor function to use external_id as comment instead of static text | ||||||
|  | - update to_old_version in platformio.ini to reflect correct previous version | ||||||
|  | - increase delay in start_scale function for improved stability | ||||||
|  | - replace progress bar with message display for remaining weight in sendToApi function | ||||||
|  | - update vendor check to use shorthand key in payload | ||||||
|  | - reset NFC state on API send failure to allow retry | ||||||
|  | - update createdFilamentId reset value to 65535 for better task handling | ||||||
|  | - update createdVendorId reset value to 65535 for improved API handling | ||||||
|  | - update spoolman ID reset values to 65535 for better API response detection | ||||||
|  | - correct color_hex key usage and comment out unused date fields in spool creation | ||||||
|  | - improve API state handling and vendor name formatting | ||||||
|  | - enhance filament creation logic to include dynamic comments based on payload | ||||||
|  |  | ||||||
|  | ## [2.0.0-beta10] - 2025-08-30 | ||||||
|  | ### Breaking Changes | ||||||
|  | - enhance commit categorization for breaking changes | ||||||
|  | - Handling of Spools with Tags from Vendors. fix: improve get_last_tag function to handle non-beta tags and fallback to newest tag | ||||||
|  |  | ||||||
|  | ### Added | ||||||
|  | - add fast-path JSON reading for web interface display | ||||||
|  | - add handling for successful NFC tag writes to send weight to Spoolman without auto-sending to Bambu | ||||||
|  | - implement robust page reading with error recovery for NFC tags | ||||||
|  | - enhance NFC tag reading with robust error recovery and JSON optimization for fast-path detection | ||||||
|  | - implement robust page reading and safe tag detection with error recovery | ||||||
|  | - add Manufacturer Tags support documentation in German and English | ||||||
|  | - add display delay for vendor, filament, and spool creation processes | ||||||
|  | - add progress bar updates for vendor and filament creation processes | ||||||
|  | - update vendor and filament ID handling to use NULL and add delays for stability | ||||||
|  | - add delay to ensure proper setting of vendor and filament IDs after API state changes | ||||||
|  | - enhance NDEF decoding with detailed validation and debugging output | ||||||
|  | - enhance NDEF decoding to validate structure and extract JSON payload | ||||||
|  | - add logging for decoded JSON data in NFC processing | ||||||
|  | - implement filament and spool creation in Spoolman API | ||||||
|  | - Add JSON structure comments for filament and spool creation | ||||||
|  | - Add vendor and filament management to API; implement recycling factory handling in NFC | ||||||
|  |  | ||||||
|  | ### Changed | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta10 | ||||||
|  | - update changelog and header for version v2.0.0-beta9 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta9 | ||||||
|  | - update changelog and header for version v2.0.0-beta8 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta8 | ||||||
|  | - update changelog and header for version v2.0.0-beta7 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta7 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta6 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta6 | ||||||
|  | - update changelog and header for version v2.0.0-beta5 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta5 | ||||||
|  | - update changelog and header for version v2.0.0-beta4 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta4 | ||||||
|  | - update changelog and header for version v2.0.0-beta3 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta3 | ||||||
|  | - update createVendor and checkVendor functions to accept JsonDocument payload | ||||||
|  | - update changelog and header for version v2.0.0-beta2 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta2 | ||||||
|  | - clarify product URL description for Manufacturer Tags in German and English documentation | ||||||
|  | - update changelog and header for version v2.0.0-beta1 | ||||||
|  | - update platformio.ini for beta version v2.0.0-beta1 | ||||||
|  | - update version to 2.0.0 in platformio.ini | ||||||
|  | - update changelog and header for version v1.5.12-beta18 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta18 | ||||||
|  | - update changelog and header for version v1.5.12-beta17 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta17 | ||||||
|  | - optimize page limit detection and remove redundant verification code | ||||||
|  | - update changelog and header for version v1.5.12-beta16 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta16 | ||||||
|  | - Refactor NFC interface handling and improve error diagnostics | ||||||
|  | - update changelog and header for version v1.5.12-beta15 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta15 | ||||||
|  | - enhance NFC write operation diagnostics and improve error handling | ||||||
|  | - enhance NFC write operation handling and prevent tag operations during write | ||||||
|  | - update changelog and header for version v1.5.12-beta14 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta14 | ||||||
|  | - optimize JSON payload structure and enhance NFC tag validation process | ||||||
|  | - update changelog and header for version v1.5.12-beta13 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta13 | ||||||
|  | - reorganize clearUserDataArea function for improved clarity and safety | ||||||
|  | - update changelog and header for version v1.5.12-beta12 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta12 | ||||||
|  | - update changelog and header for version v1.5.12-beta11 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta11 | ||||||
|  | - update changelog and header for version v1.5.12-beta10 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta10 | ||||||
|  | - streamline task creation in checkVendor and checkFilament functions | ||||||
|  | - update changelog and header for version v1.5.12-beta9 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta9 | ||||||
|  | - update changelog and header for version v1.5.12-beta8 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta8 | ||||||
|  | - update changelog and header for version v1.5.12-beta7 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta7 | ||||||
|  | - update changelog and header for version v1.5.12-beta6 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta6 | ||||||
|  | - improve task synchronization in vendor, filament, and spool creation functions | ||||||
|  | - update changelog and header for version v1.5.12-beta5 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta5 | ||||||
|  | - update changelog and header for version v1.5.12-beta4 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta4 | ||||||
|  | - update changelog and header for version v1.5.12-beta3 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta3 | ||||||
|  | - update changelog and header for version v1.5.12-beta2 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta2 | ||||||
|  | - update changelog and header for version v1.5.12-beta1 | ||||||
|  | - update platformio.ini for beta version v1.5.12-beta1 | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  | - Merge branch 'main' into recyclingfabrik | ||||||
|  |  | ||||||
|  | ### Fixed | ||||||
|  | - call scale.tare() in setup after starting scale | ||||||
|  | - update createVendor function to use external_id as comment instead of static text | ||||||
|  | - update to_old_version in platformio.ini to reflect correct previous version | ||||||
|  | - increase delay in start_scale function for improved stability | ||||||
|  | - replace progress bar with message display for remaining weight in sendToApi function | ||||||
|  | - update vendor check to use shorthand key in payload | ||||||
|  | - reset NFC state on API send failure to allow retry | ||||||
|  | - update createdFilamentId reset value to 65535 for better task handling | ||||||
|  | - update createdVendorId reset value to 65535 for improved API handling | ||||||
|  | - update spoolman ID reset values to 65535 for better API response detection | ||||||
|  | - correct color_hex key usage and comment out unused date fields in spool creation | ||||||
|  | - improve API state handling and vendor name formatting | ||||||
|  | - enhance filament creation logic to include dynamic comments based on payload | ||||||
|  |  | ||||||
|  |  | ||||||
| ## [2.0.0-beta9] - 2025-08-30 | ## [2.0.0-beta9] - 2025-08-30 | ||||||
| ### Breaking Changes | ### Breaking Changes | ||||||
| - enhance commit categorization for breaking changes | - enhance commit categorization for breaking changes | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| ; https://docs.platformio.org/page/projectconf.html | ; https://docs.platformio.org/page/projectconf.html | ||||||
|  |  | ||||||
| [common] | [common] | ||||||
| version = "2.0.0-beta9" | version = "2.0.0-beta12" | ||||||
| to_old_version = "1.5.10" | to_old_version = "1.5.10" | ||||||
|  |  | ||||||
| ## | ## | ||||||
|   | |||||||
| @@ -178,9 +178,11 @@ void loop() { | |||||||
|     // Ausgabe der Waage auf Display |     // Ausgabe der Waage auf Display | ||||||
|     if(pauseMainTask == 0) |     if(pauseMainTask == 0) | ||||||
|     { |     { | ||||||
|  |       // Use filtered weight for smooth display, but still check API weight for significant changes | ||||||
|  |       int16_t displayWeight = getFilteredDisplayWeight(); | ||||||
|       if (mainTaskWasPaused || (weight != lastWeight && nfcReaderState == NFC_IDLE && (!bambuCredentials.autosend_enable || autoSetToBambuSpoolId == 0))) |       if (mainTaskWasPaused || (weight != lastWeight && nfcReaderState == NFC_IDLE && (!bambuCredentials.autosend_enable || autoSetToBambuSpoolId == 0))) | ||||||
|       { |       { | ||||||
|         (weight < 2) ? ((weight < -2) ? oledShowMessage("!! -0") : oledShowWeight(0)) : oledShowWeight(weight); |         (displayWeight < 2) ? ((displayWeight < -2) ? oledShowMessage("!! -0") : oledShowWeight(0)) : oledShowWeight(displayWeight); | ||||||
|       } |       } | ||||||
|       mainTaskWasPaused = false; |       mainTaskWasPaused = false; | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										75
									
								
								src/nfc.cpp
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								src/nfc.cpp
									
									
									
									
									
								
							| @@ -1299,6 +1299,61 @@ bool decodeNdefAndReturnJson(const byte* encodedMessage, String uidString) { | |||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Read complete JSON data for fast-path to enable web interface display | ||||||
|  | bool readCompleteJsonForFastPath() { | ||||||
|  |     Serial.println("=== FAST-PATH: Reading complete JSON for web interface ==="); | ||||||
|  |      | ||||||
|  |     // Read tag size first | ||||||
|  |     uint16_t tagSize = readTagSize(); | ||||||
|  |     if (tagSize == 0) { | ||||||
|  |         Serial.println("FAST-PATH: Could not determine tag size"); | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     // Create buffer for complete data | ||||||
|  |     uint8_t* data = (uint8_t*)malloc(tagSize); | ||||||
|  |     if (!data) { | ||||||
|  |         Serial.println("FAST-PATH: Could not allocate memory for complete read"); | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     memset(data, 0, tagSize); | ||||||
|  |      | ||||||
|  |     // Read all pages | ||||||
|  |     uint8_t numPages = tagSize / 4; | ||||||
|  |     for (uint8_t i = 4; i < 4 + numPages; i++) { | ||||||
|  |         if (!robustPageRead(i, data + (i - 4) * 4)) { | ||||||
|  |             Serial.printf("FAST-PATH: Failed to read page %d\n", i); | ||||||
|  |             free(data); | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // Check for NDEF message end | ||||||
|  |         if (data[(i - 4) * 4] == 0xFE) { | ||||||
|  |             Serial.println("FAST-PATH: Found NDEF message end marker"); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         yield(); | ||||||
|  |         esp_task_wdt_reset(); | ||||||
|  |         vTaskDelay(pdMS_TO_TICKS(2)); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     // Decode NDEF and extract JSON | ||||||
|  |     bool success = decodeNdefAndReturnJson(data, ""); // Empty UID string for fast-path | ||||||
|  |      | ||||||
|  |     free(data); | ||||||
|  |      | ||||||
|  |     if (success) { | ||||||
|  |         Serial.println("✓ FAST-PATH: Complete JSON data successfully loaded"); | ||||||
|  |         Serial.print("nfcJsonData length: "); | ||||||
|  |         Serial.println(nfcJsonData.length()); | ||||||
|  |     } else { | ||||||
|  |         Serial.println("✗ FAST-PATH: Failed to decode complete JSON data"); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     return success; | ||||||
|  | } | ||||||
|  |  | ||||||
| bool quickSpoolIdCheck(String uidString) { | bool quickSpoolIdCheck(String uidString) { | ||||||
|     // Fast-path: Read NDEF structure to quickly locate and check JSON payload |     // Fast-path: Read NDEF structure to quickly locate and check JSON payload | ||||||
|     // This dramatically speeds up known spool recognition |     // This dramatically speeds up known spool recognition | ||||||
| @@ -1436,6 +1491,14 @@ bool quickSpoolIdCheck(String uidString) { | |||||||
|                     activeSpoolId = quickSpoolId; |                     activeSpoolId = quickSpoolId; | ||||||
|                     lastSpoolId = activeSpoolId; |                     lastSpoolId = activeSpoolId; | ||||||
|                      |                      | ||||||
|  |                     // Read complete JSON data for web interface display | ||||||
|  |                     Serial.println("FAST-PATH: Reading complete JSON data for web interface..."); | ||||||
|  |                     if (readCompleteJsonForFastPath()) { | ||||||
|  |                         Serial.println("✓ FAST-PATH: Complete JSON data loaded for web interface"); | ||||||
|  |                     } else { | ||||||
|  |                         Serial.println("⚠ FAST-PATH: Could not read complete JSON, web interface may show limited data"); | ||||||
|  |                     } | ||||||
|  |                      | ||||||
|                     oledShowProgressBar(2, octoEnabled?5:4, "Known Spool", "Quick mode"); |                     oledShowProgressBar(2, octoEnabled?5:4, "Known Spool", "Quick mode"); | ||||||
|                     Serial.println("✓ FAST-PATH SUCCESS: Known spool processed quickly"); |                     Serial.println("✓ FAST-PATH SUCCESS: Known spool processed quickly"); | ||||||
|                     return true; |                     return true; | ||||||
| @@ -1483,6 +1546,14 @@ bool quickSpoolIdCheck(String uidString) { | |||||||
|                 activeSpoolId = quickSpoolId; |                 activeSpoolId = quickSpoolId; | ||||||
|                 lastSpoolId = activeSpoolId; |                 lastSpoolId = activeSpoolId; | ||||||
|                  |                  | ||||||
|  |                 // Read complete JSON data for web interface display | ||||||
|  |                 Serial.println("FAST-PATH: Reading complete JSON data for web interface..."); | ||||||
|  |                 if (readCompleteJsonForFastPath()) { | ||||||
|  |                     Serial.println("✓ FAST-PATH: Complete JSON data loaded for web interface"); | ||||||
|  |                 } else { | ||||||
|  |                     Serial.println("⚠ FAST-PATH: Could not read complete JSON, web interface may show limited data"); | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|                 oledShowProgressBar(2, octoEnabled?5:4, "Known Spool", "Quick mode"); |                 oledShowProgressBar(2, octoEnabled?5:4, "Known Spool", "Quick mode"); | ||||||
|                 Serial.println("✓ FAST-PATH SUCCESS: Known spool processed quickly"); |                 Serial.println("✓ FAST-PATH SUCCESS: Known spool processed quickly"); | ||||||
|                 return true; |                 return true; | ||||||
| @@ -1529,6 +1600,10 @@ void writeJsonToTag(void *parameter) { | |||||||
|   // aktualisieren der Website wenn sich der Status ändert |   // aktualisieren der Website wenn sich der Status ändert | ||||||
|   sendNfcData(); |   sendNfcData(); | ||||||
|   vTaskDelay(100 / portTICK_PERIOD_MS); |   vTaskDelay(100 / portTICK_PERIOD_MS); | ||||||
|  |    | ||||||
|  |   // Show waiting message for tag detection | ||||||
|  |   oledShowProgressBar(0, 1, "Write Tag", "Warte auf Tag"); | ||||||
|  |    | ||||||
|   // Wait 10sec for tag |   // Wait 10sec for tag | ||||||
|   uint8_t success = 0; |   uint8_t success = 0; | ||||||
|   String uidString = ""; |   String uidString = ""; | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ void startNfc(); | |||||||
| void scanRfidTask(void * parameter); | void scanRfidTask(void * parameter); | ||||||
| void startWriteJsonToTag(const bool isSpoolTag, const char* payload); | void startWriteJsonToTag(const bool isSpoolTag, const char* payload); | ||||||
| bool quickSpoolIdCheck(String uidString); | bool quickSpoolIdCheck(String uidString); | ||||||
|  | bool readCompleteJsonForFastPath(); // Read complete JSON data for fast-path web interface display | ||||||
|  |  | ||||||
| extern TaskHandle_t RfidReaderTask; | extern TaskHandle_t RfidReaderTask; | ||||||
| extern String nfcJsonData; | extern String nfcJsonData; | ||||||
|   | |||||||
							
								
								
									
										185
									
								
								src/scale.cpp
									
									
									
									
									
								
							
							
						
						
									
										185
									
								
								src/scale.cpp
									
									
									
									
									
								
							| @@ -13,6 +13,21 @@ TaskHandle_t ScaleTask; | |||||||
|  |  | ||||||
| int16_t weight = 0; | int16_t weight = 0; | ||||||
|  |  | ||||||
|  | // Weight stabilization variables | ||||||
|  | #define MOVING_AVERAGE_SIZE 20          // Number of samples for moving average | ||||||
|  | #define LOW_PASS_ALPHA 0.15f           // Low-pass filter coefficient (0.1-0.2 works well) | ||||||
|  | #define DISPLAY_THRESHOLD 0.5f         // Only update display if change > 0.5g | ||||||
|  | #define API_THRESHOLD 2.0f             // Only trigger API actions if change > 2g | ||||||
|  | #define MEASUREMENT_INTERVAL_MS 50     // Measurement interval in milliseconds | ||||||
|  |  | ||||||
|  | float weightBuffer[MOVING_AVERAGE_SIZE]; | ||||||
|  | uint8_t bufferIndex = 0; | ||||||
|  | bool bufferFilled = false; | ||||||
|  | float filteredWeight = 0.0f; | ||||||
|  | int16_t lastDisplayedWeight = 0; | ||||||
|  | int16_t lastStableWeight = 0;        // For API/action triggering | ||||||
|  | unsigned long lastMeasurementTime = 0; | ||||||
|  |  | ||||||
| uint8_t weigthCouterToApi = 0; | uint8_t weigthCouterToApi = 0; | ||||||
| uint8_t scale_tare_counter = 0; | uint8_t scale_tare_counter = 0; | ||||||
| bool scaleTareRequest = false; | bool scaleTareRequest = false; | ||||||
| @@ -21,6 +36,96 @@ bool scaleCalibrated; | |||||||
| bool autoTare = true; | bool autoTare = true; | ||||||
| bool scaleCalibrationActive = false; | bool scaleCalibrationActive = false; | ||||||
|  |  | ||||||
|  | // ##### Weight stabilization functions ##### | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Reset weight filter buffer - call after tare or calibration | ||||||
|  |  */ | ||||||
|  | void resetWeightFilter() { | ||||||
|  |   bufferIndex = 0; | ||||||
|  |   bufferFilled = false; | ||||||
|  |   filteredWeight = 0.0f; | ||||||
|  |   lastDisplayedWeight = 0; | ||||||
|  |   lastStableWeight = 0;            // Reset stable weight for API actions | ||||||
|  |    | ||||||
|  |   // Initialize buffer with zeros | ||||||
|  |   for (int i = 0; i < MOVING_AVERAGE_SIZE; i++) { | ||||||
|  |     weightBuffer[i] = 0.0f; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Calculate moving average from weight buffer | ||||||
|  |  */ | ||||||
|  | float calculateMovingAverage() { | ||||||
|  |   float sum = 0.0f; | ||||||
|  |   int count = bufferFilled ? MOVING_AVERAGE_SIZE : bufferIndex; | ||||||
|  |    | ||||||
|  |   for (int i = 0; i < count; i++) { | ||||||
|  |     sum += weightBuffer[i]; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   return (count > 0) ? sum / count : 0.0f; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Apply low-pass filter to smooth weight readings | ||||||
|  |  * Uses exponential smoothing: y_new = alpha * x_new + (1-alpha) * y_old | ||||||
|  |  */ | ||||||
|  | float applyLowPassFilter(float newValue) { | ||||||
|  |   filteredWeight = LOW_PASS_ALPHA * newValue + (1.0f - LOW_PASS_ALPHA) * filteredWeight; | ||||||
|  |   return filteredWeight; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Process new weight reading with stabilization | ||||||
|  |  * Returns stabilized weight value | ||||||
|  |  */ | ||||||
|  | int16_t processWeightReading(float rawWeight) { | ||||||
|  |   // Add to moving average buffer | ||||||
|  |   weightBuffer[bufferIndex] = rawWeight; | ||||||
|  |   bufferIndex = (bufferIndex + 1) % MOVING_AVERAGE_SIZE; | ||||||
|  |    | ||||||
|  |   if (bufferIndex == 0) { | ||||||
|  |     bufferFilled = true; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   // Calculate moving average | ||||||
|  |   float avgWeight = calculateMovingAverage(); | ||||||
|  |    | ||||||
|  |   // Apply low-pass filter | ||||||
|  |   float smoothedWeight = applyLowPassFilter(avgWeight); | ||||||
|  |    | ||||||
|  |   // Round to nearest gram | ||||||
|  |   int16_t newWeight = round(smoothedWeight); | ||||||
|  |    | ||||||
|  |   // Update displayed weight if display threshold is reached | ||||||
|  |   if (abs(newWeight - lastDisplayedWeight) >= DISPLAY_THRESHOLD) { | ||||||
|  |     lastDisplayedWeight = newWeight; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   // Update global weight for API actions only if stable threshold is reached | ||||||
|  |   int16_t weightToReturn = weight; // Default: keep current weight | ||||||
|  |    | ||||||
|  |   if (abs(newWeight - lastStableWeight) >= API_THRESHOLD) { | ||||||
|  |     lastStableWeight = newWeight; | ||||||
|  |     weightToReturn = newWeight; | ||||||
|  |      | ||||||
|  |     Serial.printf("Stable weight change detected: %d -> %d (diff: %d)\n",  | ||||||
|  |                  weight, newWeight, abs(newWeight - weight)); | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   return weightToReturn; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Get current filtered weight for display purposes | ||||||
|  |  * This returns the smoothed weight even if it hasn't triggered API actions | ||||||
|  |  */ | ||||||
|  | int16_t getFilteredDisplayWeight() { | ||||||
|  |   return lastDisplayedWeight; | ||||||
|  | } | ||||||
|  |  | ||||||
| // ##### Funktionen für Waage ##### | // ##### Funktionen für Waage ##### | ||||||
| uint8_t setAutoTare(bool autoTareValue) { | uint8_t setAutoTare(bool autoTareValue) { | ||||||
|   Serial.print("Set AutoTare to "); |   Serial.print("Set AutoTare to "); | ||||||
| @@ -39,6 +144,7 @@ uint8_t setAutoTare(bool autoTareValue) { | |||||||
| uint8_t tareScale() { | uint8_t tareScale() { | ||||||
|   Serial.println("Tare scale"); |   Serial.println("Tare scale"); | ||||||
|   scale.tare(); |   scale.tare(); | ||||||
|  |   resetWeightFilter(); // Reset stabilization filter after tare | ||||||
|    |    | ||||||
|   return 1; |   return 1; | ||||||
| } | } | ||||||
| @@ -48,37 +154,64 @@ void scale_loop(void * parameter) { | |||||||
|   Serial.println("Scale Loop started"); |   Serial.println("Scale Loop started"); | ||||||
|   Serial.println("++++++++++++++++++++++++++++++"); |   Serial.println("++++++++++++++++++++++++++++++"); | ||||||
|  |  | ||||||
|  |   // Initialize weight filter | ||||||
|  |   resetWeightFilter(); | ||||||
|  |   lastMeasurementTime = millis(); | ||||||
|  |  | ||||||
|   for(;;) { |   for(;;) { | ||||||
|     if (scale.is_ready())  |     unsigned long currentTime = millis(); | ||||||
|     { |      | ||||||
|       // Waage automatisch Taren, wenn zu lange Abweichung |     // Only measure at defined intervals to reduce noise | ||||||
|       if (autoTare && scale_tare_counter >= 5)  |     if (currentTime - lastMeasurementTime >= MEASUREMENT_INTERVAL_MS) { | ||||||
|  |       if (scale.is_ready())  | ||||||
|       { |       { | ||||||
|         Serial.println("Auto Tare scale"); |         // Waage automatisch Taren, wenn zu lange Abweichung | ||||||
|         scale.tare(); |         if (autoTare && scale_tare_counter >= 5)  | ||||||
|         scale_tare_counter = 0; |         { | ||||||
|       } |           Serial.println("Auto Tare scale"); | ||||||
|  |           scale.tare(); | ||||||
|  |           resetWeightFilter(); // Reset filter after auto tare | ||||||
|  |           scale_tare_counter = 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|       // Waage manuell Taren |         // Waage manuell Taren | ||||||
|       if (scaleTareRequest == true)  |         if (scaleTareRequest == true)  | ||||||
|       { |         { | ||||||
|         Serial.println("Re-Tare scale"); |           Serial.println("Re-Tare scale"); | ||||||
|         oledShowMessage("TARE Scale"); |           oledShowMessage("TARE Scale"); | ||||||
|         vTaskDelay(pdMS_TO_TICKS(1000)); |           vTaskDelay(pdMS_TO_TICKS(1000)); | ||||||
|         scale.tare(); |           scale.tare(); | ||||||
|         vTaskDelay(pdMS_TO_TICKS(1000)); |           resetWeightFilter(); // Reset filter after manual tare | ||||||
|         oledShowWeight(0); |           vTaskDelay(pdMS_TO_TICKS(1000)); | ||||||
|         scaleTareRequest = false; |           oledShowWeight(0); | ||||||
|       } |           scaleTareRequest = false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|       // Only update weight if median changed more than 1 |         // Get raw weight reading | ||||||
|       int16_t newWeight = round(scale.get_units()); |         float rawWeight = scale.get_units(); | ||||||
|       if(abs(weight-newWeight) > 1){ |          | ||||||
|         weight = newWeight; |         // Process weight with stabilization | ||||||
|  |         int16_t stabilizedWeight = processWeightReading(rawWeight); | ||||||
|  |          | ||||||
|  |         // Update global weight variable only if it changed significantly (for API actions) | ||||||
|  |         if (stabilizedWeight != weight) { | ||||||
|  |           weight = stabilizedWeight; | ||||||
|  |           Serial.printf("API weight updated: %d\n", weight); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // Debug output for monitoring (can be removed in production) | ||||||
|  |         static unsigned long lastDebugTime = 0; | ||||||
|  |         if (currentTime - lastDebugTime > 2000) { // Print every 2 seconds | ||||||
|  |           Serial.printf("Raw: %.2f, Filtered: %.2f, Display: %d, API: %d\n",  | ||||||
|  |                        rawWeight, filteredWeight, lastDisplayedWeight, weight); | ||||||
|  |           lastDebugTime = currentTime; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         lastMeasurementTime = currentTime; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     vTaskDelay(pdMS_TO_TICKS(100)); |     vTaskDelay(pdMS_TO_TICKS(10)); // Shorter delay for more responsive loop | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -125,6 +258,9 @@ void start_scale(bool touchSensorConnected) { | |||||||
|   //vTaskDelay(pdMS_TO_TICKS(5000)); |   //vTaskDelay(pdMS_TO_TICKS(5000)); | ||||||
|   //scale.tare(); |   //scale.tare(); | ||||||
|  |  | ||||||
|  |   // Initialize weight stabilization filter | ||||||
|  |   resetWeightFilter(); | ||||||
|  |  | ||||||
|   // Display Gewicht |   // Display Gewicht | ||||||
|   oledShowWeight(0); |   oledShowWeight(0); | ||||||
|  |  | ||||||
| @@ -209,6 +345,7 @@ uint8_t calibrate_scale() { | |||||||
|       oledShowProgressBar(2, 3, "Scale Cal.", "Remove weight"); |       oledShowProgressBar(2, 3, "Scale Cal.", "Remove weight"); | ||||||
|  |  | ||||||
|       scale.set_scale(newCalibrationValue); |       scale.set_scale(newCalibrationValue); | ||||||
|  |       resetWeightFilter(); // Reset filter after calibration | ||||||
|       for (uint16_t i = 0; i < 2000; i++) { |       for (uint16_t i = 0; i < 2000; i++) { | ||||||
|         yield(); |         yield(); | ||||||
|         vTaskDelay(pdMS_TO_TICKS(1)); |         vTaskDelay(pdMS_TO_TICKS(1)); | ||||||
|   | |||||||
| @@ -9,6 +9,13 @@ uint8_t start_scale(bool touchSensorConnected); | |||||||
| uint8_t calibrate_scale(); | uint8_t calibrate_scale(); | ||||||
| uint8_t tareScale(); | uint8_t tareScale(); | ||||||
|  |  | ||||||
|  | // Weight stabilization functions | ||||||
|  | void resetWeightFilter(); | ||||||
|  | float calculateMovingAverage(); | ||||||
|  | float applyLowPassFilter(float newValue); | ||||||
|  | int16_t processWeightReading(float rawWeight); | ||||||
|  | int16_t getFilteredDisplayWeight(); | ||||||
|  |  | ||||||
| extern HX711 scale; | extern HX711 scale; | ||||||
| extern int16_t weight; | extern int16_t weight; | ||||||
| extern uint8_t weigthCouterToApi; | extern uint8_t weigthCouterToApi; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user