Compare commits
	
		
			11 Commits
		
	
	
		
			0bf383ecd9
			...
			v2.0.0-bet
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e537c6ec07 | |||
| bec769e95a | |||
| 5cc58927a6 | |||
| afde3f5f81 | |||
| 6800c88bb2 | |||
| 6172242f24 | |||
| 7f4b3b8d90 | |||
| 7a15424bc7 | |||
| 039a29fa3c | |||
| 6cccf3d603 | |||
| 693ee839e5 | 
							
								
								
									
										363
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										363
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -1,11 +1,14 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## [2.0.0-beta11] - 2025-08-30
 | 
					## [2.0.0-beta14] - 2025-08-30
 | 
				
			||||||
### Breaking Changes
 | 
					### Breaking Changes
 | 
				
			||||||
- enhance commit categorization for 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
 | 
					- Handling of Spools with Tags from Vendors. fix: improve get_last_tag function to handle non-beta tags and fallback to newest tag
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Added
 | 
					### Added
 | 
				
			||||||
 | 
					- implement retry mechanism and timeout handling for API requests
 | 
				
			||||||
 | 
					- add timeout handling and error states for vendor and filament operations
 | 
				
			||||||
 | 
					- enhance weight processing with filtered display and API stability checks
 | 
				
			||||||
- implement weight stabilization functions and improve tare handling
 | 
					- implement weight stabilization functions and improve tare handling
 | 
				
			||||||
- add fast-path JSON reading for web interface display
 | 
					- 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
 | 
					- add handling for successful NFC tag writes to send weight to Spoolman without auto-sending to Bambu
 | 
				
			||||||
@@ -25,6 +28,14 @@
 | 
				
			|||||||
- Add vendor and filament management to API; implement recycling factory handling in NFC
 | 
					- Add vendor and filament management to API; implement recycling factory handling in NFC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Changed
 | 
					### Changed
 | 
				
			||||||
 | 
					- update platformio.ini for beta version v2.0.0-beta14
 | 
				
			||||||
 | 
					- update changelog and header for version v2.0.0-beta13
 | 
				
			||||||
 | 
					- update platformio.ini for beta version v2.0.0-beta13
 | 
				
			||||||
 | 
					- optimize weight stabilization parameters for improved responsiveness
 | 
				
			||||||
 | 
					- update changelog and header for version v2.0.0-beta12
 | 
				
			||||||
 | 
					- 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 platformio.ini for beta version v2.0.0-beta11
 | 
				
			||||||
- update changelog and header for version v2.0.0-beta10
 | 
					- update changelog and header for version v2.0.0-beta10
 | 
				
			||||||
- update platformio.ini for beta version v2.0.0-beta10
 | 
					- update platformio.ini for beta version v2.0.0-beta10
 | 
				
			||||||
@@ -113,6 +124,356 @@
 | 
				
			|||||||
- enhance filament creation logic to include dynamic comments based on payload
 | 
					- enhance filament creation logic to include dynamic comments based on payload
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## [2.0.0-beta13] - 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-beta13
 | 
				
			||||||
 | 
					- optimize weight stabilization parameters for improved responsiveness
 | 
				
			||||||
 | 
					- update changelog and header for version v2.0.0-beta12
 | 
				
			||||||
 | 
					- 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-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
 | 
					## [2.0.0-beta10] - 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-beta11"
 | 
					version = "2.0.0-beta14"
 | 
				
			||||||
to_old_version = "1.5.10"
 | 
					to_old_version = "1.5.10"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##
 | 
					##
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										105
									
								
								src/api.cpp
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								src/api.cpp
									
									
									
									
									
								
							@@ -124,28 +124,69 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
    String octoToken = params->octoToken;
 | 
					    String octoToken = params->octoToken;
 | 
				
			||||||
    bool triggerWeightUpdate = params->triggerWeightUpdate;
 | 
					    bool triggerWeightUpdate = params->triggerWeightUpdate;
 | 
				
			||||||
    String spoolIdForWeight = params->spoolIdForWeight;
 | 
					    String spoolIdForWeight = params->spoolIdForWeight;
 | 
				
			||||||
    uint16_t weightValue = params->weightValue;    
 | 
					    uint16_t weightValue = params->weightValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HTTPClient http;
 | 
					    // Retry mechanism with configurable parameters
 | 
				
			||||||
    http.setReuse(false);
 | 
					    const uint8_t MAX_RETRIES = 3;
 | 
				
			||||||
 | 
					    const uint16_t RETRY_DELAY_MS = 1000; // 1 second between retries
 | 
				
			||||||
 | 
					    const uint16_t HTTP_TIMEOUT_MS = 10000; // 10 second HTTP timeout
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bool success = false;
 | 
				
			||||||
 | 
					    int httpCode = -1;
 | 
				
			||||||
 | 
					    String responsePayload = "";
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Try request with retries
 | 
				
			||||||
 | 
					    for (uint8_t attempt = 1; attempt <= MAX_RETRIES && !success; attempt++) {
 | 
				
			||||||
 | 
					        Serial.printf("API Request attempt %d/%d to: %s\n", attempt, MAX_RETRIES, spoolsUrl.c_str());
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        HTTPClient http;
 | 
				
			||||||
 | 
					        http.setReuse(false);
 | 
				
			||||||
 | 
					        http.setTimeout(HTTP_TIMEOUT_MS); // Set HTTP timeout
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        http.begin(spoolsUrl);
 | 
				
			||||||
 | 
					        http.addHeader("Content-Type", "application/json");
 | 
				
			||||||
 | 
					        if (octoEnabled && octoToken != "") http.addHeader("X-Api-Key", octoToken);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    http.begin(spoolsUrl);
 | 
					        // Execute HTTP request based on type
 | 
				
			||||||
    http.addHeader("Content-Type", "application/json");
 | 
					        if (httpType == "PATCH") httpCode = http.PATCH(updatePayload);
 | 
				
			||||||
    if (octoEnabled && octoToken != "") http.addHeader("X-Api-Key", octoToken);
 | 
					        else if (httpType == "POST") httpCode = http.POST(updatePayload);
 | 
				
			||||||
 | 
					        else if (httpType == "GET") httpCode = http.GET();
 | 
				
			||||||
 | 
					        else httpCode = http.PUT(updatePayload);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int httpCode;
 | 
					        // Check if request was successful
 | 
				
			||||||
    if (httpType == "PATCH") httpCode = http.PATCH(updatePayload);
 | 
					        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_CREATED) {
 | 
				
			||||||
    else if (httpType == "POST") httpCode = http.POST(updatePayload);
 | 
					            responsePayload = http.getString();
 | 
				
			||||||
    else if (httpType == "GET") httpCode = http.GET();
 | 
					            success = true;
 | 
				
			||||||
    else httpCode = http.PUT(updatePayload);
 | 
					            Serial.printf("API Request successful on attempt %d, HTTP Code: %d\n", attempt, httpCode);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            Serial.printf("API Request failed on attempt %d, HTTP Code: %d (%s)\n", 
 | 
				
			||||||
 | 
					                         attempt, httpCode, http.errorToString(httpCode).c_str());
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Don't retry on certain error codes (client errors)
 | 
				
			||||||
 | 
					            if (httpCode >= 400 && httpCode < 500 && httpCode != 408 && httpCode != 429) {
 | 
				
			||||||
 | 
					                Serial.println("Client error detected, stopping retries");
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Wait before retry (except on last attempt)
 | 
				
			||||||
 | 
					            if (attempt < MAX_RETRIES) {
 | 
				
			||||||
 | 
					                Serial.printf("Waiting %dms before retry...\n", RETRY_DELAY_MS);
 | 
				
			||||||
 | 
					                http.end();
 | 
				
			||||||
 | 
					                vTaskDelay(RETRY_DELAY_MS / portTICK_PERIOD_MS);
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        http.end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (httpCode == HTTP_CODE_OK) {
 | 
					    // Process successful response
 | 
				
			||||||
 | 
					    if (success) {
 | 
				
			||||||
        Serial.println("Spoolman Abfrage erfolgreich");
 | 
					        Serial.println("Spoolman Abfrage erfolgreich");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Restgewicht der Spule auslesen
 | 
					        // Restgewicht der Spule auslesen
 | 
				
			||||||
        String payload = http.getString();
 | 
					 | 
				
			||||||
        JsonDocument doc;
 | 
					        JsonDocument doc;
 | 
				
			||||||
        DeserializationError error = deserializeJson(doc, payload);
 | 
					        DeserializationError error = deserializeJson(doc, responsePayload);
 | 
				
			||||||
        if (error) {
 | 
					        if (error) {
 | 
				
			||||||
            Serial.print("Fehler beim Parsen der JSON-Antwort: ");
 | 
					            Serial.print("Fehler beim Parsen der JSON-Antwort: ");
 | 
				
			||||||
            Serial.println(error.c_str());
 | 
					            Serial.println(error.c_str());
 | 
				
			||||||
@@ -225,10 +266,9 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
    } else if (httpCode == HTTP_CODE_CREATED) {
 | 
					    } else if (httpCode == HTTP_CODE_CREATED) {
 | 
				
			||||||
        Serial.println("Spoolman erfolgreich erstellt");
 | 
					        Serial.println("Spoolman erfolgreich erstellt");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Parse response for created resources
 | 
					        // Parse response for created resources  
 | 
				
			||||||
        String payload = http.getString();
 | 
					 | 
				
			||||||
        JsonDocument doc;
 | 
					        JsonDocument doc;
 | 
				
			||||||
        DeserializationError error = deserializeJson(doc, payload);
 | 
					        DeserializationError error = deserializeJson(doc, responsePayload);
 | 
				
			||||||
        if (error) {
 | 
					        if (error) {
 | 
				
			||||||
            Serial.print("Fehler beim Parsen der JSON-Antwort: ");
 | 
					            Serial.print("Fehler beim Parsen der JSON-Antwort: ");
 | 
				
			||||||
            Serial.println(error.c_str());
 | 
					            Serial.println(error.c_str());
 | 
				
			||||||
@@ -280,14 +320,17 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
            Serial.println(weightPayload);
 | 
					            Serial.println(weightPayload);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Execute weight update
 | 
					            // Execute weight update
 | 
				
			||||||
            http.begin(weightUrl);
 | 
					            HTTPClient weightHttp;
 | 
				
			||||||
            http.addHeader("Content-Type", "application/json");
 | 
					            weightHttp.setReuse(false);
 | 
				
			||||||
 | 
					            weightHttp.setTimeout(HTTP_TIMEOUT_MS);
 | 
				
			||||||
 | 
					            weightHttp.begin(weightUrl);
 | 
				
			||||||
 | 
					            weightHttp.addHeader("Content-Type", "application/json");
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            int weightHttpCode = http.PUT(weightPayload);
 | 
					            int weightHttpCode = weightHttp.PUT(weightPayload);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if (weightHttpCode == HTTP_CODE_OK) {
 | 
					            if (weightHttpCode == HTTP_CODE_OK) {
 | 
				
			||||||
                Serial.println("Weight update successful");
 | 
					                Serial.println("Weight update successful");
 | 
				
			||||||
                String weightResponse = http.getString();
 | 
					                String weightResponse = weightHttp.getString();
 | 
				
			||||||
                JsonDocument weightResponseDoc;
 | 
					                JsonDocument weightResponseDoc;
 | 
				
			||||||
                DeserializationError weightError = deserializeJson(weightResponseDoc, weightResponse);
 | 
					                DeserializationError weightError = deserializeJson(weightResponseDoc, weightResponse);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
@@ -310,6 +353,7 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
                oledShowProgressBar(1, 1, "Failure!", "Weight update");
 | 
					                oledShowProgressBar(1, 1, "Failure!", "Weight update");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 | 
					            weightHttp.end();
 | 
				
			||||||
            weightDoc.clear();
 | 
					            weightDoc.clear();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@@ -325,14 +369,25 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
        case API_REQUEST_BAMBU_UPDATE:
 | 
					        case API_REQUEST_BAMBU_UPDATE:
 | 
				
			||||||
            oledShowProgressBar(1, 1, "Failure!", "Bambu update");
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Bambu update");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        case API_REQUEST_VENDOR_CHECK:
 | 
				
			||||||
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Vendor check");
 | 
				
			||||||
 | 
					            foundVendorId = 0; // Set to 0 to indicate error/not found
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        case API_REQUEST_VENDOR_CREATE:
 | 
					        case API_REQUEST_VENDOR_CREATE:
 | 
				
			||||||
            oledShowProgressBar(1, 1, "Failure!", "Vendor create");
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Vendor create");
 | 
				
			||||||
 | 
					            createdVendorId = 0; // Set to 0 to indicate error
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case API_REQUEST_FILAMENT_CHECK:
 | 
				
			||||||
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Filament check");
 | 
				
			||||||
 | 
					            foundFilamentId = 0; // Set to 0 to indicate error/not found
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case API_REQUEST_FILAMENT_CREATE:
 | 
					        case API_REQUEST_FILAMENT_CREATE:
 | 
				
			||||||
            oledShowProgressBar(1, 1, "Failure!", "Filament create");
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Filament create");
 | 
				
			||||||
 | 
					            createdFilamentId = 0; // Set to 0 to indicate error
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case API_REQUEST_SPOOL_CREATE:
 | 
					        case API_REQUEST_SPOOL_CREATE:
 | 
				
			||||||
            oledShowProgressBar(1, 1, "Failure!", "Spool create");
 | 
					            oledShowProgressBar(1, 1, "Failure!", "Spool create");
 | 
				
			||||||
 | 
					            createdSpoolId = 0; // Set to 0 to indicate error instead of hanging
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Serial.println("Fehler beim Senden an Spoolman! HTTP Code: " + String(httpCode));
 | 
					        Serial.println("Fehler beim Senden an Spoolman! HTTP Code: " + String(httpCode));
 | 
				
			||||||
@@ -340,7 +395,6 @@ void sendToApi(void *parameter) {
 | 
				
			|||||||
        nfcReaderState = NFC_IDLE; // Reset NFC state to allow retry
 | 
					        nfcReaderState = NFC_IDLE; // Reset NFC state to allow retry
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    http.end();
 | 
					 | 
				
			||||||
    vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
					    vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Speicher freigeben
 | 
					    // Speicher freigeben
 | 
				
			||||||
@@ -952,6 +1006,13 @@ uint16_t createSpool(uint16_t vendorId, uint16_t filamentId, JsonDocument& paylo
 | 
				
			|||||||
    while(createdSpoolId == 65535) {
 | 
					    while(createdSpoolId == 65535) {
 | 
				
			||||||
        vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
					        vTaskDelay(50 / portTICK_PERIOD_MS);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Check if spool creation was successful
 | 
				
			||||||
 | 
					    if (createdSpoolId == 0) {
 | 
				
			||||||
 | 
					        Serial.println("ERROR: Spool creation failed");
 | 
				
			||||||
 | 
					        nfcReaderState = NFC_IDLE; // Reset NFC state
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Write data to tag with startWriteJsonToTag
 | 
					    // Write data to tag with startWriteJsonToTag
 | 
				
			||||||
    // void startWriteJsonToTag(const bool isSpoolTag, const char* payload);
 | 
					    // void startWriteJsonToTag(const bool isSpoolTag, const char* payload);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,16 +14,18 @@ TaskHandle_t ScaleTask;
 | 
				
			|||||||
int16_t weight = 0;
 | 
					int16_t weight = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Weight stabilization variables
 | 
					// Weight stabilization variables
 | 
				
			||||||
#define MOVING_AVERAGE_SIZE 20          // Number of samples for moving average
 | 
					#define MOVING_AVERAGE_SIZE 8           // Reduced from 20 to 8 for faster response
 | 
				
			||||||
#define LOW_PASS_ALPHA 0.15f           // Low-pass filter coefficient (0.1-0.2 works well)
 | 
					#define LOW_PASS_ALPHA 0.3f            // Increased from 0.15 to 0.3 for faster tracking
 | 
				
			||||||
#define DISPLAY_THRESHOLD 0.5f         // Only update display if change > 0.5g
 | 
					#define DISPLAY_THRESHOLD 0.3f         // Reduced from 0.5 to 0.3g for more responsive display
 | 
				
			||||||
#define MEASUREMENT_INTERVAL_MS 50     // Measurement interval in milliseconds
 | 
					#define API_THRESHOLD 1.5f             // Reduced from 2.0 to 1.5g for faster API actions
 | 
				
			||||||
 | 
					#define MEASUREMENT_INTERVAL_MS 30     // Reduced from 50ms to 30ms for faster updates
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float weightBuffer[MOVING_AVERAGE_SIZE];
 | 
					float weightBuffer[MOVING_AVERAGE_SIZE];
 | 
				
			||||||
uint8_t bufferIndex = 0;
 | 
					uint8_t bufferIndex = 0;
 | 
				
			||||||
bool bufferFilled = false;
 | 
					bool bufferFilled = false;
 | 
				
			||||||
float filteredWeight = 0.0f;
 | 
					float filteredWeight = 0.0f;
 | 
				
			||||||
int16_t lastDisplayedWeight = 0;
 | 
					int16_t lastDisplayedWeight = 0;
 | 
				
			||||||
 | 
					int16_t lastStableWeight = 0;        // For API/action triggering
 | 
				
			||||||
unsigned long lastMeasurementTime = 0;
 | 
					unsigned long lastMeasurementTime = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t weigthCouterToApi = 0;
 | 
					uint8_t weigthCouterToApi = 0;
 | 
				
			||||||
@@ -44,6 +46,7 @@ void resetWeightFilter() {
 | 
				
			|||||||
  bufferFilled = false;
 | 
					  bufferFilled = false;
 | 
				
			||||||
  filteredWeight = 0.0f;
 | 
					  filteredWeight = 0.0f;
 | 
				
			||||||
  lastDisplayedWeight = 0;
 | 
					  lastDisplayedWeight = 0;
 | 
				
			||||||
 | 
					  lastStableWeight = 0;            // Reset stable weight for API actions
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Initialize buffer with zeros
 | 
					  // Initialize buffer with zeros
 | 
				
			||||||
  for (int i = 0; i < MOVING_AVERAGE_SIZE; i++) {
 | 
					  for (int i = 0; i < MOVING_AVERAGE_SIZE; i++) {
 | 
				
			||||||
@@ -96,13 +99,28 @@ int16_t processWeightReading(float rawWeight) {
 | 
				
			|||||||
  // Round to nearest gram
 | 
					  // Round to nearest gram
 | 
				
			||||||
  int16_t newWeight = round(smoothedWeight);
 | 
					  int16_t newWeight = round(smoothedWeight);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Only update displayed weight if change is significant
 | 
					  // Update displayed weight if display threshold is reached
 | 
				
			||||||
  if (abs(newWeight - lastDisplayedWeight) >= DISPLAY_THRESHOLD) {
 | 
					  if (abs(newWeight - lastDisplayedWeight) >= DISPLAY_THRESHOLD) {
 | 
				
			||||||
    lastDisplayedWeight = newWeight;
 | 
					    lastDisplayedWeight = newWeight;
 | 
				
			||||||
    return newWeight;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  return weight; // Return current weight if change is too small
 | 
					  // 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;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  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 #####
 | 
				
			||||||
@@ -172,17 +190,15 @@ void scale_loop(void * parameter) {
 | 
				
			|||||||
        // Process weight with stabilization
 | 
					        // Process weight with stabilization
 | 
				
			||||||
        int16_t stabilizedWeight = processWeightReading(rawWeight);
 | 
					        int16_t stabilizedWeight = processWeightReading(rawWeight);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Update global weight variable only if it changed
 | 
					        // Update global weight variable only if it changed significantly (for API actions)
 | 
				
			||||||
        if (stabilizedWeight != weight) {
 | 
					        if (stabilizedWeight != weight) {
 | 
				
			||||||
          weight = stabilizedWeight;
 | 
					          weight = stabilizedWeight;
 | 
				
			||||||
          
 | 
					        }
 | 
				
			||||||
          // Debug output for monitoring (can be removed in production)
 | 
					        
 | 
				
			||||||
          static unsigned long lastDebugTime = 0;
 | 
					        // Debug output for monitoring (can be removed in production)
 | 
				
			||||||
          if (currentTime - lastDebugTime > 1000) { // Print every second
 | 
					        static unsigned long lastDebugTime = 0;
 | 
				
			||||||
            Serial.printf("Raw: %.2f, Filtered: %.2f, Final: %d\n", 
 | 
					        if (currentTime - lastDebugTime > 2000) { // Print every 2 seconds
 | 
				
			||||||
                         rawWeight, filteredWeight, weight);
 | 
					          lastDebugTime = currentTime;
 | 
				
			||||||
            lastDebugTime = currentTime;
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        lastMeasurementTime = currentTime;
 | 
					        lastMeasurementTime = currentTime;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ void resetWeightFilter();
 | 
				
			|||||||
float calculateMovingAverage();
 | 
					float calculateMovingAverage();
 | 
				
			||||||
float applyLowPassFilter(float newValue);
 | 
					float applyLowPassFilter(float newValue);
 | 
				
			||||||
int16_t processWeightReading(float rawWeight);
 | 
					int16_t processWeightReading(float rawWeight);
 | 
				
			||||||
 | 
					int16_t getFilteredDisplayWeight();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern HX711 scale;
 | 
					extern HX711 scale;
 | 
				
			||||||
extern int16_t weight;
 | 
					extern int16_t weight;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user