Compare commits

..

472 Commits

Author SHA1 Message Date
807eca3c43 docs: update changelog for version 1.3.54
Some checks failed
Release Workflow / detect-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m12s
2025-02-22 16:47:52 +01:00
b52730bf67 docs: update webpages for version v1.3.54 2025-02-22 16:47:52 +01:00
9a59b91e88 workflow: update SPIFFS binary creation to exclude header 2025-02-22 16:47:27 +01:00
a5af4013d8 docs: update changelog for version 1.3.53
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 2m34s
2025-02-22 16:22:30 +01:00
e54ce58ec4 version: update to version 1.3.53 2025-02-22 16:22:27 +01:00
142eafd232 docs: update changelog for version 1.3.51 2025-02-22 16:22:04 +01:00
63ab9e0993 docs: update changelog for version 1.3.51 2025-02-22 16:21:54 +01:00
aaa5506d40 workflow: update SPIFFS binary magic byte and revert version to 1.3.51 2025-02-22 16:21:51 +01:00
8037adc045 docs: update changelog for version 1.3.52
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 2m20s
2025-02-22 16:09:46 +01:00
6e7c728cd8 docs: update webpages for version v1.3.52 2025-02-22 16:09:46 +01:00
3fe8271344 workflow: update SPIFFS binary creation to use correct chip revision (0xEB for Rev 3) 2025-02-22 16:09:41 +01:00
f2bc6eab92 docs: update changelog for version 1.3.51
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 2m35s
2025-02-22 15:50:55 +01:00
37df492339 docs: update webpages for version v1.3.51 2025-02-22 15:50:54 +01:00
c4b425403f config: update platformio.ini to specify correct chip revision and remove unused dependencies 2025-02-22 15:50:49 +01:00
73244689dd docs: update changelog for version 1.3.50
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 2m31s
2025-02-22 15:16:53 +01:00
27296104d2 docs: update webpages for version v1.3.50 2025-02-22 15:16:53 +01:00
5f99773897 docs: update changelog for version 1.3.49
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 2m43s
2025-02-22 14:54:23 +01:00
7416285fb9 docs: update webpages for version v1.3.49 2025-02-22 14:54:23 +01:00
85928e358d workflow: update SPIFFS binary header to use correct chip revision 2025-02-22 14:54:19 +01:00
092b4fd8ec docs: update changelog for version 1.3.48
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 2m52s
2025-02-22 14:31:23 +01:00
399645a2b3 docs: update webpages for version v1.3.48 2025-02-22 14:31:23 +01:00
164bb241b7 workflow: update SPIFFS binary header for firmware release 2025-02-22 14:29:33 +01:00
e564c6eeae docs: update changelog for version 1.3.47
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 2m37s
2025-02-22 14:04:37 +01:00
4288dd0cd4 docs: update webpages for version v1.3.47 2025-02-22 14:04:37 +01:00
37d43b2d7d workflow: optimize firmware and SPIFFS update process, improve progress handling and logging 2025-02-22 14:04:34 +01:00
adb354ddcd docs: update changelog for version 1.3.46
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 2m39s
2025-02-22 13:55:42 +01:00
15d5e5edce docs: update webpages for version v1.3.46 2025-02-22 13:55:42 +01:00
c6edf30245 docs: update changelog for version 1.3.45
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 2m44s
2025-02-22 12:21:35 +01:00
65ac207f36 docs: update webpages for version v1.3.45 2025-02-22 12:21:35 +01:00
698abbd669 workflow: update SPIFFS binary creation to include minimal header and adjust update validation logic 2025-02-22 12:21:33 +01:00
04a7c2cce3 docs: update changelog for version 1.3.44
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 2m48s
2025-02-22 12:11:30 +01:00
78f54b72fd docs: update webpages for version v1.3.44 2025-02-22 12:11:30 +01:00
f4eee9af91 docs: update header title to 'Hollo Lollo Trollo' 2025-02-22 12:11:26 +01:00
cad14b3bc2 docs: update header title to 'Filament Management Tool' and improve update response messages 2025-02-22 12:10:57 +01:00
312f75fc5f docs: update changelog for version 1.3.43
All checks were successful
Release Workflow / detect-provider (push) Successful in 7s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m28s
2025-02-22 12:03:29 +01:00
b8714e93e2 docs: update webpages for version v1.3.43 2025-02-22 12:03:28 +01:00
cd9da0fe4f docs: update header title to 'Hollo Lollo Trollo' 2025-02-22 12:03:25 +01:00
2b620ef5ed docs: update changelog for version 1.3.42
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 2m27s
2025-02-22 11:52:21 +01:00
3f63a01b8b docs: update webpages for version v1.3.42 2025-02-22 11:52:21 +01:00
22bb16b6a4 fix: correct path for SPIFFS binary creation in Gitea release workflow 2025-02-22 11:52:19 +01:00
53ceee7816 docs: update changelog for version 1.3.41
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 2m32s
2025-02-22 11:48:12 +01:00
d48b002806 docs: update webpages for version v1.3.41 2025-02-22 11:48:12 +01:00
dd905b6c6e fix: remove redundant buffer size setting in NFC initialization 2025-02-22 11:47:35 +01:00
77b9eda110 fix: update SPIFFS binary creation and enhance NFC buffer size 2025-02-22 11:46:17 +01:00
32a6e9dcd3 docs: update changelog for version 1.3.40
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 2m30s
2025-02-22 11:31:19 +01:00
6cd5539e60 docs: update webpages for version v1.3.40 2025-02-22 11:31:19 +01:00
903b697912 fix: update SPIFFS binary header and enhance WebSocket error handling 2025-02-22 11:31:15 +01:00
72c2fb70c2 docs: update changelog for version 1.3.39
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 2m44s
2025-02-22 11:26:27 +01:00
f2f3f0ab9f docs: update webpages for version v1.3.39 2025-02-22 11:26:27 +01:00
c07692c218 workflow: update SPIFFS binary creation to set chip version to max supported 2025-02-22 11:26:24 +01:00
a184903b66 docs: update changelog for version 1.3.38
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 2m58s
2025-02-22 11:21:08 +01:00
af1640383d docs: update webpages for version v1.3.38 2025-02-22 11:21:08 +01:00
c00e54b145 workflow: update SPIFFS binary creation with minimal ESP32 image header 2025-02-22 11:20:41 +01:00
f6c92c686b docs: update changelog for version 1.3.37
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 2m46s
2025-02-22 11:13:40 +01:00
b8db01529b docs: update webpages for version v1.3.37 2025-02-22 11:13:40 +01:00
55db6d76ab workflow: update ESP32-WROOM image header for SPIFFS binary creation 2025-02-22 11:13:07 +01:00
a18749a1ff docs: update changelog for version 1.3.36
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 2m40s
2025-02-22 10:54:13 +01:00
1811fd9159 docs: update webpages for version v1.3.36 2025-02-22 10:54:13 +01:00
b550760427 partition: update SPIFFS binary header and offsets in workflow files 2025-02-22 10:53:50 +01:00
c5033acadc docs: update changelog for version 1.3.35
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 2m50s
2025-02-22 10:48:53 +01:00
7de4189c83 docs: update webpages for version v1.3.35 2025-02-22 10:48:53 +01:00
f43f2a15b2 partition: update SPIFFS binary header and offsets in workflow files 2025-02-22 10:48:44 +01:00
858192c6cb docs: update changelog for version 1.3.34
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 2m46s
2025-02-22 10:40:03 +01:00
e2bd39922d docs: update webpages for version v1.3.34 2025-02-22 10:40:03 +01:00
c86cc7173e partition: update SPIFFS binary creation and offsets in workflow files 2025-02-22 10:38:34 +01:00
16362e66a3 docs: update changelog for version 1.3.33
All checks were successful
Release Workflow / detect-provider (push) Successful in 5s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m46s
2025-02-22 10:09:03 +01:00
48d9ba8f71 docs: update webpages for version v1.3.33 2025-02-22 10:09:03 +01:00
e2bea5a0c3 partition: update spiffs offset and app sizes in partition files 2025-02-22 10:08:47 +01:00
3e11f65188 partition: update spiffs offset in partition files 2025-02-22 10:06:43 +01:00
df59c42c8a partition: update app sizes and offsets in partitions.csv 2025-02-22 10:04:11 +01:00
abe1d7c930 docs: update changelog for version 1.3.32
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 2m31s
2025-02-22 09:52:44 +01:00
ca614c3cc4 docs: update webpages for version v1.3.32 2025-02-22 09:52:44 +01:00
5153374093 workflow: update magic byte for SPIFFS binary creation 2025-02-22 09:52:39 +01:00
66db4d7a85 docs: update changelog for version 1.3.31
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 2m58s
2025-02-22 09:47:27 +01:00
90e71922b1 docs: update webpages for version v1.3.31 2025-02-22 09:47:27 +01:00
e8e5c0bd3d workflow: remove unnecessary data and SPIFFS change checks from release workflows 2025-02-22 09:47:15 +01:00
7e53e1ccb0 docs: update changelog for version 1.3.30
Some checks failed
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m46s
2025-02-22 09:38:14 +01:00
e49e812b13 docs: update webpages for version v1.3.30 2025-02-22 09:38:14 +01:00
b1e0fcfadf workflow: update Gitea and GitHub release workflows to create SPIFFS binary with magic byte 2025-02-22 09:37:59 +01:00
31ef3ac8df docs: update changelog for version 1.3.29
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 2m45s
2025-02-21 23:44:36 +01:00
8cf3f87c89 docs: update webpages for version v1.3.29 2025-02-21 23:44:35 +01:00
c446188311 workflow: update Gitea release workflow to create release before file uploads 2025-02-21 23:44:30 +01:00
8e2a8d597d docs: update changelog for version 1.3.28
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 3m25s
2025-02-21 23:37:15 +01:00
7d3b1c34f6 docs: update webpages for version v1.3.28 2025-02-21 23:37:15 +01:00
b95c61118b workflow: update Gitea release workflow to use file uploads with curl 2025-02-21 23:37:12 +01:00
0dfb158959 docs: update changelog for version 1.3.27
Some checks failed
Release Workflow / detect-provider (push) Successful in 7s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m29s
2025-02-21 23:23:19 +01:00
75c774bb24 docs: update webpages for version v1.3.27 2025-02-21 23:23:19 +01:00
cf80adb43c workflow: add GITEA_TOKEN secret for Gitea API access in release workflows 2025-02-21 23:23:16 +01:00
36d50cbe7f docs: update changelog for version 1.3.26
Some checks failed
Release Workflow / detect-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m51s
2025-02-21 23:14:34 +01:00
9148d207c7 docs: update webpages for version v1.3.26 2025-02-21 23:14:34 +01:00
5f6fef9448 workflow: improve Gitea release workflow with enhanced error handling and debug outputs 2025-02-21 23:14:30 +01:00
946202de0e docs: update changelog for version 1.3.25
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 2m33s
2025-02-21 23:07:41 +01:00
41a3717347 docs: update webpages for version v1.3.25 2025-02-21 23:07:41 +01:00
255c820439 workflow: update Gitea release workflow to include RUNNER_NAME and improve error handling 2025-02-21 23:07:38 +01:00
aef3ba77ba docs: update changelog for version 1.3.24
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 2m33s
2025-02-21 22:59:00 +01:00
2592c3a497 docs: update webpages for version v1.3.24 2025-02-21 22:59:00 +01:00
a48c5dfef0 workflow: rename update files to upgrade in GitHub release workflow 2025-02-21 22:58:54 +01:00
00554d0b09 workflow: aktualisiere bestehende Einträge im Changelog für vorhandene Versionen 2025-02-21 22:58:38 +01:00
05a91cd8d8 workflow: improve Gitea release process with dynamic URL determination and debug outputs 2025-02-21 22:58:24 +01:00
7cf113eaff docs: update changelog for version 1.3.23
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 2m57s
2025-02-21 22:48:04 +01:00
44d27adab2 docs: update webpages for version v1.3.23 2025-02-21 22:48:04 +01:00
e0a2dff5fe workflow: enhance Gitea release process with debug outputs and API connection checks 2025-02-21 22:47:30 +01:00
519a089684 docs: update changelog for version 1.3.22
Some checks failed
Release Workflow / detect-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m27s
2025-02-21 22:39:28 +01:00
ef053bb2b6 docs: update webpages for version v1.3.22 2025-02-21 22:39:28 +01:00
0a91c7b269 workflow: improve Gitea release process with additional environment variables and error handling 2025-02-21 22:39:24 +01:00
875d9d2b70 docs: update changelog for version 1.3.21
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 2m53s
2025-02-21 22:34:28 +01:00
52840b9b0b docs: update webpages for version v1.3.21 2025-02-21 22:34:28 +01:00
da1fc7678f workflow: enhance Gitea release process with API integration and token management 2025-02-21 22:34:18 +01:00
982bb5aa21 docs: update changelog for version 1.3.20
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 2m44s
2025-02-21 22:22:10 +01:00
007737db13 docs: update webpages for version v1.3.20 2025-02-21 22:22:10 +01:00
17e5949201 workflow: enable git tagging and pushing for Gitea releases 2025-02-21 22:22:06 +01:00
6a57186091 docs: update changelog for version 1.3.19
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 2m42s
2025-02-21 22:17:32 +01:00
babd3f47a0 docs: update webpages for version v1.3.19 2025-02-21 22:17:32 +01:00
5372fe10fe workflow: enable git push for version tagging in Gitea release 2025-02-21 22:17:22 +01:00
e0c9d90892 docs: update changelog for version 1.3.18
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 2m49s
2025-02-21 22:11:13 +01:00
e5f5d1961b docs: update webpages for version v1.3.18 2025-02-21 22:11:13 +01:00
31a960fb9e docs: add note about filaman_full.bin installation in changelog 2025-02-21 22:11:07 +01:00
3c2e75b77a docs: update changelog for version 1.3.18 and enhance update script for existing entries 2025-02-21 22:10:32 +01:00
367143c456 docs: update changelog for version 1.3.17
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 2m39s
2025-02-21 21:54:28 +01:00
fbde4b764f docs: update webpages for version v1.3.17 2025-02-21 21:54:28 +01:00
e57f4216d4 ci: comment out git tag and push commands in gitea-release workflow 2025-02-21 21:54:24 +01:00
b8beb992d6 config: update platformio.ini for version 1.3.16
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 2m32s
2025-02-21 21:49:48 +01:00
4234b2254e docs: update changelog for version 1.3.16 2025-02-21 21:44:40 +01:00
b8faf79163 docs: update webpages for version v1.3.16 2025-02-21 21:44:40 +01:00
d35afaff46 ci: update filenames for firmware and website binaries in release workflows 2025-02-21 21:44:33 +01:00
a8a00372b5 docs: update changelog for version 1.3.15 2025-02-21 21:34:36 +01:00
72f4eab588 docs: update webpages for version v1.3.15 2025-02-21 21:34:36 +01:00
afa4eddc00 ci: fix missing 'fi' in GitHub release workflow script 2025-02-21 21:34:32 +01:00
b0888e7e63 docs: update changelog for version 1.3.14
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 2m32s
2025-02-21 21:25:29 +01:00
238a84a8a2 docs: update webpages for version v1.3.14 2025-02-21 21:25:29 +01:00
59cc00ca13 ci: update GitHub release workflow to improve file upload handling 2025-02-21 21:25:16 +01:00
ab083f5f57 docs: update changelog for version 1.3.13
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 2m39s
2025-02-21 21:17:06 +01:00
c111573206 docs: update webpages for version v1.3.13 2025-02-21 21:17:06 +01:00
52b2494e52 ci: update GitHub release workflow to use RELEASE_TOKEN for improved security 2025-02-21 21:17:02 +01:00
069ec2d7a1 docs: update changelog for version 1.3.12
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 2m45s
2025-02-21 21:13:40 +01:00
94e35ae86e docs: update webpages for version v1.3.12 2025-02-21 21:13:40 +01:00
d71e3d8184 ci: enhance GitHub release workflow with token handling and file upload improvements 2025-02-21 21:13:36 +01:00
bb166aa29f docs: update changelog for version 1.3.11
Some checks failed
Release Workflow / detect-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m55s
2025-02-21 21:07:19 +01:00
0d718023f8 docs: update webpages for version v1.3.11 2025-02-21 21:07:19 +01:00
b16781043f ci: refactor Gitea release workflow by simplifying input handling and removing unnecessary checks 2025-02-21 21:07:15 +01:00
dff184ff25 docs: update changelog for version 1.3.10
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m40s
2025-02-21 21:03:56 +01:00
0ce281221d docs: update webpages for version v1.3.10 2025-02-21 21:03:56 +01:00
bc26c160e8 ci: simplify GitHub release workflow by removing provider verification step 2025-02-21 21:03:52 +01:00
c25f41db75 docs: update changelog for version 1.3.9
All checks were successful
Release Workflow / route (push) Successful in 16s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m51s
2025-02-21 21:00:21 +01:00
e107c17f50 docs: update webpages for version v1.3.9 2025-02-21 21:00:21 +01:00
85b9d03ebd ci: comment out permissions for GitHub release workflow 2025-02-21 20:59:37 +01:00
17b188626a docs: update changelog for version 1.3.8
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m35s
2025-02-21 20:56:07 +01:00
a534c5f872 docs: update webpages for version v1.3.8 2025-02-21 20:56:07 +01:00
93f7582790 feat: add Gitea and GitHub release workflows 2025-02-21 20:56:02 +01:00
46acc63756 docs: update changelog for version 1.3.7
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been cancelled
2025-02-21 20:54:16 +01:00
67a9e1bdce docs: update webpages for version v1.3.7 2025-02-21 20:54:16 +01:00
2b75b64b4a feat: add GitHub and Gitea release workflows 2025-02-21 20:54:11 +01:00
8d003295e7 docs: update changelog for version 1.3.6
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m46s
2025-02-21 20:45:33 +01:00
f89500946a docs: update webpages for version v1.3.6 2025-02-21 20:45:33 +01:00
14e745ff06 fix: update GitHub token reference and correct file path in release workflow 2025-02-21 20:45:25 +01:00
d058397fa2 docs: update changelog for version 1.3.5
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m24s
2025-02-21 20:22:03 +01:00
622f5403a7 docs: update webpages for version v1.3.5 2025-02-21 20:22:03 +01:00
92b78a86dd feat: enhance release workflow to support Gitea alongside GitHub 2025-02-21 20:21:57 +01:00
ec399390e8 docs: update changelog for version 1.3.4
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m22s
2025-02-21 20:04:05 +01:00
909c4e9b5e docs: update webpages for version v1.3.4 2025-02-21 20:04:05 +01:00
f4b20bfffd Merge branch 'old' 2025-02-21 20:03:45 +01:00
78464215a9 feat: add Gitea and GitHub release workflows 2025-02-21 20:03:21 +01:00
4365f0463a docs: update changelog for version 1.3.3
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m42s
2025-02-21 19:48:48 +01:00
727bc0e760 docs: update webpages for version v1.3.3 2025-02-21 19:48:48 +01:00
04604013eb fix: correct directory path in GitHub workflows for SPIFFS binary 2025-02-21 19:48:45 +01:00
cf5fc5f6f1 docs: update changelog for version 1.3.2
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m35s
2025-02-21 19:33:26 +01:00
945a4ccce6 docs: update webpages for version v1.3.2 2025-02-21 19:33:26 +01:00
7cf9e2d145 fix: add missing conditional exit in release workflow 2025-02-21 19:33:24 +01:00
9db4e338ea docs: update changelog for version 1.3.1
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Failing after 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been skipped
2025-02-21 19:10:52 +01:00
dea6ca2c66 docs: update webpages for version v1.3.1 2025-02-21 19:10:52 +01:00
e224e72e41 feat: enhance GitHub and Gitea release workflows with Python setup and binary preparation 2025-02-21 19:10:48 +01:00
306c517da7 docs: update changelog for version 1.3.0
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m40s
2025-02-21 18:58:35 +01:00
0337bbabe0 bump version to 1.3.0 in platformio.ini 2025-02-21 18:58:32 +01:00
bde14e50e0 docs: update changelog for version 1.2.102
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m1s
2025-02-21 18:28:20 +01:00
9c656a9bd0 docs: update webpages for version v1.2.102 2025-02-21 18:28:20 +01:00
eae552017d fix: adjust bootloader offset in binary merge for Gitea and GitHub workflows 2025-02-21 18:28:16 +01:00
a77918da41 docs: update changelog for version 1.2.101
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m38s
2025-02-21 18:07:47 +01:00
262dad38a6 docs: update webpages for version v1.2.101 2025-02-21 18:07:46 +01:00
cfc9f103cf refactor: always create SPIFFS binary in release workflows 2025-02-21 18:07:43 +01:00
0117302672 refactor: migrate calibration value storage from EEPROM to NVS 2025-02-21 18:04:05 +01:00
1de283b62f docs: update changelog for version 1.2.100
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m41s
2025-02-21 17:49:32 +01:00
f1eb78eb38 docs: update webpages for version v1.2.100 2025-02-21 17:49:32 +01:00
8a65b86475 refactor: remove OTA handling and JSON backup/restore functions 2025-02-21 17:47:25 +01:00
a3aef819c8 docs: update changelog for version 1.2.99
Some checks failed
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been cancelled
2025-02-21 17:42:40 +01:00
a62b5ec933 docs: update webpages for version v1.2.99 2025-02-21 17:42:40 +01:00
1a8cf7a58f docs: add SPIFFS change detection and binary copying to release workflows 2025-02-21 17:42:04 +01:00
b0b3d41c84 docs: add backup and restore functions for JSON configurations during OTA updates 2025-02-21 17:38:20 +01:00
38b68aecfc docs: update JSON field type checks from JsonObject to String for improved validation 2025-02-21 17:11:48 +01:00
4992f5f433 docs: update JSON handling in API and Bambu modules for improved object management 2025-02-21 16:53:45 +01:00
5cbbe1d231 docs: update platformio.ini dependencies and improve version handling in website.cpp 2025-02-21 16:35:19 +01:00
9b29460d64 docs: update Cache-Control header to reflect a 1-week duration 2025-02-21 15:15:01 +01:00
dd14d475b7 docs: remove version definition from website.cpp 2025-02-21 15:14:36 +01:00
9e6cd3b451 docs: optimize WiFi and WebSocket settings; enhance TCP/IP stack configuration 2025-02-21 15:07:16 +01:00
c1be6ca582 docs: update upgrade page title and heading; adjust cache control duration 2025-02-21 14:35:12 +01:00
265ff0c787 docs: update changelog for version 1.2.98
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m28s
2025-02-21 13:52:27 +01:00
67eca82ac5 docs: update webpages for version v1.2.98 2025-02-21 13:52:27 +01:00
568db90db0 docs: update changelog for version 1.2.97
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m37s
2025-02-21 12:34:25 +01:00
2dfd53d64a docs: update webpages for version v1.2.97 2025-02-21 12:34:25 +01:00
262a2fcbd4 refactor: streamline Gitea and GitHub release workflows to check for data changes and update binary handling 2025-02-21 12:34:20 +01:00
3770de15d3 docs: update changelog for version 1.2.96
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m45s
2025-02-21 12:09:40 +01:00
75a74ec9bd docs: update webpages for version v1.2.96 2025-02-21 12:09:40 +01:00
979adcbb14 feat: add SPIFFS build step to Gitea and GitHub release workflows 2025-02-21 12:09:36 +01:00
2dd563a178 Merge branch 'temp-branch'
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m3s
2025-02-21 12:03:12 +01:00
767c217c25 docs: update changelog for version 1.2.95 2025-02-21 11:58:00 +01:00
c07689e15a docs: update webpages for version v1.2.95 2025-02-21 11:58:00 +01:00
d6ca69fd19 chore: bump version to 1.2.94 in platformio.ini 2025-02-21 11:57:57 +01:00
60553255b8 feat: enhance update process with separate forms for firmware and webpage uploads, including validation and improved UI 2025-02-21 11:57:19 +01:00
8199b283c0 feat: add API endpoint for version retrieval and update HTML to display dynamic version 2025-02-21 11:53:59 +01:00
d774ce0d09 docs: update changelog for version 1.2.94
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m56s
2025-02-21 10:46:05 +01:00
4a44eda5c4 docs: update webpages for version v1.2.94 2025-02-21 10:46:05 +01:00
c43ca20d8d refactor: remove unused flash size parameters in release workflows 2025-02-21 10:46:00 +01:00
21ba35cd19 docs: update changelog for version 1.2.93
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m47s
2025-02-21 10:35:58 +01:00
62273320e9 docs: update webpages for version v1.2.93 2025-02-21 10:35:58 +01:00
b8e4af4e4d refactor: update SPIFFS initialization and partition sizes; enhance WiFi setup 2025-02-21 10:35:52 +01:00
513d74fdb0 docs: update changelog for version 1.2.92
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m43s
2025-02-21 09:25:00 +01:00
df884e7668 docs: update webpages for version v1.2.92 2025-02-21 09:25:00 +01:00
8182b5f684 feat: enhance OTA upload handling with chunk validation and timeout checks 2025-02-21 09:24:54 +01:00
4477537cec docs: update changelog for version 1.2.91
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m57s
2025-02-20 20:40:20 +01:00
44ba7df34f docs: update webpages for version v1.2.91 2025-02-20 20:40:20 +01:00
54744a06dd fix: add file existence checks before uploading binaries in release workflows 2025-02-20 20:40:14 +01:00
cefa81030b docs: update changelog for version 1.2.90
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m48s
2025-02-20 20:33:25 +01:00
62052927d2 docs: update webpages for version v1.2.90 2025-02-20 20:33:25 +01:00
933a84f8ce refactor: update Gitea and GitHub release workflows to include SPIFFS directory creation and firmware copying 2025-02-20 20:33:19 +01:00
db3c19ff2e docs: update changelog for version 1.2.89
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m46s
2025-02-20 20:20:09 +01:00
ae9eb4cc6b docs: update webpages for version v1.2.89 2025-02-20 20:20:09 +01:00
89d40832c5 refactor: enhance OTA update process with SPIFFS support and improved error handling 2025-02-20 20:19:24 +01:00
c161216c04 docs: update changelog for version 1.2.88
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m42s
2025-02-20 20:05:38 +01:00
6a016b6ac4 docs: update webpages for version v1.2.88 2025-02-20 20:05:38 +01:00
44dd485e17 fix: improve OTA update handling and logging for better error reporting 2025-02-20 20:04:58 +01:00
d41f0f3e67 docs: update changelog for version 1.2.87
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m30s
2025-02-20 19:52:44 +01:00
484058515e docs: update webpages for version v1.2.87 2025-02-20 19:52:44 +01:00
f552b492cf fix: update firmware build process and remove unused OTA environment 2025-02-20 19:52:34 +01:00
c3040b3c29 docs: update changelog for version 1.2.86
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m36s
2025-02-20 19:09:35 +01:00
d7ba67085d docs: update webpages for version v1.2.86 2025-02-20 19:09:35 +01:00
48efb9e21a fix: update SPIFFS offset and size in release workflows and partitions.csv 2025-02-20 19:09:28 +01:00
e983ba6e44 docs: update changelog for version 1.2.85
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m48s
2025-02-20 18:37:57 +01:00
37171d6eca docs: update webpages for version v1.2.85 2025-02-20 18:37:57 +01:00
ebb08a7a66 ci: streamline release workflows by removing unnecessary binary uploads and adding SPIFFS formatting 2025-02-20 18:37:51 +01:00
b5330af351 docs: update changelog for version 1.2.84
All checks were successful
Release Workflow / route (push) Successful in 10s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m41s
2025-02-20 18:04:06 +01:00
4919d34484 docs: update webpages for version v1.2.84 2025-02-20 18:04:06 +01:00
2da641d604 ci: update installation steps for xxd to include package list update 2025-02-20 18:04:00 +01:00
ce413965c7 docs: update changelog for version 1.2.83
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 25s
2025-02-20 18:01:22 +01:00
3fafed930e docs: update webpages for version v1.2.83 2025-02-20 18:01:22 +01:00
e1c604ee8d refactor: replace hexdump with xxd for magic byte verification in release workflows 2025-02-20 18:01:16 +01:00
11bbfb7db6 docs: update changelog for version 1.2.82
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m27s
2025-02-20 17:53:00 +01:00
71d8f7ec5a docs: update webpages for version v1.2.82 2025-02-20 17:53:00 +01:00
f4518e4a36 refactor: enhance Gitea and GitHub release workflows to include magic byte handling and improve binary verification 2025-02-20 17:52:18 +01:00
62d9596d08 docs: update changelog for version 1.2.81
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m42s
2025-02-20 17:11:28 +01:00
e27e95d291 docs: update webpages for version v1.2.81 2025-02-20 17:11:28 +01:00
b7651ad50d refactor: update Gitea and GitHub release workflows to use esp32dev_ota for building and uploading firmware and SPIFFS binaries 2025-02-20 17:11:22 +01:00
f1937e2977 docs: update changelog for version 1.2.80
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m37s
2025-02-20 17:05:53 +01:00
ad5ddf713c docs: update webpages for version v1.2.80 2025-02-20 17:05:52 +01:00
ccb494f843 bump version to 1.2.79 in platformio.ini 2025-02-20 17:05:47 +01:00
17307d8f03 refactor: update Gitea and GitHub release workflows to include new firmware and SPIFFS binaries; fix version display in HTML files to v1.2.78 2025-02-20 17:04:56 +01:00
e5240a9572 docs: update changelog for version 1.2.79
All checks were successful
Release Workflow / route (push) Successful in 12s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m45s
2025-02-20 16:25:02 +01:00
06ebf105cf docs: update webpages for version v1.2.79 2025-02-20 16:25:02 +01:00
118e099fc5 refactor: simplify Gitea release workflow by using esptool for binary creation 2025-02-20 16:24:57 +01:00
8edd50f786 docs: update changelog for version 1.2.78
Some checks failed
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m44s
2025-02-20 16:15:59 +01:00
b85325a747 docs: update webpages for version v1.2.78 2025-02-20 16:15:59 +01:00
e1e0352beb refactor: streamline Gitea release workflow and update version to 1.2.77 2025-02-20 16:15:48 +01:00
8a93cccfce refactor: update Gitea and GitHub release workflows to improve binary preparation and verification
fix: correct version number in HTML files and platformio.ini to v1.2.76
enhance: streamline OTA update handling by removing unnecessary magic byte checks
2025-02-20 16:14:49 +01:00
c374069f36 docs: update changelog for version 1.2.77
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m33s
2025-02-20 15:53:26 +01:00
59cd7c177d refactor: optimize Gitea release workflow by simplifying build steps and improving file handling 2025-02-20 15:53:22 +01:00
45088b5838 docs: update webpages for version v1.2.77 2025-02-20 15:53:07 +01:00
1b9c79b559 docs: update changelog for version 1.2.76
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m48s
2025-02-20 15:42:44 +01:00
37e1e861d3 docs: update webpages for version v1.2.76 2025-02-20 15:42:44 +01:00
cce39319d9 refactor: streamline Gitea release workflow and remove obsolete OTA data initialization script 2025-02-20 15:41:14 +01:00
6391054c23 feat: enhance OTA update process with improved file verification and new OTA data initialization 2025-02-20 15:07:13 +01:00
52cf46d7f8 docs: update changelog for version 1.2.75
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m57s
2025-02-20 14:57:17 +01:00
84b05e48ce docs: update webpages for version v1.2.75 2025-02-20 14:57:16 +01:00
5c41d864c1 refactor: simplify OTA update handling by removing unnecessary variables and improving error reporting 2025-02-20 14:56:31 +01:00
5dc3563da6 docs: update changelog for version 1.2.74
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m17s
2025-02-20 14:46:12 +01:00
9e1b2943d6 docs: update webpages for version v1.2.74 2025-02-20 14:46:12 +01:00
7b89b04621 refactor: enhance OTA update process with improved handling of full image updates and SPIFFS data 2025-02-20 14:45:34 +01:00
e140f8e003 docs: update changelog for version 1.2.73
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m14s
2025-02-20 14:31:44 +01:00
3d0bdde476 docs: update webpages for version v1.2.73 2025-02-20 14:31:44 +01:00
3ac7d6b4f7 refactor: improve OTA update process with enhanced size checks and progress logging 2025-02-20 14:31:10 +01:00
5f52775984 refactor: enhance OTA update process with improved size checks and debugging output 2025-02-20 14:28:11 +01:00
463eaf4b6f docs: update changelog for version 1.2.72
All checks were successful
Release Workflow / route (push) Successful in 13s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m16s
2025-02-20 14:17:34 +01:00
4bf6b11d3a docs: update webpages for version v1.2.72 2025-02-20 14:17:34 +01:00
b0c4af7c4e refactor: simplify OTA update process by removing unnecessary buffer and adjusting offsets 2025-02-20 14:16:49 +01:00
249e896ea4 docs: update changelog for version 1.2.71
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been cancelled
2025-02-20 14:09:21 +01:00
c74f587fff docs: update webpages for version v1.2.71 2025-02-20 14:09:21 +01:00
7a7ee72585 fix: update version number to v1.2.65 in HTML files and platformio.ini; add script to create full binary 2025-02-20 14:08:17 +01:00
3dd5fbc585 docs: update changelog for version 1.2.70
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m23s
2025-02-20 12:01:08 +01:00
ed9c1487ed docs: update webpages for version v1.2.70 2025-02-20 12:01:08 +01:00
d8756421a1 fix: add logging to stopAllTasks for better debugging 2025-02-20 12:00:45 +01:00
d92c78f9d0 docs: update changelog for version 1.2.69
All checks were successful
Release Workflow / route (push) Successful in 11s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m21s
2025-02-20 11:54:38 +01:00
2d19ea745f docs: update webpages for version v1.2.69 2025-02-20 11:54:37 +01:00
13779cc9d7 docs: update changelog for version 1.2.68
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been cancelled
2025-02-20 11:53:15 +01:00
b6d5a8a00b docs: update webpages for version v1.2.68 2025-02-20 11:53:15 +01:00
f6319e79f0 fix: update stopAllTasks to suspend RfidReaderTask instead of NfcTask 2025-02-20 11:53:04 +01:00
6f24630a7d feat: add task handles for BambuMqttTask and ScaleTask; rename stopTasks to stopAllTasks 2025-02-20 11:52:36 +01:00
4475d21218 docs: update changelog for version 1.2.67
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m6s
2025-02-20 11:42:41 +01:00
01a926a38d feat: improve OTA upload handling and add SPIFFS update support 2025-02-20 11:42:36 +01:00
6b966c02b3 docs: update webpages for version v1.2.67 2025-02-20 11:42:25 +01:00
1450e1ad2e docs: update changelog for version 1.2.66
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m5s
2025-02-20 11:27:18 +01:00
3102a6c217 docs: update webpages for version v1.2.66 2025-02-20 11:27:18 +01:00
d5b2b2746d feat: enhance OTA upload to support SPIFFS updates 2025-02-20 11:27:11 +01:00
7e776d4816 docs: update changelog for version 1.2.65
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 5s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m8s
2025-02-20 11:16:54 +01:00
e84b2973c5 docs: update webpages for version v1.2.65 2025-02-20 11:16:53 +01:00
5793dc1a1f docs: update changelog for version 1.2.64
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been cancelled
2025-02-20 11:13:56 +01:00
1732491c48 docs: update webpages for version v1.2.64 2025-02-20 11:13:56 +01:00
0500bb6951 fix: improve error handling in OTA upload process 2025-02-20 11:13:49 +01:00
ef9ef7257a docs: update changelog for version 1.2.63
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m10s
2025-02-20 10:59:17 +01:00
e86fd229dc docs: update webpages for version v1.2.63 2025-02-20 10:59:17 +01:00
b940a166da feat: update version to 1.2.63 2025-02-20 10:59:10 +01:00
c857e16de2 feat: enhance OTA upload handling with magic byte checks for image types
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m4s
2025-02-20 10:53:23 +01:00
8b2a537b72 docs: update changelog for version 1.2.62
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m6s
2025-02-20 10:29:08 +01:00
88ec151c4c docs: update webpages for version 1.2.62 2025-02-20 10:29:08 +01:00
0a203f02eb feat: update version to 1.2.62 2025-02-20 10:29:04 +01:00
04b59f4809 docs: update changelog for version 1.2.61
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m9s
2025-02-20 10:06:15 +01:00
b31861af67 docs: update webpages for version 1.2.61 2025-02-20 10:06:15 +01:00
ce3b423dc1 feat: update version to 1.2.61 and enhance OTA update error handling 2025-02-20 10:06:06 +01:00
05f275142f docs: update changelog for version 1.2.60
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m11s
2025-02-20 01:28:56 +01:00
72af54bd20 docs: update webpages for version 1.2.60 2025-02-20 01:28:56 +01:00
a1e30a3b7f feat: update version to 1.2.60 in platformio configuration 2025-02-20 01:28:45 +01:00
8f8322e629 docs: update changelog for version 1.2.59
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m10s
2025-02-20 01:08:56 +01:00
1e386c49af docs: update webpages for version 1.2.59 2025-02-20 01:08:56 +01:00
3070d75d07 feat: update version to 1.2.59 and enhance OTA upload handling 2025-02-20 01:08:48 +01:00
34ee9badea docs: update changelog for version 1.2.58
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m16s
2025-02-20 00:50:53 +01:00
6594af9540 feat: update version to 1.2.58 in HTML files and platformio configuration 2025-02-20 00:50:48 +01:00
c21bd2d4ec docs: update changelog for version 1.2.57
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m15s
2025-02-20 00:33:35 +01:00
e5f895b560 feat: update version to 1.2.57 in platformio configuration 2025-02-20 00:33:31 +01:00
bb0f50ce1d fix: update spiffs offset and sizes in firmware and partitions configuration 2025-02-20 00:33:16 +01:00
499a08aa75 docs: update changelog for version 1.2.56
Some checks failed
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m50s
2025-02-19 22:06:56 +01:00
745d960f62 feat: update version to 1.2.56 and adjust firmware and partition settings 2025-02-19 22:06:47 +01:00
531d0fe9a2 refactor: remove redundant comment from Gitea release workflow 2025-02-19 21:45:26 +01:00
2af23e8084 docs: update changelog for version 1.2.55
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m8s
2025-02-19 21:25:23 +01:00
cd204fdaa8 feat: update version to 1.2.55 and adjust Gitea release workflow to remove 'v' prefix from version 2025-02-19 21:24:38 +01:00
d04ad42b5b docs: update changelog for version 1.2.54
Some checks failed
Release Workflow / route (push) Successful in 10s
Release Workflow / verify-provider (push) Successful in 6s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m38s
2025-02-19 21:03:22 +01:00
8d80a8fb5a feat: update version to 1.2.54 and add check for missing changelog in Gitea release workflow 2025-02-19 21:03:17 +01:00
77032bf9ae docs: update changelog for version 1.2.53
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m56s
2025-02-19 20:54:26 +01:00
3967366ae6 feat: update version to 1.2.53 and enhance Gitea release workflow to handle missing changelog 2025-02-19 20:54:20 +01:00
cd391378c2 docs: update changelog for version 1.2.52
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m59s
2025-02-19 20:36:45 +01:00
3fc3a689cb feat: update version to 1.2.52 and improve Gitea release workflow output handling 2025-02-19 20:35:33 +01:00
bd5b32a3b0 docs: update changelog for version 1.2.51
All checks were successful
Release Workflow / route (push) Successful in 9s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m14s
2025-02-19 20:14:54 +01:00
a5c999234c feat: update version to 1.2.51 and add debug output in Gitea release workflow 2025-02-19 20:14:43 +01:00
f64d3e51ce docs: update changelog for version 1.2.50
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m30s
2025-02-19 20:06:08 +01:00
a650b7d860 feat: update version to 1.2.50 and remove obsolete build workflow 2025-02-19 20:05:56 +01:00
14e98072aa docs: update changelog for version 1.2.49
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m0s
2025-02-19 18:24:09 +01:00
0bc4c0565f feat: update version to 1.2.49 and modify changelog reading in Gitea release workflow 2025-02-19 18:24:05 +01:00
4aa8e844ac docs: update changelog for version 1.2.48
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m16s
2025-02-19 18:03:35 +01:00
d7135fddc8 feat: update version to 1.2.48 and modify changelog reading in release workflows 2025-02-19 18:03:31 +01:00
6e3e978839 docs: update changelog for version 1.2.47
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m9s
2025-02-19 17:54:06 +01:00
33b0e79c18 feat: update version to 1.2.47 and modify changelog reading in GitHub release workflow 2025-02-19 17:53:54 +01:00
787d878e83 docs: update changelog for version 1.2.46
All checks were successful
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m5s
2025-02-19 15:09:00 +01:00
1e24179b82 feat: update Gitea release workflow to include changelog and increment version to 1.2.46 2025-02-19 15:08:56 +01:00
67027840f4 docs: update changelog for version 1.2.45
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 3m14s
2025-02-19 14:11:47 +01:00
2755e9c863 feat: update Gitea release workflow to use dynamic upload URL and increment version to 1.2.45 2025-02-19 14:11:44 +01:00
7ae26fb0a9 docs: update changelog for version 1.2.44
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m9s
2025-02-19 12:57:19 +01:00
98bcf98f1e feat: update Gitea release workflow to include additional outputs and increment version to 1.2.44 2025-02-19 12:57:15 +01:00
bc8ac32fee docs: update changelog for version 1.2.43
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m7s
2025-02-19 12:50:18 +01:00
ba74eca21d feat: update Gitea release workflow by removing unnecessary outputs and increment version to 1.2.43 2025-02-19 12:50:16 +01:00
d4e1cf1322 docs: update changelog for version 1.2.42
Some checks failed
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m48s
2025-02-19 12:44:09 +01:00
5170784e44 feat: update Gitea release workflow to include additional outputs and increment version to 1.2.42 2025-02-19 12:44:07 +01:00
ac323167d0 docs: update changelog for version 1.2.41
Some checks failed
Release Workflow / route (push) Successful in 8s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m4s
2025-02-19 12:20:02 +01:00
003de5bc00 feat: update Gitea release workflow debug output and increment version to 1.2.41 2025-02-19 12:20:00 +01:00
83595cfadf docs: update changelog for version 1.2.40
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m4s
2025-02-19 12:09:15 +01:00
cfe21d63d7 feat: add inputs for Gitea release workflow and increment version to 1.2.40 2025-02-19 12:09:12 +01:00
63e72076ed docs: update changelog for version 1.2.39
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 3m12s
2025-02-19 12:02:04 +01:00
2a011ee244 feat: update Gitea release workflow to use Python virtual environment and increment version to 1.2.39 2025-02-19 12:02:01 +01:00
84dd2bd40b docs: update changelog for version 1.2.38
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 18s
2025-02-19 11:58:29 +01:00
1449cacc0e feat: update Gitea release workflow and increment version to 1.2.38 2025-02-19 11:58:26 +01:00
f1c2b2eb87 docs: update changelog for version 1.2.37
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 10s
2025-02-19 11:46:19 +01:00
0f1a3b1d5b feat: update Gitea release workflow and increment version to 1.2.37 2025-02-19 11:46:17 +01:00
6190cf04db docs: update changelog for version 1.2.36
Some checks failed
Release Workflow / route (push) Successful in 12s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 45s
2025-02-19 11:38:39 +01:00
680aed0e10 feat: update Gitea release workflow and increment version to 1.2.36 2025-02-19 11:38:37 +01:00
fadb122d28 docs: update changelog for version 1.2.35
Some checks failed
Release Workflow / route (push) Successful in 20s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 18s
2025-02-19 11:18:07 +01:00
4347f89c16 feat: update Gitea release workflow and version to 1.2.35 2025-02-19 11:18:05 +01:00
9856757e49 docs: update changelog for version 1.2.34
All checks were successful
Release Workflow / route (push) Successful in 12s
Release Workflow / verify-provider (push) Successful in 4s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been skipped
2025-02-19 11:01:57 +01:00
afb7b5f42b feat: update version to 1.2.34 and enhance Gitea and GitHub release workflows 2025-02-19 11:01:54 +01:00
ba8506247b docs: update changelog for version 1.2.33
All checks were successful
Release Workflow / route (push) Successful in 12s
Release Workflow / verify-provider (push) Successful in 8s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been skipped
2025-02-19 11:00:03 +01:00
61f3f90d6d feat: update version to 1.2.33 and refactor release workflows for Gitea and GitHub 2025-02-19 11:00:01 +01:00
a143527dd0 docs: update changelog for version 1.2.32
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m24s
2025-02-19 10:58:53 +01:00
f2c9818e61 feat: update version to 1.2.32 and adjust workflow dependencies for GitHub and Gitea releases 2025-02-19 10:58:51 +01:00
9e23af29ff docs: update changelog for version 1.2.31
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been skipped
2025-02-19 10:58:06 +01:00
095885442a feat: update version to 1.2.31 2025-02-19 10:58:04 +01:00
359c9b5a6d docs: update changelog for version 1.2.30
All checks were successful
Release Workflow / route (push) Successful in 6s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Has been skipped
2025-02-19 10:50:09 +01:00
b16a7a4c17 feat: update version to 1.2.30 and enhance release workflows for Gitea and GitHub with improved artifact handling and changelog integration 2025-02-19 10:50:06 +01:00
b4ea175757 docs: update changelog for version 1.2.29
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m26s
2025-02-19 10:37:44 +01:00
ca4671a7dd feat: update version to 1.2.29 and enhance Gitea release workflow with improved error handling and debugging 2025-02-19 10:37:41 +01:00
7a4b1a934f docs: update changelog for version 1.2.28
All checks were successful
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 3s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Successful in 2m42s
2025-02-19 10:24:47 +01:00
77d90bbe83 feat: add build and release workflows for Gitea and GitHub, increment version to 1.2.28 2025-02-19 10:24:43 +01:00
c99d802184 docs: update changelog for version 1.2.27
Some checks failed
Release Workflow / route (push) Successful in 7s
Release Workflow / verify-provider (push) Successful in 2s
Release Workflow / github-release (push) Has been skipped
Release Workflow / gitea-release (push) Failing after 2m49s
2025-02-19 10:12:55 +01:00
ca15d2abe4 feat: enhance CI workflows with provider detection and update version to 1.2.27 2025-02-19 10:12:52 +01:00
bddb48ba9a docs: update changelog for version 1.2.26
Some checks failed
Release Workflow / route (push) Successful in 15s
Release Workflow / gitea-release (push) Has been cancelled
Release Workflow / github-release (push) Has been cancelled
2025-02-19 10:07:45 +01:00
f4b67e52b8 feat: update release workflows for Gitea and GitHub, increment version to 1.2.26 2025-02-19 10:07:41 +01:00
00f6a4b0ae docs: update changelog for version 1.2.25
Some checks failed
Github Release / build (push) Failing after 3m8s
Create Release / build (push) Has been cancelled
2025-02-19 09:43:47 +01:00
ab3937a69d feat: update GitHub release workflows and increment version to 1.2.25 2025-02-19 09:43:44 +01:00
0c4bae48d4 docs: update changelog for version 1.2.24 2025-02-19 09:40:33 +01:00
b4b17cb999 feat: update GitHub release workflow and increment version to 1.2.24 2025-02-19 09:40:30 +01:00
5ff3864d9d docs: update changelog for version 1.2.23
Some checks failed
Release / prepare (push) Has been cancelled
2025-02-19 09:39:43 +01:00
9b8736d35f feat: update Gitea release workflow and increment version to 1.2.23 2025-02-19 09:39:41 +01:00
cf0ba20637 docs: update changelog for version 1.2.22
Some checks failed
Release / prepare (push) Has been cancelled
2025-02-19 09:27:21 +01:00
e06c0b9a76 feat: update Gitea runner configuration and increment version to 1.2.22 2025-02-19 09:27:18 +01:00
4cb370ddff docs: update changelog for version 1.2.21
Some checks failed
Release / prepare (push) Has been cancelled
2025-02-19 01:30:59 +01:00
0b9c1711da feat: update Gitea release condition and increment version to 1.2.21 2025-02-19 01:30:46 +01:00
e2449030c5 docs: update changelog for version 1.2.20
Some checks failed
Release / prepare (push) Has been cancelled
2025-02-19 01:21:23 +01:00
5a91e87afa feat: update release workflows for GitHub and Gitea, increment version to 1.2.20 2025-02-19 01:21:14 +01:00
5e66c3bd45 docs: update changelog for version 1.2.19
Some checks failed
Release / prepare (push) Has been cancelled
Release / github (push) Has been cancelled
Release / gitea (push) Has been cancelled
2025-02-19 01:19:46 +01:00
61c82f796f feat: add Gitea and GitHub release workflows for version 1.2.19 2025-02-19 01:19:42 +01:00
7661e0eb20 docs: update changelog for version 1.2.18
Some checks failed
Release / release (push) Has been cancelled
2025-02-19 01:18:00 +01:00
c06e6de89a feat: remove Gitea and GitHub release workflows and increment version to 1.2.18 2025-02-19 01:17:56 +01:00
262bed84df docs: update changelog for version 1.2.17
Some checks failed
Release / prepare (push) Has been cancelled
Release / github (push) Has been cancelled
Release / gitea (push) Has been cancelled
2025-02-19 01:03:56 +01:00
c710e5d7f8 feat: update Gitea release workflow for version 1.2.17 and improve job structure 2025-02-19 01:03:53 +01:00
5d39f04786 docs: update changelog for version 1.2.16
Some checks failed
Release / github-release (push) Has been cancelled
Release / gitea-release (push) Has been cancelled
Release / get-version-and-changelog (push) Has been cancelled
2025-02-19 00:49:39 +01:00
d955e26b82 feat: update Gitea release workflow and increment version to 1.2.16 2025-02-19 00:49:35 +01:00
c20e7de5c3 docs: update changelog for version 1.2.15
Some checks failed
Release / get-version-and-changelog (push) Successful in 7s
Release / github-release (push) Has been skipped
Release / gitea-release (push) Failing after 2s
2025-02-19 00:46:38 +01:00
55c3b3688a feat: update version to 1.2.15 and clean up Gitea release workflow 2025-02-19 00:46:34 +01:00
fea5932125 docs: update changelog for version 1.2.14
Some checks failed
Release / get-version-and-changelog (push) Successful in 8s
Release / github-release (push) Has been skipped
Release / gitea-release (push) Failing after 3s
2025-02-19 00:43:18 +01:00
04f557939d feat: update version to 1.2.14 and refactor release workflows for improved GitHub and Gitea support 2025-02-19 00:43:15 +01:00
58549a53e4 docs: update changelog for version 1.2.13 2025-02-19 00:32:43 +01:00
64a46e3e7d feat: update version to 1.2.13 and enhance release workflow with Python setup and Gitea support 2025-02-19 00:32:40 +01:00
c2bd0982ab docs: update changelog for version 1.2.12
Some checks failed
Release / prepare (push) Successful in 8s
Release / release (push) Failing after 0s
2025-02-19 00:26:45 +01:00
e0b8da079e feat: update version to 1.2.12 and refactor release workflows for improved provider detection and execution 2025-02-19 00:26:40 +01:00
8c88827a2d docs: update changelog for version 1.2.11
Some checks failed
Release / prepare (push) Successful in 8s
Release / github-release (push) Has been skipped
Release / gitea-release (push) Failing after 3s
2025-02-18 23:50:00 +01:00
6128bc2827 feat: update version to 1.2.11 and enhance GitHub and Gitea release workflows with input validation and improved error handling 2025-02-18 23:49:57 +01:00
6d21a8ec52 docs: update changelog for version 1.2.10 2025-02-18 23:31:16 +01:00
2ee4eca7dd feat: enhance Gitea release workflow with API connection verification and URL validation; update version to 1.2.10 2025-02-18 23:31:00 +01:00
9eb64e06f0 docs: update changelog for version 1.2.9
Some checks failed
Release / release (push) Failing after 2m37s
2025-02-18 23:20:06 +01:00
693ef4e26c feat: update version to 1.2.9 in platformio.ini 2025-02-18 23:20:03 +01:00
11c099eba2 feat: refactor GitHub and Gitea release workflows for improved version handling and firmware uploads 2025-02-18 23:14:52 +01:00
c7c122a505 docs: update changelog for version 1.2.8
Some checks failed
GitHub Release / build (push) Has been cancelled
Release / detect (push) Successful in 7s
Release / gitea-release (push) Failing after 2m22s
Release / github-release (push) Has been skipped
2025-02-18 22:32:11 +01:00
d1bb4b7c83 feat: update version to 1.2.8 in platformio.ini; refactor Gitea and GitHub release workflows 2025-02-18 22:32:07 +01:00
dc5118587c feat: update version to 1.2.7 in platformio.ini; adjust Gitea release workflow 2025-02-18 22:28:31 +01:00
b13f2c4eee docs: update changelog for version 1.2.6
Some checks failed
Gitea Release / build (push) Failing after 0s
GitHub Release / build (push) Failing after 2m41s
Release / detect-and-run (push) Failing after 17s
2025-02-18 22:23:50 +01:00
6d16c35e62 feat: update version to 1.2.6 in platformio.ini 2025-02-18 22:23:45 +01:00
c94ebf5e33 docs: update changelog for version 1.2.5 2025-02-18 22:18:51 +01:00
9203706a20 feat: update version to 1.2.5; enhance Gitea release workflow and streamline release process 2025-02-18 22:18:49 +01:00
c252f48a49 docs: update changelog for version 1.2.4
Some checks failed
GitHub Release / build (push) Has been cancelled
Release / detect-and-run (push) Failing after 0s
Gitea Release / build (push) Failing after 2m48s
2025-02-18 21:56:09 +01:00
228dcacb1e feat: update version to 1.2.4 in HTML files and platformio.ini 2025-02-18 21:56:05 +01:00
9de4ed9ee9 feat: add GitHub and Gitea release workflows; streamline firmware release process 2025-02-18 21:53:23 +01:00
4d8a6fb943 docs: update changelog for version 1.2.3
Some checks failed
Create Release / build (push) Failing after 5m9s
2025-02-18 14:40:02 +01:00
2cab24403e feat: update version to 1.2.3; modify HTML files to reflect new version; enhance firmware update process and UI improvements 2025-02-18 14:18:14 +01:00
8b246e180b docs: update changelog for version 1.2.2
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-18 12:29:07 +01:00
b5c014db86 feat: update version to 1.2.2; change OTA upgrade link in HTML files; enhance OTA upload handling with progress updates and JSON responses 2025-02-18 12:28:47 +01:00
3c783c9844 feat: implement OTA update functionality with web interface; update partition settings and build configuration 2025-02-18 11:42:52 +01:00
175d614d1f feat: remove unused OTA server setup and related includes; update platformio.ini dependencies 2025-02-18 10:05:08 +01:00
678a286af1 feat: adjust weight counter threshold and optimize delay in RFID scanning; include scale header in NFC module 2025-02-17 15:04:21 +01:00
f877f43d90 feat: update version to v1.2.1 and change upgrade link to OTA in HTML files; modify updateSpoolTagId function to return boolean 2025-02-17 14:44:38 +01:00
3cd0798186 docs: update changelog for version 1.2.0
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-17 12:41:44 +01:00
2a67d8f67c feat: implement OTA functionality and update build scripts; change upgrade link to OTA in HTML 2025-02-17 12:41:25 +01:00
240795a2d0 feat: update version to v1.2.0 and modify build scripts in platformio.ini; remove unused includes in scale.cpp and website.cpp 2025-02-17 11:49:39 +01:00
4e384d777e feat: update version to v1.2.0 and add upgrade link in HTML files 2025-02-17 10:46:56 +01:00
03cbf82275 feat: add esp_wifi.h and set maximum transmit power in WiFi initialization 2025-02-16 21:46:06 +01:00
0c1a222636 fix: update version number in header to v1.1.0 2025-02-16 21:45:57 +01:00
8716b4ad73 docs: update changelog for version 1.1.0 2025-02-16 16:26:58 +01:00
6fcfefec8f chore: clean up changelog and update script execution in platformio.ini 2025-02-16 16:26:54 +01:00
b696a79f4b docs: update changelog for version 1.1.0 2025-02-16 16:14:26 +01:00
61ed765d87 fix: correct version number in nav bar 2025-02-16 16:12:07 +01:00
2703689e4e feat: update version to 1.1.0 and modify gzip compression handling for /spoolman route
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 13:00:42 +01:00
b24c50722f chore: increment version to 1.0.9 in platformio.ini
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 12:54:55 +01:00
3ec23a9f79 feat: implement gzip compression for /spoolman route response 2025-02-16 12:54:24 +01:00
75fe6b55ad chore: increment version to 1.0.8 in platformio.ini
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 12:30:19 +01:00
fa2f980312 fix: update partition settings and version in platformio.ini, and enhance release workflow 2025-02-16 12:29:12 +01:00
7964f1cd77 chore: increment version to 1.0.7 in platformio.ini
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 12:15:29 +01:00
dd611df9f5 feat: update ESP Async WebServer dependency to use GitHub URL instead of versioned package 2025-02-16 12:14:50 +01:00
0ccc67f4b2 feat: update release workflow trigger and increment version to 1.0.6
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 12:11:30 +01:00
a027dfb54e chore: remove unnecessary blank line in release workflow configuration 2025-02-16 12:07:14 +01:00
07741f2a52 feat: enhance release workflow by adding permissions for issues and pull requests, and updating GitHub CLI installation method 2025-02-16 12:05:50 +01:00
3e9b89f69b feat: streamline GitHub Actions release workflow by consolidating permissions and enhancing GitHub CLI installation step 2025-02-16 12:01:41 +01:00
bf67a635f6 feat: add GitHub CLI installation step to release workflow 2025-02-16 11:59:34 +01:00
84cccd5014 feat: update release workflow to include version in asset naming for firmware binaries 2025-02-16 11:58:04 +01:00
e983b0fcfd feat: update release workflow to use new asset naming and streamline release creation process 2025-02-16 11:53:49 +01:00
e01bb9b1f9 feat: enhance GitHub Actions workflow by adding permissions for discussions and packages 2025-02-16 11:50:51 +01:00
17b6051da0 feat: update GitHub Actions workflow for firmware release and add partition configuration 2025-02-16 11:47:20 +01:00
84617ebc53 feat: add German translation of README and link to it from the English version
Some checks failed
Create Release / build (push) Has been cancelled
2025-02-16 11:18:43 +01:00
8ac6ba57a4 docs: update changelog for version 1.0.5 2025-02-16 10:47:26 +01:00
cc17140dc4 feat: update version to 1.0.5 and enhance changelog update process with automatic git push 2025-02-16 10:47:18 +01:00
8741216374 feat: update changelog script to categorize commits and handle new changelog creation 2025-02-16 10:45:12 +01:00
7bdebeab03 feat: improve changelog update script to handle absolute paths and create new changelog if missing 2025-02-16 10:38:12 +01:00
35 changed files with 2514 additions and 272 deletions

165
.github/workflows/gitea-release.yml vendored Normal file
View File

@ -0,0 +1,165 @@
name: Gitea Release
on:
workflow_call:
secrets:
GITEA_TOKEN:
description: 'Token für Gitea API-Zugriff'
required: true
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install PlatformIO
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio esptool
- name: Install xxd
run: |
sudo apt-get update
sudo apt-get install xxd
- name: Build Firmware
run: |
VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2)
# Build firmware and SPIFFS
echo "Building firmware and SPIFFS..."
pio run -e esp32dev
pio run -t buildfs
# Copy firmware binary
cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin
# Create SPIFFS binary without header
cp .pio/build/esp32dev/spiffs.bin .pio.build/esp32dev/upgrade_filaman_website_v${VERSION}.bin
# Create full binary
(cd .pio/build/esp32dev &&
esptool.py --chip esp32 merge_bin \
--fill-flash-size 4MB \
--flash_mode dio \
--flash_freq 40m \
--flash_size 4MB \
-o filaman_full_${VERSION}.bin \
0x1000 bootloader.bin \
0x8000 partitions.bin \
0x10000 firmware.bin \
0x3D0000 spiffs.bin)
# Verify file sizes
echo "File sizes:"
(cd .pio/build/esp32dev && ls -lh *.bin)
- name: Get version from platformio.ini
id: get_version
run: |
VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2)
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Read CHANGELOG.md
id: changelog
run: |
VERSION=${{ steps.get_version.outputs.VERSION }}
CHANGELOG=$(awk "/## \\[$VERSION\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md)
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Determine Gitea URL
id: gitea_url
run: |
echo "Debug Environment:"
echo "GITHUB_SERVER_URL=${GITHUB_SERVER_URL:-not set}"
echo "GITEA_SERVER_URL=${GITEA_SERVER_URL:-not set}"
echo "GITHUB_REPOSITORY=${GITHUB_REPOSITORY:-not set}"
echo "GITEA_REPOSITORY=${GITEA_REPOSITORY:-not set}"
echo "RUNNER_NAME=${RUNNER_NAME:-not set}"
# Set API URL based on environment
if [ -n "${GITEA_ACTIONS}" ] || [ -n "${GITEA_REPOSITORY}" ] || [[ "${RUNNER_NAME}" == *"gitea"* ]]; then
GITEA_API_URL="${GITHUB_SERVER_URL}"
GITEA_REPO=$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f2)
GITEA_OWNER=$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f1)
else
echo "Error: This workflow is only for Gitea"
exit 1
fi
echo "GITEA_API_URL=${GITEA_API_URL}" >> $GITHUB_OUTPUT
echo "GITEA_REPO=${GITEA_REPO}" >> $GITHUB_OUTPUT
echo "GITEA_OWNER=${GITEA_OWNER}" >> $GITHUB_OUTPUT
- name: Create Gitea Release
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_API_URL: ${{ steps.gitea_url.outputs.GITEA_API_URL }}
GITEA_REPO: ${{ steps.gitea_url.outputs.GITEA_REPO }}
GITEA_OWNER: ${{ steps.gitea_url.outputs.GITEA_OWNER }}
run: |
# Debug Token (nur Länge ausgeben für Sicherheit)
echo "Debug: Token length: ${#GITEA_TOKEN}"
if [ -z "$GITEA_TOKEN" ]; then
echo "Error: GITEA_TOKEN is empty"
exit 1
fi
VERSION=${{ steps.get_version.outputs.VERSION }}
cd .pio/build/esp32dev
# Debug-Ausgaben
echo "Debug: API URL: ${GITEA_API_URL}"
echo "Debug: Repository: ${GITEA_OWNER}/${GITEA_REPO}"
# Erstelle zuerst den Release ohne Dateien
echo "Debug: Creating release..."
RELEASE_DATA="{\"tag_name\":\"v${VERSION}\",\"name\":\"v${VERSION}\",\"body\":\"${{ steps.changelog.outputs.CHANGES }}\"}"
RELEASE_RESPONSE=$(curl -s -w "\n%{http_code}" \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "${RELEASE_DATA}" \
"${GITEA_API_URL}/api/v1/repos/${GITEA_OWNER}/${GITEA_REPO}/releases")
RELEASE_STATUS=$(echo "$RELEASE_RESPONSE" | tail -n1)
RELEASE_BODY=$(echo "$RELEASE_RESPONSE" | head -n -1)
if [ "$RELEASE_STATUS" != "201" ]; then
echo "Error: Failed to create release"
echo "Response: $RELEASE_BODY"
exit 1
fi
# Extrahiere die Release-ID aus der Antwort
RELEASE_ID=$(echo "$RELEASE_BODY" | grep -o '"id":[0-9]*' | cut -d':' -f2)
# Lade die Dateien einzeln hoch
for file in upgrade_filaman_firmware_v${VERSION}.bin upgrade_filaman_website_v${VERSION}.bin filaman_full_${VERSION}.bin; do
if [ -f "$file" ]; then
echo "Debug: Uploading $file..."
UPLOAD_RESPONSE=$(curl -s -w "\n%{http_code}" \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$file" \
"${GITEA_API_URL}/api/v1/repos/${GITEA_OWNER}/${GITEA_REPO}/releases/${RELEASE_ID}/assets?name=${file}")
UPLOAD_STATUS=$(echo "$UPLOAD_RESPONSE" | tail -n1)
if [ "$UPLOAD_STATUS" != "201" ]; then
echo "Warning: Failed to upload $file"
echo "Response: $(echo "$UPLOAD_RESPONSE" | head -n -1)"
else
echo "Successfully uploaded $file"
fi
fi
done

118
.github/workflows/github-release.yml vendored Normal file
View File

@ -0,0 +1,118 @@
name: GitHub Release
on:
workflow_call:
secrets:
RELEASE_TOKEN:
description: 'GitHub token for release creation'
required: true
permissions:
contents: write
jobs:
create-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install PlatformIO
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio esptool
- name: Install xxd
run: |
sudo apt-get update
sudo apt-get install xxd
- name: Build Firmware
run: |
VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2)
# Always build firmware and SPIFFS
echo "Building firmware and SPIFFS..."
pio run -e esp32dev
pio run -t buildfs
# Copy firmware binary
cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin
# Create SPIFFS binary without header
cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/upgrade_filaman_website_v${VERSION}.bin
# Create full binary (always)
(cd .pio/build/esp32dev &&
esptool.py --chip esp32 merge_bin \
--fill-flash-size 4MB \
--flash_mode dio \
--flash_freq 40m \
--flash_size 4MB \
-o filaman_full_${VERSION}.bin \
0x1000 bootloader.bin \
0x8000 partitions.bin \
0x10000 firmware.bin \
0x3D0000 spiffs.bin)
# Verify file sizes
echo "File sizes:"
(cd .pio/build/esp32dev && ls -lh *.bin)
- name: Get version from platformio.ini
id: get_version
run: |
VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2)
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Read CHANGELOG.md
id: changelog
run: |
VERSION=${{ steps.get_version.outputs.VERSION }}
CHANGELOG=$(awk "/## \\[$VERSION\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md)
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
VERSION=${{ steps.get_version.outputs.VERSION }}
cd .pio/build/esp32dev
# Create release with available files
FILES_TO_UPLOAD=""
# Always add firmware
if [ -f "upgrade_filaman_firmware_v${VERSION}.bin" ]; then
FILES_TO_UPLOAD="$FILES_TO_UPLOAD upgrade_filaman_firmware_v${VERSION}.bin"
fi
# Add SPIFFS and full binary only if they exist
if [ -f "upgrade_filaman_website_v${VERSION}.bin" ]; then
FILES_TO_UPLOAD="$FILES_TO_UPLOAD upgrade_filaman_website_v${VERSION}.bin"
fi
if [ -f "filaman_full_${VERSION}.bin" ]; then
FILES_TO_UPLOAD="$FILES_TO_UPLOAD filaman_full_${VERSION}.bin"
fi
# Create release with available files
if [ -n "$FILES_TO_UPLOAD" ]; then
gh release create "v${VERSION}" \
--title "Release ${VERSION}" \
--notes "${{ steps.changelog.outputs.CHANGES }}" \
$FILES_TO_UPLOAD
else
echo "Error: No files found to upload"
exit 1
fi

View File

@ -1,33 +1,41 @@
name: Create Release
name: Release Workflow
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
build:
detect-provider:
runs-on: ubuntu-latest
outputs:
provider: ${{ steps.provider.outputs.provider }}
steps:
- uses: actions/checkout@v2
- name: Get version from tag
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}
- name: Read CHANGELOG.md
id: changelog
run: |
CHANGELOG=$(awk "/## \[${{ steps.get_version.outputs.VERSION }}\]/{p=1;print;next} /## \[/{p=0} p" CHANGELOG.md)
echo "::set-output name=CHANGES::$CHANGELOG"
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ steps.get_version.outputs.VERSION }}
body: ${{ steps.changelog.outputs.CHANGES }}
draft: false
prerelease: false
- name: Determine CI Provider
id: provider
shell: bash
run: |
if [ -n "${GITEA_ACTIONS}" ] || [ -n "${GITEA_REPOSITORY}" ] || [[ "${RUNNER_NAME}" == *"gitea"* ]]; then
echo "provider=gitea" >> "$GITHUB_OUTPUT"
else
echo "provider=github" >> "$GITHUB_OUTPUT"
fi
github-release:
needs: detect-provider
permissions:
contents: write
if: needs.detect-provider.outputs.provider == 'github'
uses: ./.github/workflows/github-release.yml
secrets:
RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
gitea-release:
needs: detect-provider
if: needs.detect-provider.outputs.provider == 'gitea'
uses: ./.github/workflows/gitea-release.yml
secrets:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}

File diff suppressed because it is too large Load Diff

155
README.de.md Normal file
View File

@ -0,0 +1,155 @@
# FilaMan - Filament Management System
FilaMan ist ein Filament-Managementsystem für den 3D-Druck. Es verwendet ESP32-Hardware für Gewichtsmessungen und NFC-Tag-Management.
Benutzer können Filamentspulen verwalten, den Status des Automatic Material System (AMS) von Bablulab Druckern überwachen und Einstellungen über eine Weboberfläche vornehmen.
Das System integriert sich nahtlos mit der [Spoolman](https://github.com/Donkie/Spoolman) Filamentverwaltung, zusätzlich mit [Bambulab](https://bambulab.com/en-us) 3D-Druckern und sowie dem [Openspool](https://github.com/spuder/OpenSpool) NFC-TAG Format.
![Scale](./img/scale_trans.png)
Weitere Bilder finden Sie im [img Ordner](/img/)
oder auf meiner Website: [FilaMan Website](https://www.filaman.app)
Deutsches Erklärvideo: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
### ESP32 Hardware-Funktionen
- **Gewichtsmessung:** Verwendung einer Wägezelle mit HX711-Verstärker für präzise Gewichtsverfolgung.
- **NFC-Tag Lesen/Schreiben:** PN532-Modul zum Lesen und Schreiben von Filamentdaten auf NFC-Tags.
- **OLED-Display:** Zeigt aktuelles Gewicht, Verbindungsstatus (WiFi, Bambu Lab, Spoolman).
- **WLAN-Konnektivität:** WiFiManager für einfache Netzwerkkonfiguration.
- **MQTT-Integration:** Verbindet sich mit Bambu Lab Drucker für AMS-Steuerung.
- **NFC-Tag NTAG215:** Verwendung von NTAG215 wegen ausreichendem Speicherplatz auf dem Tag
### Weboberflächen-Funktionen
- **Echtzeit-Updates:** WebSocket-Verbindung für Live-Daten-Updates.
- **NFC-Tag-Verwaltung:**
- Filamentdaten auf NFC-Tags schreiben.
- Verwendet das NFC-Tag-Format von [Openspool](https://github.com/spuder/OpenSpool)
- Ermöglicht automatische Spulenerkennung im AMS
- **Bambulab AMS-Integration:**
- Anzeige der aktuellen AMS-Fachbelegung.
- Zuordnung von Filamenten zu AMS-Slots.
- Unterstützung für externe Spulenhalter.
- **Spoolman-Integration:**
- Auflistung verfügbarer Filamentspulen.
- Filtern und Auswählen von Filamenten.
- Automatische Aktualisierung der Spulengewichte.
- Verfolgung von NFC-Tag-Zuweisungen.
### Wenn Sie meine Arbeit unterstützen möchten, freue ich mich über einen Kaffee
<a href="https://www.buymeacoffee.com/manuelw" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 108px !important;" ></a>
## Detaillierte Funktionalität
### ESP32-Funktionalität
- **Druckaufträge steuern und überwachen:** Der ESP32 kommuniziert mit dem Bambu Lab Drucker.
- **Drucker-Kommunikation:** Nutzt MQTT für Echtzeit-Kommunikation mit dem Drucker.
- **Benutzerinteraktionen:** Das OLED-Display bietet sofortiges Feedback zum Systemstatus.
### Weboberflächen-Funktionalität
- **Benutzerinteraktionen:** Die Weboberfläche ermöglicht Benutzern die Interaktion mit dem System.
- **UI-Elemente:** Enthält Dropdown-Menüs für Hersteller und Filamente, Buttons zum Beschreiben von NFC-Tags und Echtzeit-Statusanzeigen.
## Hardware-Anforderungen
### Komponenten
- **ESP32 Entwicklungsboard:** Jede ESP32-Variante.
[Amazon Link](https://amzn.eu/d/aXThslf)
- **HX711 Wägezellen-Verstärker:** Für Gewichtsmessung.
[Amazon Link](https://amzn.eu/d/1wZ4v0x)
- **OLED Display:** 128x64 SSD1306.
[Amazon Link](https://amzn.eu/d/dozAYDU)
- **PN532 NFC Modul:** Für NFC-Tag-Operationen.
[Amazon Link](https://amzn.eu/d/8205DDh)
- **NFC-Tag:** NTAG215
[Amazon Link](https://amzn.eu/d/fywy4c4)
### Pin-Konfiguration
| Komponente | ESP32 Pin |
|-------------------|-----------|
| HX711 DOUT | 16 |
| HX711 SCK | 17 |
| OLED SDA | 21 |
| OLED SCL | 22 |
| PN532 IRQ | 32 |
| PN532 RESET | 33 |
| PN532 SCK | 14 |
| PN532 MOSI | 13 |
| PN532 MISO | 12 |
| PN532 CS/SS | 15 |
## Software-Abhängigkeiten
### ESP32-Bibliotheken
- `WiFiManager`: Netzwerkkonfiguration
- `ESPAsyncWebServer`: Webserver-Funktionalität
- `ArduinoJson`: JSON-Verarbeitung
- `PubSubClient`: MQTT-Kommunikation
- `Adafruit_PN532`: NFC-Funktionalität
- `Adafruit_SSD1306`: OLED-Display-Steuerung
- `HX711`: Wägezellen-Kommunikation
## Installation
### Voraussetzungen
- **Software:**
- [PlatformIO](https://platformio.org/) in VS Code
- [Spoolman](https://github.com/Donkie/Spoolman) Instanz
- **Hardware:**
- ESP32 Entwicklungsboard
- HX711 Wägezellen-Verstärker
- Wägezelle (Gewichtssensor)
- OLED Display (128x64 SSD1306)
- PN532 NFC Modul
- Verbindungskabel
### Schritt-für-Schritt Installation
1. **Repository klonen:**
```bash
git clone https://github.com/ManuelW77/Filaman.git
cd FilaMan
```
2. **Abhängigkeiten installieren:**
```bash
pio lib install
```
3. **ESP32 flashen:**
```bash
pio run --target upload
```
4. **Ersteinrichtung:**
- Mit dem "FilaMan" WLAN-Zugangspunkt verbinden.
- WLAN-Einstellungen über das Konfigurationsportal vornehmen.
- Weboberfläche unter `http://filaman.local` oder der IP-Adresse aufrufen.
## Dokumentation
### Relevante Links
- [PlatformIO Dokumentation](https://docs.platformio.org/)
- [Spoolman Dokumentation](https://github.com/Donkie/Spoolman)
- [Bambu Lab Drucker Dokumentation](https://www.bambulab.com/)
### Tutorials und Beispiele
- [PlatformIO erste Schritte](https://docs.platformio.org/en/latest/tutorials/espressif32/arduino_debugging_unit_testing.html)
- [ESP32 Webserver Tutorial](https://randomnerdtutorials.com/esp32-web-server-arduino-ide/)
## Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe [LICENSE](LICENSE) Datei für Details.
## Materialien
### Nützliche Ressourcen
- [ESP32 Offizielle Dokumentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/)
- [Arduino Bibliotheken](https://www.arduino.cc/en/Reference/Libraries)
- [NFC Tag Informationen](https://learn.adafruit.com/adafruit-pn532-rfid-nfc/overview)
### Community und Support
- [PlatformIO Community](https://community.platformio.org/)
- [Arduino Forum](https://forum.arduino.cc/)
- [ESP32 Forum](https://www.esp32.com/)
## Verfügbarkeit
Der Code kann getestet und die Anwendung kann vom [GitHub Repository](https://github.com/ManuelW77/Filaman) heruntergeladen werden.
### Wenn Sie meine Arbeit unterstützen möchten, freue ich mich über einen Kaffee
<a href="https://www.buymeacoffee.com/manuelw" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 108px !important;" ></a>

View File

@ -1,5 +1,7 @@
# FilaMan - Filament Management System
[Deutsche Version](README.de.md)
FilaMan is a filament management system for 3D printing. It uses ESP32 hardware for weight measurement and NFC tag management.
Users can manage filament spools, monitor the status of the Automatic Material System (AMS) and make settings via a web interface.
The system integrates seamlessly with [Bambulab](https://bambulab.com/en-us) 3D printers and [Spoolman](https://github.com/Donkie/Spoolman) filament management as well as the [Openspool](https://github.com/spuder/OpenSpool) NFC-TAG format.
@ -122,6 +124,24 @@ german explanatory video: [Youtube](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62z
- Configure WiFi settings through the captive portal.
- Access the web interface at `http://filaman.local` or the IP address.
## GitHub Actions Configuration
### Required Secrets for Gitea Releases
When using Gitea as your repository host, you need to configure the following secrets in your repository:
- `GITEA_API_URL`: The base URL of your Gitea instance, including protocol (e.g., `https://git.example.com`)
- `GITEA_TOKEN`: Your Gitea access token with permissions to create releases
- `GITEA_REPOSITORY`: The repository name in format `owner/repo` (e.g., `username/filaman`)
Example values:
```
GITEA_API_URL=https://git.example.com
GITEA_TOKEN=abcdef1234567890
GITEA_REPOSITORY=username/filaman
```
Make sure to set these secrets in your repository settings under Settings > Secrets and Variables > Actions.
## Documentation

View File

@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,4 +44,6 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,8 +44,10 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<div class="container">
<h1>FilaMan</h1>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,7 +44,10 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<div class="connection-status hidden">
<div class="spinner"></div>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,7 +44,10 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<script>
window.onload = function() {

View File

@ -1013,4 +1013,83 @@ input[type="submit"]:disabled,
color: #000;
vertical-align: middle;
margin-left: 0.5rem;
}
.progress-container {
width: 100%;
margin: 20px 0;
display: none;
background: #f0f0f0;
border-radius: 4px;
overflow: hidden;
}
.progress-bar {
width: 0%;
height: 24px;
background-color: #4CAF50;
text-align: center;
line-height: 24px;
color: white;
transition: width 0.3s ease-in-out;
font-weight: bold;
}
.status {
margin: 10px 0;
padding: 15px;
border-radius: 4px;
display: none;
}
.error {
background-color: #ffebee;
color: #c62828;
border: 1px solid #ef9a9a;
}
.success {
background-color: #e8f5e9;
color: #2e7d32;
border: 1px solid #a5d6a7;
}
.update-form {
background: var(--primary-color);
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
margin: 0 auto;
width: 400px;
text-align: center;
}
.update-form input[type="file"] {
margin-bottom: 15px;
width: 80%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
}
.update-form input[type="submit"] {
background-color: #4CAF50;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s;
}
.update-form input[type="submit"]:hover {
background-color: #45a049;
}
.update-form input[type="submit"]:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
.warning {
background-color: var(--primary-color);
border: 1px solid #ffe0b2;
color: white;
padding: 15px;
margin: 20px auto;
border-radius: 4px;
max-width: 600px;
text-align: center;
}

246
html/upgrade.html Normal file
View File

@ -0,0 +1,246 @@
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
<a href="/">Start</a>
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
<span class="status-dot" id="bambuDot"></span>B
</div>
<div class="status-item">
<span class="status-dot" id="spoolmanDot"></span>S
</div>
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<div class="content">
<h1>Firmware Upgrade</h1>
<div class="warning">
<strong>Warning:</strong> Do not power off the device during update.
</div>
<div class="update-options">
<div class="update-section">
<h2>Firmware Update</h2>
<p>Upload a new firmware file (filaman_*.bin)</p>
<div class="update-form">
<form id="firmwareForm" enctype='multipart/form-data' data-type="firmware">
<input type='file' name='update' accept='.bin' required>
<input type='submit' value='Start Firmware Update'>
</form>
</div>
</div>
<div class="update-section">
<h2>Webpage Update</h2>
<p>Upload a new webpage file (webpage_*.bin)</p>
<div class="update-form">
<form id="webpageForm" enctype='multipart/form-data' data-type="webpage">
<input type='file' name='update' accept='.bin' required>
<input type='submit' value='Start Webpage Update'>
</form>
</div>
</div>
</div>
<div class="progress-container" style="display: none;">
<div class="progress-bar">0%</div>
</div>
<div class="status"></div>
</div>
<style>
.update-options {
display: flex;
gap: 2rem;
margin: 2rem 0;
}
.update-section {
flex: 1;
background: #f5f5f5;
padding: 1.5rem;
border-radius: 8px;
}
.update-section h2 {
margin-top: 0;
color: #333;
}
.update-section p {
color: #666;
margin-bottom: 1rem;
}
.progress-container {
margin: 20px 0;
background: #f0f0f0;
border-radius: 4px;
overflow: hidden;
}
.progress-bar {
width: 0;
height: 20px;
background: #4CAF50;
transition: width 0.3s ease-in-out;
text-align: center;
line-height: 20px;
color: white;
}
.status {
margin-top: 20px;
padding: 10px;
border-radius: 4px;
display: none;
}
.status.success {
background: #e8f5e9;
color: #2e7d32;
}
.status.error {
background: #ffebee;
color: #c62828;
}
.warning {
background: #fff3e0;
color: #e65100;
padding: 15px;
border-radius: 4px;
margin-bottom: 20px;
}
</style>
<script>
// Hide status indicators during update
const statusContainer = document.querySelector('.status-container');
if (statusContainer) {
statusContainer.style.display = 'none';
}
const progress = document.querySelector('.progress-bar');
const progressContainer = document.querySelector('.progress-container');
const status = document.querySelector('.status');
function handleUpdate(e) {
e.preventDefault();
const form = e.target;
const file = form.update.files[0];
const updateType = form.dataset.type;
if (!file) {
alert('Please select a file.');
return;
}
// Validate file name pattern
if (updateType === 'firmware' && !file.name.startsWith('upgrade_filaman_firmware_')) {
alert('Please select a valid firmware file (upgrade_filaman_firmware_*.bin)');
return;
}
if (updateType === 'webpage' && !file.name.startsWith('upgrade_filaman_website_')) {
alert('Please select a valid webpage file (upgrade_filaman_website_*.bin)');
return;
}
progressContainer.style.display = 'block';
status.style.display = 'none';
status.className = 'status';
// Reset progress bar
progress.style.width = '0%';
progress.textContent = '0%';
// Disable both forms during update
document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = true);
const xhr = new XMLHttpRequest();
xhr.open('POST', '/update', true);
xhr.onload = function() {
try {
let response = this.responseText;
try {
const jsonResponse = JSON.parse(response);
// Zeige finale Nachricht
status.textContent = jsonResponse.message || "Update complete";
status.classList.add(jsonResponse.success ? 'success' : 'error');
status.style.display = 'block';
if (jsonResponse.success) {
progress.style.width = '100%';
progress.textContent = '100%';
// Automatischer Neustart nach erfolgreicher Aktualisierung
status.textContent = "Update successful! Restarting device...";
setTimeout(() => {
window.location.reload();
}, 5000);
} else {
document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false);
}
} catch (e) {
console.error('JSON parse error:', e);
status.textContent = 'Update failed: Invalid response from server';
status.classList.add('error');
document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false);
}
} catch (error) {
status.textContent = 'Error: ' + error.message;
status.classList.add('error');
status.style.display = 'block';
document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false);
}
};
xhr.onerror = function() {
status.textContent = 'Update failed: Network error';
status.classList.add('error');
status.style.display = 'block';
document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false);
};
const formData = new FormData();
formData.append('update', file);
xhr.send(formData);
}
document.getElementById('firmwareForm').addEventListener('submit', handleUpdate);
document.getElementById('webpageForm').addEventListener('submit', handleUpdate);
</script>
</body>
</html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,7 +44,10 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<div class="content">
<h1>Scale Configuration Page</h1>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html>
<!-- head --><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -6,14 +6,25 @@
<title>FilaMan - Filament Management Tool</title>
<link rel="icon" type="image/png" href="/favicon.ico">
<link rel="stylesheet" href="style.css">
<script>
fetch('/api/version')
.then(response => response.json())
.then(data => {
const versionSpan = document.querySelector('.version');
if (versionSpan) {
versionSpan.textContent = 'v' + data.version;
}
})
.catch(error => console.error('Error fetching version:', error));
</script>
</head>
<body>
<div class="navbar">
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
<h1>FilaMan<span class="version"></span></h1>
<h4>Hollo Lollo Trollo</h4>
</div>
</div>
<nav style="display: flex; gap: 1rem;">
@ -21,6 +32,7 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -32,7 +44,10 @@
<div class="ram-status" id="ramStatus"></div>
</div>
</div>
</body>
</html>
<!-- head -->
<div class="content">
<h1>WiFi Configuration Page</h1>

6
partitions.csv Normal file
View File

@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1E0000,
app1, app, ota_1, 0x1F0000, 0x1E0000,
spiffs, data, spiffs, 0x3D0000, 0x30000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1E0000
5 app1 app ota_1 0x1F0000 0x1E0000
6 spiffs data spiffs 0x3D0000 0x30000

View File

@ -9,7 +9,9 @@
; https://docs.platformio.org/page/projectconf.html
[common]
version = "1.0.2"
version = "1.3.54"
#test
[env:esp32dev]
platform = espressif32
@ -19,8 +21,11 @@ monitor_speed = 115200
lib_deps =
tzapu/WiFiManager @ ^2.0.17
me-no-dev/ESP Async WebServer @ ^1.2.4
me-no-dev/AsyncTCP @ ^1.1.1
https://github.com/me-no-dev/ESPAsyncWebServer.git#master
#me-no-dev/AsyncTCP @ ^1.1.1
https://github.com/esphome/AsyncTCP.git
#mathieucarbou/ESPAsyncWebServer @ ^3.6.0
#esp32async/AsyncTCP @ ^3.3.5
bogde/HX711 @ ^0.7.5
adafruit/Adafruit SSD1306 @ ^2.5.13
adafruit/Adafruit GFX Library @ ^1.11.11
@ -31,8 +36,11 @@ lib_deps =
; Enable SPIFFS upload
board_build.filesystem = spiffs
board_build.spiffs.partition = 2M
board_build.spiffs.upload_size = 2M
; Update partition settings
board_build.partitions = partitions.csv
board_upload.flash_size = 4MB
board_build.flash_mode = dio
board_upload.flash_freq = "40m"
build_flags =
-Os
@ -40,12 +48,26 @@ build_flags =
-fdata-sections
-DNDEBUG
-mtext-section-literals
'-D VERSION="${common.version}"'
-DVERSION=\"${common.version}\"
-DASYNCWEBSERVER_REGEX
-DCORE_DEBUG_LEVEL=3
-DCONFIG_ARDUHAL_LOG_COLORS=1
-DOTA_DEBUG=1
-DCONFIG_OPTIMIZATION_LEVEL_DEBUG=1
-DBOOT_APP_PARTITION_OTA_0=1
-DCONFIG_LWIP_TCP_MSL=60000
-DCONFIG_LWIP_TCP_RCV_BUF_DEFAULT=4096
-DCONFIG_LWIP_MAX_ACTIVE_TCP=16
extra_scripts =
pre:scripts/combine_html.py
pre:scripts/pre_build.py
pre:scripts/pre_spiffs.py
pre:scripts/gzip_files.py
pre:scripts/extra_script.py
pre:scripts/update_changelog.py
scripts/extra_script.py
${env:buildfs.extra_scripts}
[env:buildfs]
extra_scripts =
pre:scripts/combine_html.py ; Combine header with HTML files
scripts/gzip_files.py ; Compress files for SPIFFS
[platformio]
default_envs = esp32dev

View File

@ -1,7 +1,10 @@
Import("env")
import os
import re
def combine_html_files(source, target, env):
print("COMBINE HTML FILES")
html_dir = "./html"
header_file = os.path.join(html_dir, "header.html")
@ -18,14 +21,14 @@ def combine_html_files(source, target, env):
with open(file_path, 'r') as f:
content = f.read()
# Replace placeholder with header content
if '{{header}}' in content:
new_content = content.replace('{{header}}', header_content)
# Write back combined content
with open(file_path, 'w') as f:
f.write(new_content)
print(f"Combined header with {filename}")
# Replace content between head comments with header content
pattern = r'(<!-- head -->).*?(<!-- head -->)'
new_content = re.sub(pattern, r'\1' + header_content + r'\2', content, flags=re.DOTALL)
# Write back combined content
with open(file_path, 'w') as f:
f.write(new_content)
print(f"Combined header with {filename}")
# Register the script to run before building SPIFFS
env.AddPreAction("buildfs", combine_html_files)

View File

@ -13,6 +13,9 @@ def copy_file(input_file, output_file):
shutil.copy2(input_file, output_file)
def should_compress(file):
# Skip compression for spoolman.html
if file == 'spoolman.html':
return False
# Komprimiere nur bestimmte Dateitypen
return file.endswith(('.js', '.png', '.css', '.html'))

View File

@ -22,4 +22,4 @@ def replace_version(source, target, env):
with open(header_file, 'w') as file:
file.write(content)
env.AddPreAction("buildfs", replace_version)
env.AddPreAction("buildfs", replace_version)

View File

@ -1,7 +1,39 @@
Import("env")
board_config = env.BoardConfig()
# Calculate SPIFFS size based on partition table
SPIFFS_START = 0x310000 # From partitions.csv
SPIFFS_SIZE = 0xE0000 # From partitions.csv
SPIFFS_PAGE = 256
SPIFFS_BLOCK = 4096
env.Replace(
MKSPIFFSTOOL="mkspiffs",
SPIFFSBLOCKSZ=SPIFFS_BLOCK,
SPIFFSBLOCKSIZE=SPIFFS_BLOCK,
SPIFFSSTART=SPIFFS_START,
SPIFFSEND=SPIFFS_START + SPIFFS_SIZE,
SPIFFSPAGESZ=SPIFFS_PAGE,
SPIFFSSIZE=SPIFFS_SIZE
)
# Wiederverwendung der replace_version Funktion
exec(open("./scripts/pre_build.py").read())
# Bind to SPIFFS build
env.AddPreAction("buildfs", replace_version)
env.AddPreAction("buildfs", replace_version)
import os
import shutil
from SCons.Script import DefaultEnvironment
env = DefaultEnvironment()
# Format SPIFFS partition before uploading new files
spiffs_dir = os.path.join(env.subst("$BUILD_DIR"), "spiffs")
if os.path.exists(spiffs_dir):
shutil.rmtree(spiffs_dir)
os.makedirs(spiffs_dir)
print("SPIFFS partition formatted.")

View File

@ -1,36 +1,150 @@
import os
import re
import subprocess
from datetime import datetime
def get_version():
with open('../platformio.ini', 'r') as f:
script_dir = os.path.dirname(os.path.abspath(__file__))
project_dir = os.path.dirname(script_dir)
platformio_path = os.path.join(project_dir, 'platformio.ini')
with open(platformio_path, 'r') as f:
content = f.read()
version_match = re.search(r'version\s*=\s*"([^"]+)"', content)
return version_match.group(1) if version_match else None
def get_last_tag():
try:
result = subprocess.run(['git', 'describe', '--tags', '--abbrev=0'],
capture_output=True, text=True)
return result.stdout.strip()
except subprocess.CalledProcessError:
return None
def categorize_commit(commit_msg):
"""Categorize commit messages based on conventional commits"""
lower_msg = commit_msg.lower()
if any(x in lower_msg for x in ['feat', 'add', 'new']):
return 'Added'
elif any(x in lower_msg for x in ['fix', 'bug']):
return 'Fixed'
else:
return 'Changed'
def get_changes_from_git():
"""Get changes from git commits since last tag"""
changes = {
'Added': [],
'Changed': [],
'Fixed': []
}
last_tag = get_last_tag()
# Get commits since last tag
git_log_command = ['git', 'log', '--pretty=format:%s']
if last_tag:
git_log_command.append(f'{last_tag}..HEAD')
try:
result = subprocess.run(git_log_command, capture_output=True, text=True)
commits = result.stdout.strip().split('\n')
# Filter out empty commits and categorize
for commit in commits:
if commit:
category = categorize_commit(commit)
# Clean up commit message
clean_msg = re.sub(r'^(feat|fix|chore|docs|style|refactor|perf|test)(\(.*\))?:', '', commit).strip()
changes[category].append(clean_msg)
except subprocess.CalledProcessError:
print("Error: Failed to get git commits")
return None
return changes
def push_changes(version):
"""Push changes to upstream"""
try:
# Stage the CHANGELOG.md
subprocess.run(['git', 'add', 'CHANGELOG.md'], check=True)
# Commit the changelog
commit_msg = f"docs: update changelog for version {version}"
subprocess.run(['git', 'commit', '-m', commit_msg], check=True)
# Push to origin (local)
subprocess.run(['git', 'push', 'origin'], check=True)
print("Successfully pushed to origin")
except subprocess.CalledProcessError as e:
print(f"Error during git operations: {e}")
return False
return True
def update_changelog():
print("Starting changelog update...") # Add this line
version = get_version()
print(f"Current version: {version}") # Add this line
today = datetime.now().strftime('%Y-%m-%d')
changelog_template = f"""## [{version}] - {today}
### Added
-
### Changed
-
### Fixed
-
"""
script_dir = os.path.dirname(os.path.abspath(__file__))
project_dir = os.path.dirname(script_dir)
changelog_path = os.path.join(project_dir, 'CHANGELOG.md')
with open('../CHANGELOG.md', 'r') as f:
content = f.read()
# Get changes from git
changes = get_changes_from_git()
if not changes:
print("No changes found or error occurred")
return
# Insert new version template after the header
updated_content = content.replace("# Changelog\n", f"# Changelog\n\n{changelog_template}")
# Create changelog entry
changelog_entry = f"## [{version}] - {today}\n"
for section, entries in changes.items():
if entries: # Only add sections that have entries
changelog_entry += f"### {section}\n"
for entry in entries:
changelog_entry += f"- {entry}\n"
changelog_entry += "\n"
with open('../CHANGELOG.md', 'w') as f:
f.write(updated_content)
if not os.path.exists(changelog_path):
with open(changelog_path, 'w') as f:
f.write(f"# Changelog\n\n{changelog_entry}")
push_changes(version)
else:
with open(changelog_path, 'r') as f:
content = f.read()
if f"[{version}]" not in content:
updated_content = content.replace("# Changelog\n", f"# Changelog\n\n{changelog_entry}")
with open(changelog_path, 'w') as f:
f.write(updated_content)
push_changes(version)
else:
# Version existiert bereits, aktualisiere die bestehenden Einträge
version_pattern = f"## \\[{version}\\] - \\d{{4}}-\\d{{2}}-\\d{{2}}"
next_version_pattern = "## \\[.*?\\] - \\d{4}-\\d{2}-\\d{2}"
# Finde den Start der aktuellen Version
version_match = re.search(version_pattern, content)
if version_match:
version_start = version_match.start()
# Suche nach der nächsten Version
next_version_match = re.search(next_version_pattern, content[version_start + 1:])
if next_version_match:
# Ersetze den Inhalt zwischen aktueller und nächster Version
next_version_pos = version_start + 1 + next_version_match.start()
updated_content = content[:version_start] + changelog_entry + content[next_version_pos:]
else:
# Wenn keine nächste Version existiert, ersetze bis zum Ende
updated_content = content[:version_start] + changelog_entry + "\n"
with open(changelog_path, 'w') as f:
f.write(updated_content)
push_changes(version)
print(f"Updated entries for version {version}")
if __name__ == "__main__":
update_changelog()

View File

@ -60,10 +60,10 @@ JsonDocument fetchSpoolsForWebsite() {
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
for (JsonObject spool : spools) {
JsonObject filteredSpool = filteredSpools.createNestedObject();
JsonObject filteredSpool = filteredSpools.add<JsonObject>();
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
JsonObject filament = filteredSpool.createNestedObject("filament");
JsonObject filament = filteredSpool["filament"].to<JsonObject>();
filament["sm_id"] = spool["id"];
filament["id"] = spool["filament"]["id"];
filament["name"] = spool["filament"]["name"];
@ -73,7 +73,7 @@ JsonDocument fetchSpoolsForWebsite() {
filament["price_meter"] = spool["filament"]["extra"]["price_meter"];
filament["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
JsonObject vendor = filament.createNestedObject("vendor");
JsonObject vendor = filament["vendor"].to<JsonObject>();
vendor["id"] = spool["filament"]["vendor"]["id"];
vendor["name"] = spool["filament"]["vendor"]["name"];
}
@ -110,13 +110,13 @@ JsonDocument fetchAllSpoolsInfo() {
JsonArray filteredSpools = filteredDoc.to<JsonArray>();
for (JsonObject spool : spools) {
JsonObject filteredSpool = filteredSpools.createNestedObject();
JsonObject filteredSpool = filteredSpools.add<JsonObject>();
filteredSpool["price"] = spool["price"];
filteredSpool["remaining_weight"] = spool["remaining_weight"];
filteredSpool["used_weight"] = spool["used_weight"];
filteredSpool["extra"]["nfc_id"] = spool["extra"]["nfc_id"];
JsonObject filament = filteredSpool.createNestedObject("filament");
JsonObject filament = filteredSpool["filament"].to<JsonObject>();
filament["id"] = spool["filament"]["id"];
filament["name"] = spool["filament"]["name"];
filament["material"] = spool["filament"]["material"];
@ -125,11 +125,11 @@ JsonDocument fetchAllSpoolsInfo() {
filament["spool_weight"] = spool["filament"]["spool_weight"];
filament["color_hex"] = spool["filament"]["color_hex"];
JsonObject vendor = filament.createNestedObject("vendor");
JsonObject vendor = filament["vendor"].to<JsonObject>();
vendor["id"] = spool["filament"]["vendor"]["id"];
vendor["name"] = spool["filament"]["vendor"]["name"];
JsonObject extra = filament.createNestedObject("extra");
JsonObject extra = filament["extra"].to<JsonObject>();
extra["nozzle_temperature"] = spool["filament"]["extra"]["nozzle_temperature"];
extra["price_gramm"] = spool["filament"]["extra"]["price_gramm"];
extra["price_meter"] = spool["filament"]["extra"]["price_meter"];
@ -175,20 +175,20 @@ void sendToApi(void *parameter) {
vTaskDelete(NULL);
}
uint8_t updateSpoolTagId(String uidString, const char* payload) {
bool updateSpoolTagId(String uidString, const char* payload) {
JsonDocument doc;
DeserializationError error = deserializeJson(doc, payload);
if (error) {
Serial.print("Fehler beim JSON-Parsing: ");
Serial.println(error.c_str());
return 0;
return false;
}
// Überprüfe, ob die erforderlichen Felder vorhanden sind
if (!doc.containsKey("sm_id") || doc["sm_id"] == "") {
if (!doc["sm_id"].is<String>() || doc["sm_id"].as<String>() == "") {
Serial.println("Keine Spoolman-ID gefunden.");
return 0;
return false;
}
String spoolsUrl = spoolmanUrl + apiUrl + "/spool/" + doc["sm_id"].as<String>();
@ -207,7 +207,7 @@ uint8_t updateSpoolTagId(String uidString, const char* payload) {
SendToApiParams* params = new SendToApiParams();
if (params == nullptr) {
Serial.println("Fehler: Kann Speicher für Task-Parameter nicht allokieren.");
return 0;
return false;
}
params->httpType = "PATCH";
params->spoolsUrl = spoolsUrl;
@ -223,7 +223,7 @@ uint8_t updateSpoolTagId(String uidString, const char* payload) {
NULL // Task-Handle (nicht benötigt)
);
return 1;
return true;
}
uint8_t updateSpoolWeight(String spoolId, uint16_t weight) {
@ -368,7 +368,7 @@ bool checkSpoolmanExtraFields() {
for (uint8_t s = 0; s < extraLength; s++) {
bool found = false;
for (JsonObject field : doc.as<JsonArray>()) {
if (field.containsKey("key") && field["key"] == extraFields[s]) {
if (field["key"].is<String>() && field["key"] == extraFields[s]) {
Serial.println("Feld gefunden: " + extraFields[s]);
found = true;
break;
@ -430,7 +430,7 @@ bool checkSpoolmanInstance(const String& url) {
String payload = http.getString();
JsonDocument doc;
DeserializationError error = deserializeJson(doc, payload);
if (!error && doc.containsKey("status")) {
if (!error && doc["status"].is<String>()) {
const char* status = doc["status"];
http.end();
@ -469,7 +469,7 @@ bool saveSpoolmanUrl(const String& url) {
String loadSpoolmanUrl() {
JsonDocument doc;
if (loadJsonValue("/spoolman_url.json", doc) && doc.containsKey("url")) {
if (loadJsonValue("/spoolman_url.json", doc) && doc["url"].is<String>()) {
return doc["url"].as<String>();
}
Serial.println("Keine gültige Spoolman-URL gefunden.");

View File

@ -17,7 +17,7 @@ bool checkSpoolmanExtraFields(); // Neue Funktion zum Überprüfen der Extrafeld
JsonDocument fetchSpoolsForWebsite(); // API-Funktion für die Webseite
JsonDocument fetchAllSpoolsInfo();
void sendAmsData(AsyncWebSocketClient *client); // Neue Funktion zum Senden von AMS-Daten
uint8_t updateSpoolTagId(String uidString, const char* payload); // Neue Funktion zum Aktualisieren eines Spools
bool updateSpoolTagId(String uidString, const char* payload); // Neue Funktion zum Aktualisieren eines Spools
uint8_t updateSpoolWeight(String spoolId, uint16_t weight); // Neue Funktion zum Aktualisieren des Gewichts
bool initSpoolman(); // Neue Funktion zum Initialisieren von Spoolman

View File

@ -58,7 +58,7 @@ bool saveBambuCredentials(const String& ip, const String& serialnr, const String
bool loadBambuCredentials() {
JsonDocument doc;
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
if (loadJsonValue("/bambu_credentials.json", doc) && doc["bambu_ip"].is<String>()) {
// Temporäre Strings für die Werte
String ip = doc["bambu_ip"].as<String>();
String code = doc["bambu_accesscode"].as<String>();
@ -270,9 +270,9 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
}
// Prüfen, ob "print->upgrade_state" und "print.ams.ams" existieren
if (doc["print"].containsKey("upgrade_state")) {
if (doc["print"]["upgrade_state"].is<String>()) {
// Prüfen ob AMS-Daten vorhanden sind
if (!doc["print"].containsKey("ams") || !doc["print"]["ams"].containsKey("ams")) {
if (!doc["print"]["ams"].is<String>() || !doc["print"]["ams"]["ams"].is<String>()) {
return;
}
@ -315,7 +315,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
}
// Prüfe die externe Spule
if (!hasChanges && doc["print"].containsKey("vt_tray")) {
if (!hasChanges && doc["print"]["vt_tray"].is<String>()) {
JsonObject vtTray = doc["print"]["vt_tray"];
bool foundExternal = false;
@ -363,7 +363,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
ams_count = amsArray.size();
// Wenn externe Spule vorhanden, füge sie hinzu
if (doc["print"].containsKey("vt_tray")) {
if (doc["print"]["vt_tray"].is<String>()) {
JsonObject vtTray = doc["print"]["vt_tray"];
int extIdx = ams_count; // Index für externe Spule
ams_data[extIdx].ams_id = 255; // Spezielle ID für externe Spule
@ -387,14 +387,14 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
JsonArray wsArray = wsDoc.to<JsonArray>();
for (int i = 0; i < ams_count; i++) {
JsonObject amsObj = wsArray.createNestedObject();
JsonObject amsObj = wsArray.add<JsonObject>();
amsObj["ams_id"] = ams_data[i].ams_id;
JsonArray trays = amsObj.createNestedArray("tray");
JsonArray trays = amsObj["tray"].to<JsonArray>();
int maxTrays = (ams_data[i].ams_id == 255) ? 1 : 4;
for (int j = 0; j < maxTrays; j++) {
JsonObject trayObj = trays.createNestedObject();
JsonObject trayObj = trays.add<JsonObject>();
trayObj["id"] = ams_data[i].trays[j].id;
trayObj["tray_info_idx"] = ams_data[i].trays[j].tray_info_idx;
trayObj["tray_type"] = ams_data[i].trays[j].tray_type;
@ -427,14 +427,14 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
JsonArray wsArray = wsDoc.to<JsonArray>();
for (int j = 0; j < ams_count; j++) {
JsonObject amsObj = wsArray.createNestedObject();
JsonObject amsObj = wsArray.add<JsonObject>();
amsObj["ams_id"] = ams_data[j].ams_id;
JsonArray trays = amsObj.createNestedArray("tray");
JsonArray trays = amsObj["tray"].to<JsonArray>();
int maxTrays = (ams_data[j].ams_id == 255) ? 1 : 4;
for (int k = 0; k < maxTrays; k++) {
JsonObject trayObj = trays.createNestedObject();
JsonObject trayObj = trays.add<JsonObject>();
trayObj["id"] = ams_data[j].trays[k].id;
trayObj["tray_info_idx"] = ams_data[j].trays[k].tray_info_idx;
trayObj["tray_type"] = ams_data[j].trays[k].tray_type;

View File

@ -36,4 +36,5 @@ void mqtt_loop(void * parameter);
bool setBambuSpool(String payload);
void bambu_restart();
extern TaskHandle_t BambuMqttTask;
#endif

View File

@ -1,4 +1,5 @@
#include "commonFS.h"
#include <SPIFFS.h>
bool saveJsonValue(const char* filename, const JsonDocument& doc) {
File file = SPIFFS.open(filename, "w");
@ -35,23 +36,12 @@ bool loadJsonValue(const char* filename, JsonDocument& doc) {
return true;
}
bool initializeSPIFFS() {
// Erster Versuch
if (SPIFFS.begin(true)) {
Serial.println("SPIFFS mounted successfully.");
return true;
void initializeSPIFFS() {
if (!SPIFFS.begin(true, "/spiffs", 10, "spiffs")) {
Serial.println("SPIFFS Mount Failed");
return;
}
// Formatierung versuchen
Serial.println("Failed to mount SPIFFS. Formatting...");
SPIFFS.format();
// Zweiter Versuch nach Formatierung
if (SPIFFS.begin(true)) {
Serial.println("SPIFFS formatted and mounted successfully.");
return true;
}
Serial.println("SPIFFS initialization failed completely.");
return false;
Serial.printf("SPIFFS Total: %u bytes\n", SPIFFS.totalBytes());
Serial.printf("SPIFFS Used: %u bytes\n", SPIFFS.usedBytes());
Serial.printf("SPIFFS Free: %u bytes\n", SPIFFS.totalBytes() - SPIFFS.usedBytes());
}

View File

@ -7,6 +7,6 @@
bool saveJsonValue(const char* filename, const JsonDocument& doc);
bool loadJsonValue(const char* filename, JsonDocument& doc);
bool initializeSPIFFS();
void initializeSPIFFS();
#endif

View File

@ -1,10 +1,10 @@
#include <Arduino.h>
#include <WiFi.h>
#include <DNSServer.h>
#include <WiFiManager.h>
#include <ESPmDNS.h>
#include <Wire.h>
#include <WiFi.h>
#include "wlan.h"
#include "config.h"
#include "website.h"
#include "api.h"
@ -15,16 +15,16 @@
#include "esp_task_wdt.h"
#include "commonFS.h"
// ***** WIFI initialisieren
WiFiManager wm;
bool wm_nonblocking = false;
void initWiFi();
// ################### Functions
// ##### SETUP #####
void setup() {
Serial.begin(115200);
uint64_t chipid;
chipid = ESP.getEfuseMac(); //The chip ID is essentially its MAC address(length: 6 bytes).
Serial.printf("ESP32 Chip ID = %04X", (uint16_t)(chipid >> 32)); //print High 2 bytes
Serial.printf("%08X\n", (uint32_t)chipid); //print Low 4bytes.
// Initialize SPIFFS
initializeSPIFFS();
@ -84,6 +84,8 @@ uint8_t wifiErrorCounter = 0;
// ##### PROGRAM START #####
void loop() {
/*
// Überprüfe den WLAN-Status
if (WiFi.status() != WL_CONNECTED) {
wifiErrorCounter++;
@ -93,12 +95,10 @@ void loop() {
wifiOn = true;
}
if (wifiErrorCounter > 20) ESP.restart();
*/
unsigned long currentMillis = millis();
// Falls WifiManager im nicht blockenden Modus ist
//if(wm_nonblocking) wm.process();
// Send AMS Data min every Minute
if (currentMillis - lastAmsSendTime >= amsSendInterval) {
lastAmsSendTime = currentMillis;
@ -137,6 +137,7 @@ void loop() {
weightSend = 0;
}
}
// reset weight counter after writing tag
if (currentMillis - lastWeightReadTime >= weightReadInterval && hasReadRfidTag > 1)
{
@ -146,7 +147,7 @@ void loop() {
lastWeight = weight;
// Wenn ein Tag mit SM id erkannte wurde und der Waage Counter anspricht an SM Senden
if (spoolId != "" && weigthCouterToApi > 5 && weightSend == 0 && hasReadRfidTag == 1) {
if (spoolId != "" && weigthCouterToApi > 3 && weightSend == 0 && hasReadRfidTag == 1) {
oledShowIcon("loading");
if (updateSpoolWeight(spoolId, weight))
{
@ -164,38 +165,3 @@ void loop() {
yield();
esp_task_wdt_reset();
}
// ##### Funktionen für Konfiguration #####
void initWiFi() {
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
oledShowTopRow();
oledShowMessage("WiFi Setup");
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
res = wm.autoConnect("FilaMan"); // anonymous ap
// res = wm.autoConnect("spoolman","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect or hit timeout");
// ESP.restart();
oledShowTopRow();
oledShowMessage("WiFi not connected Check Portal");
}
else {
wifiOn = true;
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
oledShowTopRow();
display.display();
}
}
// ##### Funktionen für Konfiguration Ende #####

View File

@ -6,6 +6,7 @@
#include "website.h"
#include "api.h"
#include "esp_task_wdt.h"
#include "scale.h"
//Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
@ -93,14 +94,6 @@ bool formatNdefTag() {
}
uint8_t ntag2xx_WriteNDEF(const char *payload) {
/*
if (!formatNdefTag()) {
Serial.println("Fehler beim Formatieren des NDEF-Tags.");
hasReadRfidTag = 2;
return 0;
}
*/
uint8_t tagSize = 240; // 144 bytes is maximum for NTAG213
Serial.print("Tag Size: ");Serial.println(tagSize);
@ -137,9 +130,6 @@ uint8_t ntag2xx_WriteNDEF(const char *payload) {
return 0;
}
//Serial.println();
//Serial.print("Header Size: ");Serial.println(sizeof(pageHeader));
// Kombiniere Header und Payload
int totalSize = sizeof(pageHeader) + len;
uint8_t* combinedData = (uint8_t*) malloc(totalSize);
@ -149,37 +139,10 @@ uint8_t ntag2xx_WriteNDEF(const char *payload) {
return 0;
}
// Überprüfe die Kombination von Header und Payload
/*
Serial.print("Header: ");
for (int i = 0; i < sizeof(pageHeader); i++) {
Serial.print(pageHeader[i], HEX);
Serial.print(" ");
}
Serial.println();
Serial.print("Payload: ");
for (int i = 0; i < len; i++) {
Serial.print(payload[i], HEX);
Serial.print(" ");
}
Serial.println();
*/
// Kombiniere Header und Payload
memcpy(combinedData, pageHeader, sizeof(pageHeader));
memcpy(&combinedData[sizeof(pageHeader)], payload, len);
// Überprüfe die Kombination von Header und Payload
/*
Serial.print("Kombinierte Daten: ");
for (int i = 0; i < totalSize; i++) {
Serial.print(combinedData[i], HEX);
Serial.print(" ");
}
Serial.println();
*/
// Schreibe die Seiten
uint8_t a = 0;
uint8_t i = 0;
@ -188,21 +151,9 @@ uint8_t ntag2xx_WriteNDEF(const char *payload) {
int bytesToWrite = (totalSize < 4) ? totalSize : 4;
memcpy(pageBuffer, combinedData + a, bytesToWrite);
// Überprüfe die Schreibung der Seiten
/*
Serial.print("Seite ");
Serial.print(i);
Serial.print(": ");
for (int j = 0; j < bytesToWrite; j++) {
Serial.print(pageBuffer[j], HEX);
Serial.print(" ");
}
Serial.println();
*/
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength;
nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 500);
//Serial.print("Schreibe Seite: ");Serial.println(i);
//uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
//uint8_t uidLength;
//nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 100);
if (!(nfc.ntag2xx_WritePage(4+i, pageBuffer)))
{
@ -210,8 +161,6 @@ uint8_t ntag2xx_WriteNDEF(const char *payload) {
free(combinedData);
return 0;
}
//Serial.print("Seite geschrieben: ");Serial.println(i);
yield();
//esp_task_wdt_reset();
@ -285,11 +234,15 @@ void writeJsonToTag(void *parameter) {
// Gib die erstellte NDEF-Message aus
Serial.println("Erstelle NDEF-Message...");
Serial.println(payload);
hasReadRfidTag = 3;
vTaskSuspend(RfidReaderTask);
vTaskDelay(500 / portTICK_PERIOD_MS);
//pauseBambuMqttTask = true;
// aktualisieren der Website wenn sich der Status ändert
sendNfcData(nullptr);
oledShowMessage("Waiting for NFC-Tag");
// Wait 10sec for tag
uint8_t success = 0;
@ -326,13 +279,23 @@ void writeJsonToTag(void *parameter) {
Serial.println("NDEF-Message erfolgreich auf den Tag geschrieben");
//oledShowMessage("NFC-Tag written");
oledShowIcon("success");
vTaskDelay(2000 / portTICK_PERIOD_MS);
vTaskDelay(1000 / portTICK_PERIOD_MS);
hasReadRfidTag = 5;
// aktualisieren der Website wenn sich der Status ändert
sendNfcData(nullptr);
vTaskResume(RfidReaderTask);
pauseBambuMqttTask = false;
updateSpoolTagId(uidString, payload);
if (updateSpoolTagId(uidString, payload)) {
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength;
oledShowIcon("success");
while (nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 500)) {
yield();
}
}
vTaskResume(RfidReaderTask);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
else
{
@ -361,16 +324,19 @@ void writeJsonToTag(void *parameter) {
void startWriteJsonToTag(const char* payload) {
char* payloadCopy = strdup(payload);
// Erstelle die Task
xTaskCreate(
writeJsonToTag, // Task-Funktion
"WriteJsonToTagTask", // Task-Name
4096, // Stackgröße in Bytes
(void*)payloadCopy, // Parameter
rfidWriteTaskPrio, // Priorität
NULL // Task-Handle (nicht benötigt)
);
// Task nicht mehrfach starten
if (hasReadRfidTag != 3) {
// Erstelle die Task
xTaskCreate(
writeJsonToTag, // Task-Funktion
"WriteJsonToTagTask", // Task-Name
4096, // Stackgröße in Bytes
(void*)payloadCopy, // Parameter
rfidWriteTaskPrio, // Priorität
NULL // Task-Handle (nicht benötigt)
);
}
}
void scanRfidTask(void * parameter) {
@ -397,7 +363,7 @@ void scanRfidTask(void * parameter) {
hasReadRfidTag = 6;
oledShowIcon("transfer");
vTaskDelay(1000 / portTICK_PERIOD_MS);
vTaskDelay(500 / portTICK_PERIOD_MS);
if (uidLength == 7)
{

View File

@ -3,10 +3,9 @@
#include <ArduinoJson.h>
#include "config.h"
#include "HX711.h"
#include <EEPROM.h>
#include "display.h"
#include "nfc.h"
#include "esp_task_wdt.h"
#include <Preferences.h>
HX711 scale;
@ -18,6 +17,10 @@ uint8_t weigthCouterToApi = 0;
uint8_t scale_tare_counter = 0;
uint8_t pauseMainTask = 0;
Preferences preferences;
const char* NVS_NAMESPACE = "scale";
const char* NVS_KEY_CALIBRATION = "cal_value";
// ##### Funktionen für Waage #####
uint8_t tareScale() {
Serial.println("Tare scale");
@ -49,13 +52,12 @@ void scale_loop(void * parameter) {
void start_scale() {
Serial.println("Prüfe Calibration Value");
long calibrationValue; // calibration value (see example file "Calibration.ino")
//calibrationValue = 696.0; // uncomment this if you want to set the calibration value in the sketch
long calibrationValue;
EEPROM.begin(512);
EEPROM.get(calVal_eepromAdress, calibrationValue); // uncomment this if you want to fetch the calibration value from eeprom
//calibrationValue = EEPROM.read(calVal_eepromAdress);
// NVS
preferences.begin(NVS_NAMESPACE, true); // true = readonly
calibrationValue = preferences.getLong(NVS_KEY_CALIBRATION, defaultScaleCalibrationValue);
preferences.end();
Serial.print("Read Scale Calibration Value ");
Serial.println(calibrationValue);
@ -138,18 +140,19 @@ uint8_t calibrate_scale() {
{
Serial.print("New calibration value has been set to: ");
Serial.println(newCalibrationValue);
Serial.print("Save this value to EEPROM adress ");
Serial.println(calVal_eepromAdress);
//EEPROM.put(calVal_eepromAdress, newCalibrationValue);
EEPROM.put(calVal_eepromAdress, newCalibrationValue);
EEPROM.commit();
// Speichern mit NVS
preferences.begin(NVS_NAMESPACE, false); // false = readwrite
preferences.putLong(NVS_KEY_CALIBRATION, newCalibrationValue);
preferences.end();
EEPROM.get(calVal_eepromAdress, newCalibrationValue);
//newCalibrationValue = EEPROM.read(calVal_eepromAdress);
// Verifizieren
preferences.begin(NVS_NAMESPACE, true);
long verifyValue = preferences.getLong(NVS_KEY_CALIBRATION, 0);
preferences.end();
Serial.print("Read Value ");
Serial.println(newCalibrationValue);
Serial.print("Verified stored value: ");
Serial.println(verifyValue);
Serial.println("End calibration, revome weight");

View File

@ -15,4 +15,6 @@ extern uint8_t weigthCouterToApi;
extern uint8_t scale_tare_counter;
extern uint8_t pauseMainTask;
extern TaskHandle_t ScaleTask;
#endif

View File

@ -3,14 +3,19 @@
#include "api.h"
#include <ArduinoJson.h>
#include <ESPAsyncWebServer.h>
//#include <AsyncWebSocket.h>
#include "bambu.h"
#include "nfc.h"
#include "scale.h"
#include "esp_task_wdt.h"
#include <Update.h>
#include "display.h"
#ifndef VERSION
#define VERSION "1.1.0"
#endif
// Cache-Control Header definieren
#define CACHE_CONTROL "max-age=31536000" // Cache für 1 Jahr
#define CACHE_CONTROL "max-age=604800" // Cache für 1 Woche
AsyncWebServer server(webserverPort);
AsyncWebSocket ws("/ws");
@ -28,6 +33,10 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
sendWriteResult(client, 3);
} else if (type == WS_EVT_DISCONNECT) {
Serial.println("Client getrennt.");
} else if (type == WS_EVT_ERROR) {
Serial.printf("WebSocket Client #%u error(%u): %s\n", client->id(), *((uint16_t*)arg), (char*)data);
} else if (type == WS_EVT_PONG) {
Serial.printf("WebSocket Client #%u pong\n", client->id());
} else if (type == WS_EVT_DATA) {
String message = String((char*)data);
JsonDocument doc;
@ -44,7 +53,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
}
else if (doc["type"] == "writeNfcTag") {
if (doc.containsKey("payload")) {
if (doc["payload"].is<String>()) {
// Versuche NFC-Daten zu schreiben
String payloadString;
serializeJson(doc["payload"], payloadString);
@ -151,11 +160,22 @@ void sendNfcData(AsyncWebSocketClient *client) {
void sendAmsData(AsyncWebSocketClient *client) {
if (ams_count > 0) {
ws.textAll("{\"type\":\"amsData\", \"payload\":" + amsJsonData + "}");
ws.textAll("{\"type\":\"amsData\",\"payload\":" + amsJsonData + "}");
}
}
void setupWebserver(AsyncWebServer &server) {
// Deaktiviere alle Debug-Ausgaben
Serial.setDebugOutput(false);
// WebSocket-Optimierungen
ws.onEvent(onWsEvent);
ws.enable(true);
// Konfiguriere Server für große Uploads
server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total){});
server.onFileUpload([](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){});
// Lade die Spoolman-URL beim Booten
spoolmanUrl = loadSpoolmanUrl();
Serial.print("Geladene Spoolman-URL: ");
@ -164,7 +184,7 @@ void setupWebserver(AsyncWebServer &server) {
// Route für about
server.on("/about", HTTP_GET, [](AsyncWebServerRequest *request){
Serial.println("Anfrage für /about erhalten");
AsyncWebServerResponse *response = request->beginResponse(SPIFFS, "/about.html.gz", "text/html");
AsyncWebServerResponse *response = request->beginResponse(SPIFFS, "/index.html.gz", "text/html");
response->addHeader("Content-Encoding", "gzip");
response->addHeader("Cache-Control", CACHE_CONTROL);
request->send(response);
@ -222,7 +242,7 @@ void setupWebserver(AsyncWebServer &server) {
html.replace("{{spoolmanUrl}}", spoolmanUrl);
JsonDocument doc;
if (loadJsonValue("/bambu_credentials.json", doc) && doc.containsKey("bambu_ip")) {
if (loadJsonValue("/bambu_credentials.json", doc) && doc["bambu_ip"].is<String>()) {
String bambuIp = doc["bambu_ip"].as<String>();
String bambuSerial = doc["bambu_serialnr"].as<String>();
String bambuCode = doc["bambu_accesscode"].as<String>();
@ -337,7 +357,114 @@ void setupWebserver(AsyncWebServer &server) {
request->send(response);
Serial.println("RFID.js gesendet");
});
// Vereinfachter Update-Handler
server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest *request) {
AsyncWebServerResponse *response = request->beginResponse(SPIFFS, "/upgrade.html.gz", "text/html");
response->addHeader("Content-Encoding", "gzip");
response->addHeader("Cache-Control", "no-store");
request->send(response);
});
// Update-Handler mit verbesserter Fehlerbehandlung
server.on("/update", HTTP_POST,
[](AsyncWebServerRequest *request) {
// Nach Update-Abschluss
bool success = !Update.hasError();
String message = success ? "Update successful" : String("Update failed: ") + Update.errorString();
AsyncWebServerResponse *response = request->beginResponse(
success ? 200 : 400,
"application/json",
"{\"success\":" + String(success ? "true" : "false") + ",\"message\":\"" + message + "\"}"
);
response->addHeader("Connection", "close");
request->send(response);
if (success) {
oledShowMessage("Upgrade successful Rebooting");
delay(500);
ESP.restart();
}
else {
oledShowMessage("Upgrade failed");
}
},
[](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final) {
static size_t updateSize = 0;
static int command = 0;
//oledShowMessage("Upgrade please wait");
if (!index) {
updateSize = request->contentLength();
command = (filename.indexOf("website") > -1) ? U_SPIFFS : U_FLASH;
if (command == U_SPIFFS) {
oledShowMessage("SPIFFS Update...");
backupJsonConfigs();
// SPIFFS update with pure binary data
if (!Update.begin((updateSize - 4), command)) { // Exclude header size
restoreJsonConfigs();
String errorMsg = String("Update begin failed: ") + Update.errorString();
request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}");
return;
}
// Skip initial header completely for SPIFFS update
if (index == 0 && len >= 4) {
data += 4;
len -= 4;
updateSize -= 4;
}
} else {
oledShowMessage("Firmware Update...");
if (!Update.begin(updateSize, command)) {
String errorMsg = String("Update begin failed: ") + Update.errorString();
request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}");
return;
}
}
}
if (len) {
if (Update.write(data, len) != len) {
if (command == U_SPIFFS) {
restoreJsonConfigs();
}
String errorMsg = String("Write failed: ") + Update.errorString();
request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}");
return;
}
// Update OLED Display alle 25%
static int lastProgress = -1;
int currentProgress = (index + len) * 100 / updateSize;
if (currentProgress % 25 == 0 && currentProgress != lastProgress) {
lastProgress = currentProgress;
oledShowMessage(String(currentProgress) + "% complete");
}
}
if (final) {
if (!Update.end(true)) {
if (command == U_SPIFFS) {
restoreJsonConfigs();
}
String errorMsg = String("Update end failed: ") + Update.errorString();
request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}");
return;
}
}
}
);
server.on("/api/version", HTTP_GET, [](AsyncWebServerRequest *request){
String fm_version = VERSION;
String jsonResponse = "{\"version\": \""+ fm_version +"\"}";
request->send(200, "application/json", jsonResponse);
});
// Fehlerbehandlung für nicht gefundene Seiten
server.onNotFound([](AsyncWebServerRequest *request){
Serial.print("404 - Nicht gefunden: ");
@ -354,3 +481,26 @@ void setupWebserver(AsyncWebServer &server) {
server.begin();
Serial.println("Webserver gestartet");
}
void backupJsonConfigs() {
const char* configs[] = {"/bambu_credentials.json", "/spoolman_url.json"};
for (const char* config : configs) {
if (SPIFFS.exists(config)) {
String backupPath = String(config) + ".bak";
SPIFFS.remove(backupPath);
SPIFFS.rename(config, backupPath);
}
}
}
void restoreJsonConfigs() {
const char* configs[] = {"/bambu_credentials.json", "/spoolman_url.json"};
for (const char* config : configs) {
String backupPath = String(config) + ".bak";
if (SPIFFS.exists(backupPath)) {
SPIFFS.remove(config);
SPIFFS.rename(backupPath, config);
}
}
}

View File

@ -6,8 +6,8 @@
#include "commonFS.h"
#include "api.h"
#include <ArduinoJson.h>
#include <ESPAsyncWebServer.h>
#include <AsyncWebSocket.h>
#include <Update.h>
#include <AsyncTCP.h>
#include "bambu.h"
#include "nfc.h"
#include "scale.h"
@ -17,10 +17,20 @@ extern String spoolmanUrl;
extern AsyncWebServer server;
extern AsyncWebSocket ws;
// Server-Initialisierung und Handler
void initWebServer();
void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final);
void handleBody(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total);
void setupWebserver(AsyncWebServer &server);
// WebSocket-Funktionen
void sendAmsData(AsyncWebSocketClient *client);
void sendNfcData(AsyncWebSocketClient *client);
void foundNfcTag(AsyncWebSocketClient *client, uint8_t success);
void sendWriteResult(AsyncWebSocketClient *client, uint8_t success);
// Upgrade-Funktionen
void backupJsonConfigs();
void restoreJsonConfigs();
#endif

55
src/wlan.cpp Normal file
View File

@ -0,0 +1,55 @@
#include <Arduino.h>
#include "wlan.h"
#include <WiFi.h>
#include <esp_wifi.h>
#include <WiFiManager.h>
#include "display.h"
#include "config.h"
WiFiManager wm;
bool wm_nonblocking = false;
void initWiFi() {
// Optimierte WiFi-Einstellungen
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
WiFi.setSleep(false); // disable sleep mode
esp_wifi_set_ps(WIFI_PS_NONE);
// Maximale Sendeleistung
WiFi.setTxPower(WIFI_POWER_19_5dBm); // Set maximum transmit power
// Optimiere TCP/IP Stack
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
// Aktiviere WiFi-Roaming für bessere Stabilität
esp_wifi_set_rssi_threshold(-80);
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
oledShowTopRow();
oledShowMessage("WiFi Setup");
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
res = wm.autoConnect("FilaMan"); // anonymous ap
// res = wm.autoConnect("spoolman","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect or hit timeout");
// ESP.restart();
oledShowTopRow();
oledShowMessage("WiFi not connected Check Portal");
}
else {
wifiOn = true;
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
oledShowTopRow();
display.display();
}
}

8
src/wlan.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef WLAN_H
#define WLAN_H
#include <Arduino.h>
void initWiFi();
#endif