Compare commits

...

58 Commits

Author SHA1 Message Date
e21e13efe6 docs: add additional information about Recycling Fabrik in README files 2025-09-10 17:37:16 +02:00
682ed2e232 chore: remove unnecessary separator in Recycling Fabrik section 2025-09-10 17:36:12 +02:00
fbbc226a7d docs: add Recycling Fabrik section with logo and information 2025-09-10 17:36:07 +02:00
76d5e7640f fix: update Recycling Fabrik logo display format in README 2025-09-10 17:33:24 +02:00
1d421930d8 feat: add RF logo image 2025-09-10 17:32:15 +02:00
0a6a183a38 docs: add support information for Recycling Fabrik 2025-09-10 17:31:07 +02:00
6bb4384852 docs: update changelog and header for version v2.0.6-beta1
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m8s
2025-09-03 18:45:36 +02:00
61174273fe docs: update platformio.ini for beta version v2.0.6-beta1 2025-09-03 18:45:36 +02:00
e604231139 fix: prevent weight display during NFC write operations 2025-09-03 18:45:24 +02:00
e0d641c817 docs: update changelog and header for version v2.0.6
All checks were successful
Release Workflow / detect-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m6s
2025-09-03 15:38:07 +02:00
40fdb667fa docs: update platformio.ini for version v2.0.6 2025-09-03 15:38:07 +02:00
8f6ecb350f fix: correct progress bar message and update tare function description 2025-09-03 15:37:57 +02:00
16887f5248 docs: update changelog and header for version v2.0.5
Some checks failed
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m14s
2025-09-03 15:28:10 +02:00
a7b06c9b97 docs: update platformio.ini for version v2.0.5 2025-09-03 15:28:09 +02:00
666c929483 fix: update progress bar message from "Tare scale" to "Searching scale"
fix: Scale tare function after boot
2025-09-03 15:28:03 +02:00
301109c37b docs: update changelog and header for version v2.0.4-beta2
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m18s
2025-09-03 15:18:51 +02:00
d43fceebbc docs: update platformio.ini for beta version v2.0.4-beta2 2025-09-03 15:18:50 +02:00
2c435e5c98 refactor: adjust auto tare counter threshold and reposition tare check in scale loop 2025-09-03 15:18:43 +02:00
f9aa7f2e6b docs: update changelog and header for version v2.0.4-beta1
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m58s
2025-09-03 15:06:50 +02:00
f810bc5352 docs: update platformio.ini for beta version v2.0.4-beta1 2025-09-03 15:06:50 +02:00
043c2d4fa8 refactor: improve auto tare logic and reset conditions in scale handling 2025-09-03 15:06:31 +02:00
f5a1debd7d docs: update changelog and header for version v2.0.4
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m10s
2025-09-02 18:49:42 +02:00
37309da185 docs: update platformio.ini for version v2.0.4 2025-09-02 18:49:42 +02:00
bcb7c039e2 refactor: filter out automatic release documentation commits in changelog categorization 2025-09-02 18:49:25 +02:00
98ec5b9846 refactor: disable auto tare and weight filter reset in scale loop 2025-09-02 18:47:02 +02:00
f0d1692ae1 docs: update changelog and header for version v2.0.3
All checks were successful
Release Workflow / detect-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m4s
2025-09-02 18:37:07 +02:00
10587276c2 docs: update platformio.ini for version v2.0.3 2025-09-02 18:37:07 +02:00
e74f6076b2 docs: update changelog and header for version v2.0.2-beta6
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m8s
2025-09-02 18:24:37 +02:00
2ee60ce430 docs: update platformio.ini for beta version v2.0.2-beta6 2025-09-02 18:24:37 +02:00
5db80d3670 fix: set scale tare request to true in setup function 2025-09-02 18:24:32 +02:00
2b195ed9ea fix: correct assignment operator in scale tare request handling 2025-09-02 18:23:36 +02:00
45a623cff6 docs: update changelog and header for version v2.0.2-beta5
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m40s
2025-09-02 18:15:19 +02:00
b4a06d0f2a docs: update platformio.ini for beta version v2.0.2-beta5 2025-09-02 18:15:19 +02:00
85cff3923c fix: correct tare scale request handling in tareScale function 2025-09-02 18:15:13 +02:00
d9469eaa42 docs: update changelog and header for version v2.0.2-beta4
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m1s
2025-09-02 18:02:29 +02:00
16c3a65cca docs: update platformio.ini for beta version v2.0.2-beta4 2025-09-02 18:02:29 +02:00
51335456e3 fix: reset weight filter after tare scale operation 2025-09-02 18:02:24 +02:00
77fbacc681 docs: update changelog and header for version v2.0.2-beta3
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m58s
2025-09-02 17:45:33 +02:00
b4f1fc3b0a docs: update platformio.ini for beta version v2.0.2-beta3 2025-09-02 17:45:33 +02:00
3a82175bb6 fix: correct tare scale function to set scaleTareRequest flag 2025-09-02 17:45:21 +02:00
b80184bf23 docs: update changelog and header for version v2.0.2-beta2
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m56s
2025-09-02 17:36:39 +02:00
0f63880d1f docs: update platformio.ini for beta version v2.0.2-beta2 2025-09-02 17:36:38 +02:00
0baa1d286e feat: add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t 2025-09-02 17:36:34 +02:00
100328b1d6 docs: update changelog and header for version v2.0.2-beta1
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m52s
2025-09-02 17:15:34 +02:00
9ec5bca652 docs: update platformio.ini for beta version v2.0.2-beta1 2025-09-02 17:15:34 +02:00
1dba2b2f23 fix: reset weight counter logic and update spool ID in loop function 2025-09-02 17:15:27 +02:00
cca0bd9dbe fix: reduce delay in start_scale function and reset weight after tare 2025-09-01 14:03:08 +02:00
818094c36e docs: update changelog and header for version v2.0.2
All checks were successful
Release Workflow / detect-provider (push) Successful in 1m35s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m13s
2025-09-01 13:40:01 +02:00
4cf3858d0a docs: update platformio.ini for version v2.0.2 2025-09-01 13:40:00 +02:00
66eef2242b feat: add weight check and update spool weight in writeJsonToTag function 2025-09-01 13:39:41 +02:00
87288e606b refactor: remove redundant tare calls in setup and start_scale functions 2025-09-01 13:33:12 +02:00
9ae9e80dcd docs: add German and English wiki documentation 2025-08-30 18:13:42 +02:00
f2b38a5a99 docs: update changelog and header for version v2.0.1
All checks were successful
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m6s
2025-08-30 17:03:17 +02:00
ab005b3dd1 docs: update platformio.ini for version v2.0.1 2025-08-30 17:03:17 +02:00
e537c6ec07 docs: update changelog and header for version v2.0.0-beta14
All checks were successful
Release Workflow / detect-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m4s
2025-08-30 16:47:24 +02:00
bec769e95a docs: update platformio.ini for beta version v2.0.0-beta14 2025-08-30 16:47:24 +02:00
5cc58927a6 feat: implement retry mechanism and timeout handling for API requests 2025-08-30 16:47:18 +02:00
afde3f5f81 fix: add timeout handling and error states for vendor and filament operations 2025-08-30 16:40:01 +02:00
17 changed files with 1847 additions and 63 deletions

1
.gitignore vendored
View File

@@ -40,3 +40,4 @@ website/*
release.sh
.github/copilot-instructions.md
data
wiki

View File

@@ -1,5 +1,441 @@
# Changelog
## [2.0.6-beta1] - 2025-09-03
### Fixed
- prevent weight display during NFC write operations
## [2.0.6] - 2025-09-03
### Fixed
- correct progress bar message and update tare function description
## [2.0.5] - 2025-09-03
### Changed
- adjust auto tare counter threshold and reposition tare check in scale loop
- improve auto tare logic and reset conditions in scale handling
### Fixed
- update progress bar message from 'Tare scale' to 'Searching scale'
- Scale tare function after boot
## [2.0.4-beta2] - 2025-09-03
### Changed
- adjust auto tare counter threshold and reposition tare check in scale loop
- improve auto tare logic and reset conditions in scale handling
## [2.0.4-beta1] - 2025-09-03
### Changed
- improve auto tare logic and reset conditions in scale handling
## [2.0.4] - 2025-09-02
### Changed
- filter out automatic release documentation commits in changelog categorization
- disable auto tare and weight filter reset in scale loop
## [2.0.3] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for version v2.0.3
- update changelog and header for version v2.0.2-beta6
- update platformio.ini for beta version v2.0.2-beta6
- update changelog and header for version v2.0.2-beta5
- update platformio.ini for beta version v2.0.2-beta5
- update changelog and header for version v2.0.2-beta4
- update platformio.ini for beta version v2.0.2-beta4
- update changelog and header for version v2.0.2-beta3
- update platformio.ini for beta version v2.0.2-beta3
- update changelog and header for version v2.0.2-beta2
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- set scale tare request to true in setup function
- correct assignment operator in scale tare request handling
- correct tare scale request handling in tareScale function
- reset weight filter after tare scale operation
- correct tare scale function to set scaleTareRequest flag
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta6] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for beta version v2.0.2-beta6
- update changelog and header for version v2.0.2-beta5
- update platformio.ini for beta version v2.0.2-beta5
- update changelog and header for version v2.0.2-beta4
- update platformio.ini for beta version v2.0.2-beta4
- update changelog and header for version v2.0.2-beta3
- update platformio.ini for beta version v2.0.2-beta3
- update changelog and header for version v2.0.2-beta2
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- set scale tare request to true in setup function
- correct assignment operator in scale tare request handling
- correct tare scale request handling in tareScale function
- reset weight filter after tare scale operation
- correct tare scale function to set scaleTareRequest flag
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta5] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for beta version v2.0.2-beta5
- update changelog and header for version v2.0.2-beta4
- update platformio.ini for beta version v2.0.2-beta4
- update changelog and header for version v2.0.2-beta3
- update platformio.ini for beta version v2.0.2-beta3
- update changelog and header for version v2.0.2-beta2
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- correct tare scale request handling in tareScale function
- reset weight filter after tare scale operation
- correct tare scale function to set scaleTareRequest flag
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta4] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for beta version v2.0.2-beta4
- update changelog and header for version v2.0.2-beta3
- update platformio.ini for beta version v2.0.2-beta3
- update changelog and header for version v2.0.2-beta2
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- reset weight filter after tare scale operation
- correct tare scale function to set scaleTareRequest flag
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta3] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for beta version v2.0.2-beta3
- update changelog and header for version v2.0.2-beta2
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- correct tare scale function to set scaleTareRequest flag
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta2] - 2025-09-02
### Added
- add updateOctoSpoolId for OctoPrint integration and change autoSetToBambuSpoolId type to uint16_t
### Changed
- update platformio.ini for beta version v2.0.2-beta2
- update changelog and header for version v2.0.2-beta1
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2-beta1] - 2025-09-02
### Changed
- update platformio.ini for beta version v2.0.2-beta1
### Fixed
- reset weight counter logic and update spool ID in loop function
- reduce delay in start_scale function and reset weight after tare
## [2.0.2] - 2025-09-01
### Added
- add weight check and update spool weight in writeJsonToTag function
- add German and English wiki documentation
### Changed
- update platformio.ini for version v2.0.2
- remove redundant tare calls in setup and start_scale functions
## [2.0.1] - 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 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
- 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 version v2.0.1
- update changelog and header for version v2.0.0-beta14
- 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 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-beta14] - 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 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
- 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-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 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-beta13] - 2025-08-30
### Breaking Changes
- enhance commit categorization for breaking changes

View File

@@ -11,6 +11,26 @@ oder auf meiner Website: [FilaMan Website](https://www.filaman.app)
Deutsches Erklärvideo: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
Discord Server: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
## NEU: Recycling Fabrik
<a href="https://www.recyclingfabrik.com" target="_blank">
<img src="img/rf-logo.png" alt="Recycling Fabrik" width="200">
</a>
FilaMan wird von [Recycling Fabrik](https://www.recyclingfabrik.com) unterstützt.
Recycling Fabrik wird demnächst auf seinen Spulen einen FilaMan tauglichen NFC Tag anbieten. Das hat den Vorteil,
dass die Spulen direkt über FilaMan, ganz automatisch, erkannt und in Spoolman importiert werden können.
**Was ist Recycling Fabrik?**
Die Recycling Fabrik ist ein deutsches Unternehmen, das sich der Entwicklung und Herstellung von nachhaltigem 3D-Druck-Filament verschrieben hat.
Ihre Filamente bestehen zu 100 % aus recyceltem Material, welches sowohl vom Endkunden, als auch aus der Industrie stammt für eine umweltbewusste und ressourcenschonende Zukunft.
Mehr Informationen und Produkte findest du hier: [www.recyclingfabrik.com](https://www.recyclingfabrik.com)
---
### Es gibt jetzt auch ein Wiki, dort sind nochmal alle Funktionen beschrieben: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
### ESP32 Hardware-Funktionen

View File

@@ -15,6 +15,25 @@ or my website: [FilaMan Website](https://www.filaman.app)
german explanatory video: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
Discord Server: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
## NEW: Recycling Fabrik
<a href="https://www.recyclingfabrik.com" target="_blank">
<img src="img/rf-logo.png" alt="Recycling Fabrik" width="200">
</a>
FilaMan is supported by [Recycling Fabrik](https://www.recyclingfabrik.com).
Recycling Fabrik will soon offer a FilaMan-compatible NFC tag on their spools. This has the advantage
that the spools can be automatically recognized and imported into Spoolman directly via FilaMan.
**What is Recycling Fabrik?**
Recycling Fabrik is a German company dedicated to developing and manufacturing sustainable 3D printing filament.
Their filaments are made from 100% recycled material from both end customers and industry for an environmentally conscious and resource-saving future.
More information and products can be found here: [www.recyclingfabrik.com](https://www.recyclingfabrik.com)
---
### Now more detailed informations about the usage: [Wiki](https://github.com/ManuelW77/Filaman/wiki)
### ESP32 Hardware Features

468
WIKI_DE.md Normal file
View File

@@ -0,0 +1,468 @@
# FilaMan Wiki - Deutsch
## Inhaltsverzeichnis
1. [Überblick](#überblick)
2. [Installation](#installation)
3. [Hardware-Anforderungen](#hardware-anforderungen)
4. [Ersteinrichtung](#ersteinrichtung)
5. [Konfiguration](#konfiguration)
6. [Benutzung](#benutzung)
7. [NFC-Tags](#nfc-tags)
8. [Bambu Lab Integration](#bambu-lab-integration)
9. [Spoolman Integration](#spoolman-integration)
10. [Octoprint Integration](#octoprint-integration)
11. [Hersteller Tags](#hersteller-tags)
12. [Fehlerbehebung](#fehlerbehebung)
13. [Support](#support)
---
## Überblick
FilaMan ist ein umfassendes Filament-Managementsystem für 3D-Drucker, das auf ESP32-Hardware basiert. Es bietet Gewichtsmessung, NFC-Tag-Management und nahtlose Integration mit Spoolman und Bambu Lab 3D-Druckern.
### Hauptfunktionen
- **Präzise Gewichtsmessung** mit HX711 Wägezellen-Verstärker
- **NFC-Tag Lesen und Schreiben** für Filament-Identifikation
- **OLED-Display** für Status-Anzeigen
- **WiFi-Konnektivität** mit einfacher Konfiguration
- **Webbasierte Benutzeroberfläche** mit Echtzeit-Updates
- **Spoolman-Integration** für Lagerverwaltung
- **Bambu Lab AMS-Steuerung** via MQTT
- **Openspool NFC-Format** Kompatibilität
- **Hersteller Tag Unterstützung** für automatische Einrichtung
### Systemvoraussetzungen
- **ESP32 Development Board**
- **Spoolman Instanz** (erforderlich für volle Funktionalität)
- **WiFi-Netzwerk**
- **Webbrowser** (Chrome/Firefox/Safari)
---
## Installation
### Einfache Installation (Empfohlen)
1. **Öffnen Sie den [FilaMan Web-Installer](https://www.filaman.app/installer.html)**
- Verwenden Sie einen Chrome-basierten Browser
2. **ESP32 vorbereiten**
- Verbinden Sie den ESP32 über USB mit Ihrem Computer
- Klicken Sie auf "Connect"
3. **Port auswählen**
- Wählen Sie den entsprechenden USB-Port aus
- Bestätigen Sie die Auswahl
4. **Installation starten**
- Klicken Sie auf "FilaMan installieren"
- Warten Sie, bis der Installationsvorgang abgeschlossen ist
### Manuelle Kompilierung
Für erfahrene Benutzer mit PlatformIO:
```bash
git clone https://github.com/ManuelW77/Filaman.git
cd FilaMan/esp32
pio lib install
pio run --target upload
```
---
## Hardware-Anforderungen
### Erforderliche Komponenten
| Komponente | Beschreibung | Amazon Link (Affiliate) |
|------------|--------------|-------------------------|
| ESP32 Development Board | Jede ESP32-Variante | [Amazon](https://amzn.to/3FHea6D) |
| HX711 + Wägezelle | 5kg Load Cell Amplifier | [Amazon](https://amzn.to/4ja1KTe) |
| OLED Display | 0.96" I2C 128x64 SSD1306 | [Amazon](https://amzn.to/445aaa9) |
| PN532 NFC Modul | V3 RFID-Modul | [Amazon](https://amzn.eu/d/gy9vaBX) |
| NFC Tags | NTAG213/NTAG215 | [Amazon](https://amzn.to/3E071xO) |
| TTP223 Touch Sensor | Optional für Tara-Funktion | [Amazon](https://amzn.to/4hTChMK) |
### Pin-Konfiguration
| Komponente | ESP32 Pin | Funktion |
|------------|-----------|----------|
| HX711 DOUT | 16 | Datenausgang Wägezelle |
| HX711 SCK | 17 | Takt Wägezelle |
| OLED SDA | 21 | I2C Daten |
| OLED SCL | 22 | I2C Takt |
| PN532 IRQ | 32 | Interrupt |
| PN532 RESET | 33 | Reset |
| PN532 SDA | 21 | I2C Daten (geteilt) |
| PN532 SCL | 22 | I2C Takt (geteilt) |
| TTP223 I/O | 25 | Touch-Sensor (optional) |
### Wichtige Hinweise
- **PN532 DIP-Schalter** müssen auf I2C-Modus eingestellt sein
- **3V Pin** vom ESP32 für Touch-Sensor verwenden
- **Wägezellen-Verkabelung**: E+ (rot), E- (schwarz), A- (weiß), A+ (grün)
![Schaltplan](./img/Schaltplan.png)
---
## Ersteinrichtung
### Nach der Installation
1. **ESP32 Neustart**
- Das System erstellt automatisch einen WiFi-Hotspot "FilaMan"
2. **WiFi-Konfiguration**
- Verbinden Sie sich mit dem "FilaMan" Netzwerk
- Öffnen Sie einen Browser (automatisches Portal oder http://192.168.4.1)
- Konfigurieren Sie Ihre WiFi-Zugangsdaten
3. **Erster Zugriff**
- Nach erfolgreicher WiFi-Verbindung ist das System unter http://filaman.local erreichbar
- Alternativ über die vom Router zugewiesene IP-Adresse
### Spoolman Vorbereitung
**Wichtiger Hinweis**: Spoolman muss im Debug-Modus laufen:
```env
# In der .env Datei von Spoolman auskommentieren:
SPOOLMAN_DEBUG_MODE=TRUE
```
Dies ist erforderlich, da Spoolman noch keine CORS-Domain-Konfiguration unterstützt.
---
## Konfiguration
### Waagen-Kalibrierung
1. **Kalibrierung starten**
- Gehen Sie zur "Scale" (Waage) Seite
- Bereiten Sie ein 500g Referenzgewicht vor (z.B. Wasserglas)
2. **Kalibrierungsschritte**
- Folgen Sie den Anweisungen auf dem Display
- Legen Sie das Gewicht auf, wenn gefordert
- Warten Sie, bis die Kalibrierung abgeschlossen ist
3. **Validierung**
- Testen Sie die Genauigkeit mit bekannten Gewichten
- Bei Bedarf "Tare Scale" für Nullstellung verwenden
### Spoolman-Verbindung
1. **Spoolman-URL eingeben**
- Gehen Sie zur "Spoolman/Bambu" Seite
- Geben Sie die vollständige URL Ihrer Spoolman-Instanz ein
- Format: `http://spoolman-server:7912`
2. **Verbindung testen**
- Das System prüft automatisch die Verbindung
- Erfolgreiche Verbindung wird durch grünen Status angezeigt
### Bambu Lab Drucker (optional)
1. **Drucker-Einstellungen**
- Öffnen Sie das Einstellungsmenü auf Ihrem Bambu-Drucker
- Notieren Sie sich die folgenden Daten:
- IP-Adresse des Druckers
- Access Code
- Serial Number
2. **FilaMan Konfiguration**
- Geben Sie die Drucker-Daten in der "Spoolman/Bambu" Seite ein
- Aktivieren Sie "Auto Send to Bambu" für automatische AMS-Zuordnung
3. **Auto-Send Timeout**
- Konfigurieren Sie die Wartezeit für automatische Spulen-Erkennung
- Empfohlener Wert: 10-30 Sekunden
---
## Benutzung
### Grundlegende Bedienung
1. **Filament wiegen**
- Platzieren Sie die Spule auf der Waage
- Das Gewicht wird automatisch auf dem Display und in der Weboberfläche angezeigt
2. **NFC-Tag scannen**
- Halten Sie den Tag in die Nähe des PN532-Moduls
- Bei erkannten Tags wird die Spulen-Information angezeigt
- Das Gewicht wird automatisch in Spoolman aktualisiert
3. **Status-Überwachung**
- **OLED-Display** zeigt aktuelles Gewicht und Verbindungsstatus
- **Weboberfläche** bietet detaillierte Informationen und Steuerung
### Weboberfläche Navigation
- **Startseite**: Hauptfunktionen und aktueller Status
- **Scale**: Waagen-Kalibrierung und -Einstellungen
- **Spoolman/Bambu**: System-Konfiguration
- **Statistics**: Nutzungsstatistiken (falls aktiviert)
---
## NFC-Tags
### Unterstützte Tag-Typen
- **NTAG213**: 144 Bytes (grundlegende Funktionen)
- **NTAG215**: 504 Bytes (empfohlen)
- **NTAG216**: 888 Bytes (erweiterte Funktionen)
### Tag beschreiben
1. **Spule in Spoolman vorbereiten**
- Erstellen Sie eine neue Spule in Spoolman
- Stellen Sie sicher, dass alle erforderlichen Daten eingegeben sind
2. **Tag-Beschreibung starten**
- Wählen Sie die Spule aus der Liste
- Klicken Sie auf "Write Tag"
- Das Display zeigt "Waiting for Tag"
3. **Tag auflegen**
- Platzieren Sie den NFC-Tag auf dem PN532-Modul
- Warten Sie auf die Bestätigung
4. **Erfolgsmeldung**
- Bei erfolgreichem Beschreiben wird ein Häkchen angezeigt
- Der Tag ist nun mit der Spoolman-Spule verknüpft
### Tag lesen
1. **Tag scannen**
- Platzieren Sie die Spule mit dem NFC-Tag auf die Waage über dem NFC-Reader
- Bei Problemen beim Lesen: Spule etwas anders positionieren (nicht ganz an den Rand)
- Die Spulen-Information wird automatisch geladen
2. **Automatische Updates**
- Das aktuelle Gewicht wird in Spoolman übertragen
- Die Spule wird in der Weboberfläche automatisch ausgewählt
---
## Bambu Lab Integration
### AMS (Automatic Material System)
1. **AMS-Status anzeigen**
- Die Weboberfläche zeigt den aktuellen Zustand aller AMS-Fächer
- Beladene Fächer werden mit Filament-Informationen angezeigt
2. **Filament manuell zuordnen**
- Wählen Sie eine Spule aus der Spoolman-Liste
- Klicken Sie auf das entsprechende AMS-Fach-Symbol
- Das Filament wird dem Fach zugeordnet
3. **Automatische Zuordnung**
- Nach dem Wiegen mit aktiviertem "Auto Send to Bambu"
- Das System wartet auf neue Spulen im AMS
- Kalibrierte Filamente werden automatisch zugeordnet
### Bambu Studio Integration
1. **Filament-Profile synchronisieren**
- Kalibrieren Sie Filamente in Bambu Studio
- Verwenden Sie Device → AMS → Bleistift-Symbol → Auswählen
2. **Setting-IDs speichern**
- FilaMan erkennt verfügbare Setting-IDs automatisch
- Klicken Sie auf "Settings in Spoolman speichern"
- Die Profile werden für zukünftige Drucke verwendet
### Verbindung wiederherstellen
- Bei Verbindungsproblemen klicken Sie den roten Punkt in der Menüleiste
- Das System stellt automatisch eine neue Verbindung her
---
## Spoolman Integration
### Automatische Funktionen
1. **Spulen-Synchronisation**
- Automatische Übertragung von Gewichtsänderungen
- Echtzeit-Updates der Spulen-Daten
2. **Extra-Felder**
- FilaMan erstellt automatisch erforderliche benutzerdefinierte Felder
- NFC-Tag-UID wird als Referenz gespeichert
3. **Filterung**
- "Nur Spulen ohne NFC-Tag anzeigen" für einfache Tag-Zuordnung
- Kategorisierung nach Herstellern und Materialtypen
### Spoolman Octoprint Plugin
Für Octoprint-Benutzer ist eine automatische Spulen-Zuordnung verfügbar:
1. **Plugin installieren**
```
https://github.com/ManuelW77/OctoPrint-Spoolman-Filaman/archive/refs/heads/master.zip
```
2. **FilaMan konfigurieren**
- Aktivieren Sie "Send to Octo-Plugin"
- Geben Sie Octoprint-URL und API-Key ein
3. **Automatische Zuordnung**
- Nach dem Wiegen wird die Spule automatisch in Octoprint aktiviert
- Unterstützt aktuell nur Tool0 (erste Düse)
---
## Hersteller Tags
### Überblick
Hersteller Tags ermöglichen es Filament-Produzenten, vorkonfigurierte NFC-Tags zu liefern, die automatisch alle notwendigen Einträge in Spoolman erstellen.
### Erste Schritte mit Hersteller Tags
1. **Tag scannen**
- Platzieren Sie die Spule mit dem Hersteller-Tag auf die Waage über dem NFC-Reader
- Bei Problemen beim Lesen: Spule etwas anders positionieren (nicht ganz an den Rand)
- Das System erkennt automatisch das Hersteller-Format
2. **Automatische Erstellung**
- **Marke** wird in Spoolman angelegt (falls nicht vorhanden)
- **Filament-Typ** wird mit allen Spezifikationen erstellt
- **Spule** wird automatisch registriert
3. **Zukünftige Scans**
- Nach der ersten Einrichtung nutzen Tags das Fast-Path-System
- Sofortige Gewichtsmessung ohne erneute Einrichtung
### Unterstützte Hersteller
- **RecyclingFabrik**: Erster offizieller Partner
- Weitere Hersteller folgen
### Vorteile
- ✅ **Null manuelle Einrichtung**
- ✅ **Perfekte Datengenauigkeit**
- ✅ **Sofortige Integration**
- ✅ **Zukunftssicher**
---
## Fehlerbehebung
### Häufige Probleme
#### WiFi-Verbindung
**Problem**: Kann nicht mit FilaMan-Hotspot verbinden
- Lösung: Stellen Sie sicher, dass der ESP32 gestartet ist
- Alternative: Manuell zu http://192.168.4.1 navigieren
**Problem**: Weboberfläche nicht erreichbar
- Lösung: Prüfen Sie die IP-Adresse im Router
- Alternative: Verwenden Sie http://filaman.local
#### Waage
**Problem**: Ungenaue Gewichtsmessungen
- Lösung: Kalibrierung wiederholen
- Tipp: Verwenden Sie "Tare Scale" für Nullstellung
**Problem**: Wägezelle reagiert nicht
- Lösung: Überprüfen Sie die Verkabelung (E+, E-, A+, A-)
- Tipp: Testen Sie mit einem Multimeter
#### NFC-Tags
**Problem**: Tag wird nicht erkannt
- Lösung: Überprüfen Sie die PN532 DIP-Schalter (I2C-Modus)
- Tipp: Spule etwas anders auf der Waage positionieren (nicht ganz an den Rand)
**Problem**: Tag kann nicht beschrieben werden
- Lösung: Verwenden Sie NTAG215 für bessere Kompatibilität
- Tipp: Stellen Sie sicher, dass der Tag nicht schreibgeschützt ist
#### Spoolman
**Problem**: Verbindung zu Spoolman schlägt fehl
- Lösung: Aktivieren Sie SPOOLMAN_DEBUG_MODE=TRUE
- Tipp: Überprüfen Sie die URL-Formatierung
**Problem**: Spulen werden nicht angezeigt
- Lösung: Stellen Sie sicher, dass Spoolman läuft
- Tipp: Prüfen Sie die Netzwerk-Firewall-Einstellungen
#### Bambu Lab
**Problem**: Drucker verbindet nicht
- Lösung: Überprüfen Sie Access Code und IP-Adresse
- Tipp: Stellen Sie sicher, dass der Drucker im LAN-Modus ist
**Problem**: AMS-Status wird nicht angezeigt
- Lösung: Prüfen Sie die MQTT-Verbindung
- Hinweis: Bambu kann die API jederzeit schließen
### Debug-Informationen
Falls Sie Probleme haben, können Sie diese Schritte zur Diagnose verwenden:
#### Serieller Monitor (für Entwickler)
- Verbinden Sie den ESP32 über USB mit Ihrem Computer
- Öffnen Sie einen seriellen Monitor (z.B. Arduino IDE) mit 115200 Baud
- Sie sehen detaillierte Log-Nachrichten des Systems
#### Browser-Konsole
- Öffnen Sie die Weboberfläche von FilaMan
- Drücken Sie F12 um die Entwicklertools zu öffnen
- Schauen Sie in der Konsole nach Fehlermeldungen
#### Neustart bei anhaltenden Problemen
1. ESP32 vom Strom trennen
2. 10 Sekunden warten
3. Wieder anschließen
4. 30 Sekunden für vollständigen Start warten
---
## Support
### Community
- **Discord Server**: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
- **GitHub Issues**: [Filaman Repository](https://github.com/ManuelW77/Filaman/issues)
- **YouTube Kanal**: [Deutsches Erklärvideo](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
### Dokumentation
- **Offizielle Website**: [www.filaman.app](https://www.filaman.app)
- **GitHub Wiki**: [Detaillierte Dokumentation](https://github.com/ManuelW77/Filaman/wiki)
- **Hardware-Referenz**: ESP32 Pinout-Diagramme in `/img/`
### Entwicklung unterstützen
Wenn Sie das Projekt unterstützen möchten:
[![Buy Me A Coffee](https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png)](https://www.buymeacoffee.com/manuelw)
### Lizenz
Dieses Projekt ist unter der MIT-Lizenz veröffentlicht. Siehe [LICENSE](LICENSE.txt) für Details.
---
**Letzte Aktualisierung**: August 2025
**Version**: 2.0
**Maintainer**: Manuel W.

746
WIKI_EN.md Normal file
View File

@@ -0,0 +1,746 @@
# FilaMan Wiki - English
## Table of Contents
1. [Overview](#overview)
2. [Installation](#installation)
3. [Hardware Requirements](#hardware-requirements)
4. [Initial Setup](#initial-setup)
5. [Configuration](#configuration)
6. [Usage](#usage)
7. [NFC Tags](#nfc-tags)
8. [Bambu Lab Integration](#bambu-lab-integration)
9. [Spoolman Integration](#spoolman-integration)
10. [Octoprint Integration](#octoprint-integration)
11. [Manufacturer Tags](#manufacturer-tags)
12. [Troubleshooting](#troubleshooting)
13. [Support](#support)
---
## Overview
FilaMan is a comprehensive filament management system for 3D printers based on ESP32 hardware. It provides weight measurement, NFC tag management, and seamless integration with Spoolman and Bambu Lab 3D printers.
### Key Features
- **Precise weight measurement** with HX711 load cell amplifier
- **NFC tag reading and writing** for filament identification
- **OLED display** for status information
- **WiFi connectivity** with easy configuration
- **Web-based user interface** with real-time updates
- **Spoolman integration** for inventory management
- **Bambu Lab AMS control** via MQTT
- **OpenSpool NFC format** compatibility
- **Manufacturer tag support** for automatic setup
### System Requirements
- **ESP32 Development Board**
- **Spoolman Instance** (required for full functionality)
- **WiFi Network**
- **Web Browser** (Chrome/Firefox/Safari)
---
## Installation
### Easy Installation (Recommended)
1. **Open the [FilaMan Web Installer](https://www.filaman.app/installer.html)**
- Use a Chrome-based browser
2. **Prepare ESP32**
- Connect ESP32 via USB to your computer
- Click "Connect"
3. **Select Port**
- Choose the appropriate USB port
- Confirm selection
4. **Start Installation**
- Click "Install FilaMan"
- Wait for installation to complete
### Manual Compilation
For advanced users with PlatformIO:
```bash
git clone https://github.com/ManuelW77/Filaman.git
cd FilaMan/esp32
pio lib install
pio run --target upload
```
---
## Hardware Requirements
### Required Components
| Component | Description | Amazon Link (Affiliate) |
|-----------|-------------|-------------------------|
| ESP32 Development Board | Any ESP32 variant | [Amazon](https://amzn.to/3FHea6D) |
| HX711 + Load Cell | 5kg Load Cell Amplifier | [Amazon](https://amzn.to/4ja1KTe) |
| OLED Display | 0.96" I2C 128x64 SSD1306 | [Amazon](https://amzn.to/445aaa9) |
| PN532 NFC Module | V3 RFID Module | [Amazon](https://amzn.eu/d/gy9vaBX) |
| NFC Tags | NTAG213/NTAG215 | [Amazon](https://amzn.to/3E071xO) |
| TTP223 Touch Sensor | Optional for tare function | [Amazon](https://amzn.to/4hTChMK) |
### Pin Configuration
| Component | ESP32 Pin | Function |
|-----------|-----------|----------|
| HX711 DOUT | 16 | Load cell data output |
| HX711 SCK | 17 | Load cell clock |
| OLED SDA | 21 | I2C data |
| OLED SCL | 22 | I2C clock |
| PN532 IRQ | 32 | Interrupt |
| PN532 RESET | 33 | Reset |
| PN532 SDA | 21 | I2C data (shared) |
| PN532 SCL | 22 | I2C clock (shared) |
| TTP223 I/O | 25 | Touch sensor (optional) |
### Important Notes
- **PN532 DIP switches** must be set to I2C mode
- **3V pin** from ESP32 for touch sensor
- **Load cell wiring**: E+ (red), E- (black), A- (white), A+ (green)
![Wiring Diagram](./img/Schaltplan.png)
---
## Initial Setup
### After Installation
1. **ESP32 Restart**
- System automatically creates a WiFi hotspot "FilaMan"
2. **WiFi Configuration**
- Connect to the "FilaMan" network
- Open browser (automatic portal or <http://192.168.4.1>)
- Configure your WiFi credentials
3. **First Access**
- After successful WiFi connection, access system at <http://filaman.local>
- Alternative: Use IP address assigned by router
### Spoolman Preparation
**Important Note**: Spoolman must run in debug mode:
```env
# Uncomment in Spoolman's .env file:
SPOOLMAN_DEBUG_MODE=TRUE
```
This is required as Spoolman doesn't support CORS domain configuration yet.
---
## Configuration
### Scale Calibration
1. **Start Calibration**
- Go to "Scale" page
- Prepare a 500g reference weight (e.g., water glass)
2. **Calibration Steps**
- Follow instructions on display
- Place weight when prompted
- Wait for calibration to complete
3. **Validation**
- Test accuracy with known weights
- Use "Tare Scale" for zero adjustment if needed
### Spoolman Connection
1. **Enter Spoolman URL**
- Go to "Spoolman/Bambu" page
- Enter complete URL of your Spoolman instance
- Format: `http://spoolman-server:7912`
2. **Test Connection**
- System automatically checks connection
- Successful connection shown by green status
### Bambu Lab Printer (Optional)
1. **Printer Settings**
- Open settings menu on your Bambu printer
- Note the following data:
- Printer IP address
- Access Code
- Serial Number
2. **FilaMan Configuration**
- Enter printer data on "Spoolman/Bambu" page
- Enable "Auto Send to Bambu" for automatic AMS assignment
3. **Auto-Send Timeout**
- Configure waiting time for automatic spool detection
- Recommended value: 10-30 seconds
---
## Usage
### Basic Operation
1. **Weigh Filament**
- Place spool on scale
- Weight automatically displayed on screen and web interface
2. **Scan NFC Tag**
- Hold tag near PN532 module
- Recognized tags display spool information
- Weight automatically updated in Spoolman
3. **Status Monitoring**
- **OLED Display** shows current weight and connection status
- **Web Interface** provides detailed information and control
### Web Interface Navigation
- **Home**: Main functions and current status
- **Scale**: Scale calibration and settings
- **Spoolman/Bambu**: System configuration
- **Statistics**: Usage statistics (if enabled)
---
## NFC Tags
### Supported Tag Types
- **NTAG213**: 144 bytes (basic functions)
- **NTAG215**: 504 bytes (recommended)
- **NTAG216**: 888 bytes (extended functions)
### Writing Tags
1. **Prepare Spool in Spoolman**
- Create new spool in Spoolman
- Ensure all required data is entered
2. **Start Tag Writing**
- Select spool from list
- Click "Write Tag"
- Display shows "Waiting for Tag"
3. **Place Tag**
- Position NFC tag on PN532 module
- Wait for confirmation
4. **Success Message**
- Successful writing shows checkmark
- Tag is now linked to Spoolman spool
### Reading Tags
1. **Scan Tag**
- Place the spool with NFC tag on the scale over the NFC reader
- If reading fails: Reposition spool slightly (not completely at the edge)
- Spool information automatically loaded
2. **Automatic Updates**
- Current weight transferred to Spoolman
- Spool automatically selected in web interface
---
## Bambu Lab Integration
### AMS (Automatic Material System)
1. **Display AMS Status**
- Web interface shows current state of all AMS slots
- Loaded slots display filament information
2. **Manual Filament Assignment**
- Select spool from Spoolman list
- Click corresponding AMS slot icon
- Filament assigned to slot
3. **Automatic Assignment**
- After weighing with "Auto Send to Bambu" enabled
- System waits for new spools in AMS
- Calibrated filaments automatically assigned
### Bambu Studio Integration
1. **Sync Filament Profiles**
- Calibrate filaments in Bambu Studio
- Use Device → AMS → Pencil icon → Select
2. **Save Setting IDs**
- FilaMan automatically detects available setting IDs
- Click "Save Settings to Spoolman"
- Profiles used for future prints
### Restore Connection
- For connection issues, click red dot in menu bar
- System automatically establishes new connection
---
## Spoolman Integration
### Automatic Functions
1. **Spool Synchronization**
- Automatic transfer of weight changes
- Real-time updates of spool data
2. **Extra Fields**
- FilaMan automatically creates required custom fields
- NFC tag UID stored as reference
3. **Filtering**
- "Show only spools without NFC tag" for easy tag assignment
- Categorization by manufacturers and material types
### Spoolman Octoprint Plugin
For Octoprint users, automatic spool assignment is available:
1. **Install Plugin**
```text
https://github.com/ManuelW77/OctoPrint-Spoolman-Filaman/archive/refs/heads/master.zip
```
2. **Configure FilaMan**
- Enable "Send to Octo-Plugin"
- Enter Octoprint URL and API key
3. **Automatic Assignment**
- After weighing, spool automatically activated in Octoprint
- Currently supports only Tool0 (first nozzle)
---
## Manufacturer Tags
### Overview
Manufacturer tags allow filament producers to provide pre-configured NFC tags that automatically create all necessary entries in Spoolman.
### Getting Started with Manufacturer Tags
1. **Scan Tag**
- Place spool with manufacturer tag on the scale over the NFC reader
- If reading fails: Reposition spool slightly (not completely at the edge)
- System automatically recognizes manufacturer format
2. **Automatic Creation**
- **Brand** created in Spoolman (if not present)
- **Filament type** created with all specifications
- **Spool** automatically registered
3. **Future Scans**
- After initial setup, tags use fast-path system
- Immediate weight measurement without re-setup
### Supported Manufacturers
- **RecyclingFabrik**: First official partner
- More manufacturers coming soon
### Benefits
- ✅ **Zero manual setup**
- ✅ **Perfect data accuracy**
- ✅ **Instant integration**
- ✅ **Future-proof**
---
## Troubleshooting
### Common Issues
#### WiFi Connection
**Issue**: Cannot connect to FilaMan hotspot
- Solution: Ensure ESP32 is started
- Alternative: Manually navigate to <http://192.168.4.1>
**Issue**: Web interface not accessible
- Solution: Check IP address in router
- Alternative: Use <http://filaman.local>
#### Scale
**Issue**: Inaccurate weight measurements
- Solution: Repeat calibration
- Tip: Use "Tare Scale" for zero adjustment
**Issue**: Load cell not responding
- Solution: Check wiring (E+, E-, A+, A-)
- Tip: Test with multimeter
#### NFC Tags
**Issue**: Tag not recognized
- Solution: Check PN532 DIP switches (I2C mode)
- Tip: Reposition spool slightly on scale (not completely at the edge)
**Issue**: Cannot write tag
- Solution: Use NTAG215 for better compatibility
- Tip: Ensure tag is not write-protected
#### Spoolman
**Issue**: Connection to Spoolman fails
- Solution: Enable SPOOLMAN_DEBUG_MODE=TRUE
- Tip: Check URL formatting
**Issue**: Spools not displayed
- Solution: Ensure Spoolman is running
- Tip: Check network firewall settings
#### Bambu Lab
**Issue**: Printer won't connect
- Solution: Check access code and IP address
- Tip: Ensure printer is in LAN mode
**Issue**: AMS status not displayed
- Solution: Check MQTT connection
- Note: Bambu may close API at any time
### Debug Information
If you have problems, you can use these steps for diagnosis:
#### Serial Monitor (for developers)
- Connect the ESP32 via USB to your computer
- Open a serial monitor (e.g., Arduino IDE) with 115200 baud
- You will see detailed log messages from the system
#### Browser Console
- Open the FilaMan web interface
- Press F12 to open developer tools
- Check the console for error messages
---
## Maintenance and Updates
### Firmware Update
1. **Via Web Interface**: Access `http://filaman.local/upgrade.html`
2. **Select firmware file** (.bin format)
3. **Upload** - System restarts automatically
4. **Configuration preserved** - Settings remain intact
### System Reset
For persistent issues:
1. Disconnect ESP32 from power
2. Wait 10 seconds
3. Reconnect
4. Wait 30 seconds for complete startup
---
## Support and Information
**Manufacturer**: Your Company Name
**Maintainer**: Manuel W.
### Scale Technology
#### Weight Stabilization
The system uses multiple filters for precise measurements:
```cpp
// Moving Average Filter with 8 values
#define MOVING_AVERAGE_SIZE 8
// Low-Pass Filter for smoothing
#define LOW_PASS_ALPHA 0.3f
// Thresholds for updates
#define DISPLAY_THRESHOLD 0.3f // Display update
#define API_THRESHOLD 1.5f // API actions
```
#### Calibration Algorithm
1. **System Pause**: All tasks are temporarily paused
2. **Zero Setting**: Tare scale without weight
3. **Reference Measurement**: 500g weight for 10 measurements
4. **Calculation**: `newValue = rawValue / SCALE_LEVEL_WEIGHT`
5. **NVS Storage**: Permanent value with verification
6. **Filter Reset**: New baseline for stabilization
#### Auto-Tare Logic
```cpp
// Conditions for Auto-Tare
if (autoTare && (weight > 2 && weight < 7) || weight < -2) {
scale_tare_counter++;
if (scale_tare_counter >= 5) {
// Automatic zero setting
scale.tare();
resetWeightFilter();
}
}
```
### NFC Technology
#### PN532 Communication
- **Interface**: I2C at 400kHz
- **IRQ Pin**: Interrupt-based tag detection
- **Reset Handling**: Automatic recovery from communication errors
- **DIP Switches**: Must be set to I2C mode (00)
#### NDEF Implementation
```json
// FilaMan Spoolman Format (with sm_id)
{
"sm_id": "123",
"color": "#FF5733",
"type": "PLA",
"brand": "Example Brand"
}
```
#### Manufacturer Tag Schema
Compact JSON format for storage efficiency:
```json
{
"b": "RecyclingFabrik", // brand
"an": "FX1_PLA-S175-1000-RED", // article number
"t": "PLA", // type
"c": "FF0000", // color (hex without #)
"cn": "Red", // color name
"et": "210", // extruder temp
"bt": "60", // bed temp
"di": "1.75", // diameter
"de": "1.24", // density
"sw": "240", // spool weight
"u": "https://www.yoururl.com/search?q=" // URL used vor Brand Link and Filament Link
}
```
### Display System
#### OLED Architecture (SSD1306)
- **Resolution**: 128x64 pixels monochrome
- **Areas**:
- Status bar: 0-16 pixels (version, icons)
- Main area: 17-64 pixels (weight, messages)
- **Update Interval**: 1 second for status line
#### Icon System
Bitmap icons for various states:
```cpp
// Status Icons (16x16 pixels)
- icon_success: Checkmark for successful operations
- icon_failed: X for errors
- icon_transfer: Arrow for data transmission
- icon_loading: Loading circle for ongoing operations
// Connection Icons with strikethrough indicator
- wifi_on/wifi_off: WLAN status
- bambu_on: Bambu Lab connection
- spoolman_on: Spoolman API status
```
### API Integration
#### Spoolman REST API
FilaMan interacts with the following endpoints:
```http
GET /api/v1/spool/ # List spools
POST /api/v1/spool/ # Create new spool
PUT /api/v1/spool/{id}/ # Update spool
GET /api/v1/vendor/ # List vendors
POST /api/v1/vendor/ # Create new vendor
GET /api/v1/filament/ # List filaments
POST /api/v1/filament/ # Create new filament
```
#### Request Handling
```cpp
// Sequential API processing
enum spoolmanApiStateType {
API_IDLE = 0,
API_PROCESSING = 1,
API_ERROR = 2
};
```
Prevents simultaneous API calls and deadlocks.
#### Weight Update Logic
```cpp
// Conditions for Spoolman update
if (activeSpoolId != "" &&
weigthCouterToApi > 3 && // 3+ stable measurements
weightSend == 0 && // Not yet sent
weight > 5 && // Minimum weight 5g
spoolmanApiState == API_IDLE) {
updateSpoolWeight(activeSpoolId, weight);
}
```
### Bambu Lab MQTT
#### Connection Parameters
```cpp
// SSL/TLS Configuration
#define BAMBU_PORT 8883
#define BAMBU_USERNAME "bblp"
// Topic Structure
String topic = "device/" + bambu_serial + "/report";
String request_topic = "device/" + bambu_serial + "/request";
```
#### AMS Data Structure
```cpp
struct AMSData {
String tray_id;
String tray_type;
String tray_color;
String tray_material;
String setting_id;
String tray_info_idx;
bool has_spool;
};
```
#### Auto-Send Mechanism
```cpp
// After tag recognition
if (bambuCredentials.autosend_enable) {
autoSetToBambuSpoolId = activeSpoolId.toInt();
// Countdown starts automatically
// Waits for new spool in AMS
}
```
### WebSocket Communication
#### Message Types
```javascript
// Client → Server
{
"type": "writeNfcTag",
"tagType": "spool",
"payload": { /* JSON data */ }
}
{
"type": "scale",
"payload": "tare|calibrate|setAutoTare",
"enabled": true
}
// Server → Client
{
"type": "heartbeat",
"freeHeap": 245,
"bambu_connected": true,
"spoolman_connected": true
}
{
"type": "amsData",
"data": [ /* AMS array */ ]
}
```
#### Connection Management
- **Auto-Reconnect**: Client-side reconnection
- **Heartbeat**: Every 30 seconds for connection monitoring
- **Cleanup**: Automatic removal of dead connections
### Watchdog and Error Handling
#### System Watchdog
```cpp
// WDT Configuration
esp_task_wdt_init(10, true); // 10s timeout, panic on overflow
esp_task_wdt_add(NULL); // Add current task
```
#### Error Recovery
- **NFC Reset**: Automatic PN532 restart on communication errors
- **MQTT Reconnect**: Bambu Lab connection automatically restored
- **WiFi Monitoring**: Connection check every 60 seconds
---
## Support
### Community
- **Discord Server**: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
- **GitHub Issues**: [Filaman Repository](https://github.com/ManuelW77/Filaman/issues)
- **YouTube Channel**: [German explanation video](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
### Documentation
- **Official Website**: [www.filaman.app](https://www.filaman.app)
- **GitHub Wiki**: [Detailed documentation](https://github.com/ManuelW77/Filaman/wiki)
- **Hardware Reference**: ESP32 pinout diagrams in `/img/`
### Support Development
If you'd like to support the project:
[![Buy Me A Coffee](https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png)](https://www.buymeacoffee.com/manuelw)
### License
This project is released under the MIT License. See [LICENSE](LICENSE.txt) for details.
---
**Last Updated**: August 2025
**Version**: 2.0
**Maintainer**: Manuel W.

BIN
img/rf-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -9,7 +9,7 @@
; https://docs.platformio.org/page/projectconf.html
[common]
version = "2.0.0-beta13"
version = "2.0.6-beta1"
to_old_version = "1.5.10"
##

View File

@@ -42,6 +42,12 @@ def categorize_commit(commit_msg):
"""Categorize commit messages based on conventional commits"""
lower_msg = commit_msg.lower()
# Filter out automatic release documentation commits
if ('docs:' in lower_msg and
('update changelog and header for version' in lower_msg or
'update platformio.ini for' in lower_msg)):
return None # Skip these commits
# Check for breaking changes first
if ('!' in commit_msg and any(x in lower_msg for x in ['feat!', 'fix!', 'chore!', 'refactor!'])) or \
'breaking change' in lower_msg or 'breaking:' in lower_msg:
@@ -77,6 +83,7 @@ def get_changes_from_git():
for commit in commits:
if commit:
category = categorize_commit(commit)
if category is not None: # Skip commits that return None (filtered out)
# Clean up commit message
clean_msg = re.sub(r'^(feat|fix|chore|docs|style|refactor|perf|test)(\(.*\))?!?:', '', commit).strip()
# Remove BREAKING CHANGE prefix if present

View File

@@ -21,6 +21,7 @@ uint16_t foundVendorId = 0; // Store ID of found vendor
uint16_t foundFilamentId = 0; // Store ID of found filament
uint16_t createdFilamentId = 0; // Store ID of newly created filament
uint16_t createdSpoolId = 0; // Store ID of newly created spool
uint16_t updateOctoSpoolId = 0; // Store spool ID for OctoPrint update
bool spoolmanConnected = false;
bool spoolmanExtraFieldsChecked = false;
TaskHandle_t* apiTask;
@@ -126,26 +127,67 @@ void sendToApi(void *parameter) {
String spoolIdForWeight = params->spoolIdForWeight;
uint16_t weightValue = params->weightValue;
// Retry mechanism with configurable parameters
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);
int httpCode;
// Execute HTTP request based on type
if (httpType == "PATCH") httpCode = http.PATCH(updatePayload);
else if (httpType == "POST") httpCode = http.POST(updatePayload);
else if (httpType == "GET") httpCode = http.GET();
else httpCode = http.PUT(updatePayload);
if (httpCode == HTTP_CODE_OK) {
// Check if request was successful
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_CREATED) {
responsePayload = http.getString();
success = true;
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();
}
// Process successful response
if (success) {
Serial.println("Spoolman Abfrage erfolgreich");
// Restgewicht der Spule auslesen
String payload = http.getString();
JsonDocument doc;
DeserializationError error = deserializeJson(doc, payload);
DeserializationError error = deserializeJson(doc, responsePayload);
if (error) {
Serial.print("Fehler beim Parsen der JSON-Antwort: ");
Serial.println(error.c_str());
@@ -226,9 +268,8 @@ void sendToApi(void *parameter) {
Serial.println("Spoolman erfolgreich erstellt");
// Parse response for created resources
String payload = http.getString();
JsonDocument doc;
DeserializationError error = deserializeJson(doc, payload);
DeserializationError error = deserializeJson(doc, responsePayload);
if (error) {
Serial.print("Fehler beim Parsen der JSON-Antwort: ");
Serial.println(error.c_str());
@@ -280,14 +321,17 @@ void sendToApi(void *parameter) {
Serial.println(weightPayload);
// Execute weight update
http.begin(weightUrl);
http.addHeader("Content-Type", "application/json");
HTTPClient weightHttp;
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) {
Serial.println("Weight update successful");
String weightResponse = http.getString();
String weightResponse = weightHttp.getString();
JsonDocument weightResponseDoc;
DeserializationError weightError = deserializeJson(weightResponseDoc, weightResponse);
@@ -310,6 +354,7 @@ void sendToApi(void *parameter) {
oledShowProgressBar(1, 1, "Failure!", "Weight update");
}
weightHttp.end();
weightDoc.clear();
}
} else {
@@ -325,14 +370,25 @@ void sendToApi(void *parameter) {
case API_REQUEST_BAMBU_UPDATE:
oledShowProgressBar(1, 1, "Failure!", "Bambu update");
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:
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;
case API_REQUEST_FILAMENT_CREATE:
oledShowProgressBar(1, 1, "Failure!", "Filament create");
createdFilamentId = 0; // Set to 0 to indicate error
break;
case API_REQUEST_SPOOL_CREATE:
oledShowProgressBar(1, 1, "Failure!", "Spool create");
createdSpoolId = 0; // Set to 0 to indicate error instead of hanging
break;
}
Serial.println("Fehler beim Senden an Spoolman! HTTP Code: " + String(httpCode));
@@ -340,7 +396,6 @@ void sendToApi(void *parameter) {
nfcReaderState = NFC_IDLE; // Reset NFC state to allow retry
}
http.end();
vTaskDelay(50 / portTICK_PERIOD_MS);
// Speicher freigeben
@@ -953,6 +1008,13 @@ uint16_t createSpool(uint16_t vendorId, uint16_t filamentId, JsonDocument& paylo
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
// void startWriteJsonToTag(const bool isSpoolTag, const char* payload);

View File

@@ -33,6 +33,7 @@ extern bool sendOctoUpdate;
extern String octoUrl;
extern String octoToken;
extern bool spoolmanConnected;
extern uint16_t updateOctoSpoolId;
bool checkSpoolmanInstance();
bool saveSpoolmanUrl(const String& url, bool octoOn, const String& octoWh, const String& octoTk);

View File

@@ -21,7 +21,7 @@ TaskHandle_t BambuMqttTask;
bool bambuDisabled = false;
bool bambu_connected = false;
int autoSetToBambuSpoolId = 0;
uint16_t autoSetToBambuSpoolId = 0;
BambuCredentials bambuCredentials;

View File

@@ -37,7 +37,7 @@ extern bool bambu_connected;
extern int ams_count;
extern AMSData ams_data[MAX_AMS];
//extern bool autoSendToBambu;
extern int autoSetToBambuSpoolId;
extern uint16_t autoSetToBambuSpoolId;
extern bool bambuDisabled;
extern BambuCredentials bambuCredentials;

View File

@@ -59,7 +59,7 @@ void setup() {
// Scale
start_scale(touchSensorConnected);
scale.tare();
scaleTareRequest = true;
// WDT initialisieren mit 10 Sekunden Timeout
bool panic = true; // Wenn true, löst ein WDT-Timeout einen System-Panik aus
@@ -135,7 +135,7 @@ void loop() {
}
// Wenn Bambu auto set Spool aktiv
if (bambuCredentials.autosend_enable && autoSetToBambuSpoolId > 0)
if (bambuCredentials.autosend_enable && autoSetToBambuSpoolId > 0 && !nfcWriteInProgress)
{
if (!bambuDisabled && !bambu_connected)
{
@@ -154,9 +154,11 @@ void loop() {
{
autoSetToBambuSpoolId = 0;
autoAmsCounter = 0;
if (!nfcWriteInProgress) {
oledShowWeight(weight);
}
}
}
else
{
autoAmsCounter = 0;
@@ -176,7 +178,8 @@ void loop() {
else
{
// Ausgabe der Waage auf Display
if(pauseMainTask == 0)
// Block weight display during NFC write operations
if(pauseMainTask == 0 && !nfcWriteInProgress)
{
// Use filtered weight for smooth display, but still check API weight for significant changes
int16_t displayWeight = getFilteredDisplayWeight();
@@ -197,17 +200,6 @@ void loop() {
{
lastWeightReadTime = currentMillis;
// Prüfen ob die Waage korrekt genullt ist
// Abweichung von 2g ignorieren
if (autoTare && (weight > 2 && weight < 7) || weight < -2)
{
scale_tare_counter++;
}
else
{
scale_tare_counter = 0;
}
// Prüfen ob das Gewicht gleich bleibt und dann senden
if (abs(weight - lastWeight) <= 2 && weight > 5)
{
@@ -221,7 +213,6 @@ void loop() {
}
// reset weight counter after writing tag
// TBD: what exactly is the logic behind this?
if (currentMillis - lastWeightReadTime >= weightReadInterval && nfcReaderState != NFC_IDLE && nfcReaderState != NFC_READ_SUCCESS)
{
weigthCouterToApi = 0;
@@ -244,6 +235,10 @@ void loop() {
{
autoSetToBambuSpoolId = activeSpoolId.toInt();
}
if (octoEnabled)
{
updateOctoSpoolId = activeSpoolId.toInt();
}
}
else
{
@@ -273,7 +268,7 @@ void loop() {
if(octoEnabled && sendOctoUpdate && spoolmanApiState == API_IDLE)
{
updateSpoolOcto(autoSetToBambuSpoolId);
updateSpoolOcto(updateOctoSpoolId);
sendOctoUpdate = false;
}
}

View File

@@ -1650,7 +1650,30 @@ void writeJsonToTag(void *parameter) {
if(params->tagType){
// TBD: should this be simplified?
if (updateSpoolTagId(uidString, params->payload) && params->tagType) {
// Check if weight is over 20g and send to Spoolman
if (weight > 20) {
Serial.println("Tag successfully written and weight > 20g - sending weight to Spoolman");
// Extract spool ID from payload for weight update
JsonDocument payloadDoc;
DeserializationError error = deserializeJson(payloadDoc, params->payload);
if (!error && payloadDoc["sm_id"].is<String>()) {
String spoolId = payloadDoc["sm_id"].as<String>();
if (spoolId != "") {
Serial.printf("Updating spool %s with weight %dg\n", spoolId.c_str(), weight);
updateSpoolWeight(spoolId, weight);
} else {
Serial.println("No valid spool ID found for weight update");
}
} else {
Serial.println("Error parsing payload for spool ID extraction");
}
payloadDoc.clear();
} else {
Serial.printf("Weight %dg is not above 20g threshold - skipping weight update\n", weight);
}
}else{
// Potentially handle errors
}

View File

@@ -141,7 +141,7 @@ uint8_t setAutoTare(bool autoTareValue) {
uint8_t tareScale() {
Serial.println("Tare scale");
scale.tare();
resetWeightFilter(); // Reset stabilization filter after tare
resetWeightFilter();
return 1;
}
@@ -151,6 +151,7 @@ void scale_loop(void * parameter) {
Serial.println("Scale Loop started");
Serial.println("++++++++++++++++++++++++++++++");
//scaleTareRequest == true;
// Initialize weight filter
resetWeightFilter();
lastMeasurementTime = millis();
@@ -162,17 +163,8 @@ void scale_loop(void * parameter) {
if (currentTime - lastMeasurementTime >= MEASUREMENT_INTERVAL_MS) {
if (scale.is_ready())
{
// Waage automatisch Taren, wenn zu lange Abweichung
if (autoTare && scale_tare_counter >= 5)
{
Serial.println("Auto Tare scale");
scale.tare();
resetWeightFilter(); // Reset filter after auto tare
scale_tare_counter = 0;
}
// Waage manuell Taren
if (scaleTareRequest == true)
if (scaleTareRequest == true || (autoTare && scale_tare_counter >= 20))
{
Serial.println("Re-Tare scale");
oledShowMessage("TARE Scale");
@@ -182,6 +174,8 @@ void scale_loop(void * parameter) {
vTaskDelay(pdMS_TO_TICKS(1000));
oledShowWeight(0);
scaleTareRequest = false;
scale_tare_counter = 0;
weight = 0; // Reset global weight variable after tare
}
// Get raw weight reading
@@ -195,6 +189,17 @@ void scale_loop(void * parameter) {
weight = stabilizedWeight;
}
// Prüfen ob die Waage korrekt genullt ist
// Abweichung von 2g ignorieren
if (autoTare && (rawWeight > 2 && rawWeight < 7) || rawWeight < -2)
{
scale_tare_counter++;
}
else
{
scale_tare_counter = 0;
}
// Debug output for monitoring (can be removed in production)
static unsigned long lastDebugTime = 0;
if (currentTime - lastDebugTime > 2000) { // Print every 2 seconds
@@ -237,7 +242,7 @@ void start_scale(bool touchSensorConnected) {
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
oledShowProgressBar(6, 7, DISPLAY_BOOT_TEXT, "Tare scale");
oledShowProgressBar(6, 7, DISPLAY_BOOT_TEXT, "Serching scale");
for (uint16_t i = 0; i < 3000; i++) {
yield();
vTaskDelay(pdMS_TO_TICKS(1));
@@ -250,7 +255,6 @@ void start_scale(bool touchSensorConnected) {
scale.set_scale(calibrationValue);
//vTaskDelay(pdMS_TO_TICKS(5000));
//scale.tare();
// Initialize weight stabilization filter
resetWeightFilter();

View File

@@ -81,7 +81,9 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
else if (doc["type"] == "scale") {
uint8_t success = 0;
if (doc["payload"] == "tare") {
success = tareScale();
scaleTareRequest = true;
success = 1;
//success = tareScale();
}
if (doc["payload"] == "calibrate") {