@alteriom/painlessmesh 1.8.14 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/BRIDGE_TO_INTERNET.md +229 -0
  2. package/CHANGELOG.md +89 -1
  3. package/CONTRIBUTING.md +79 -0
  4. package/README.md +70 -143
  5. package/docs/README.md +1 -0
  6. package/docs/api/shared-gateway.md +1207 -0
  7. package/docs/troubleshooting/common-issues.md +28 -0
  8. package/docs/troubleshooting/faq.md +113 -12
  9. package/examples/basic/test/simulator/CMakeLists.txt +40 -0
  10. package/examples/basic/test/simulator/README.md +149 -0
  11. package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
  12. package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
  13. package/examples/bridge/bridge.ino +17 -4
  14. package/examples/bridge_failover/README.md +81 -0
  15. package/examples/bridge_failover/bridge_failover.ino +51 -6
  16. package/examples/sharedGateway/README.md +235 -0
  17. package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
  18. package/examples/sharedGateway/sharedGateway.ino +303 -0
  19. package/library.json +3 -22
  20. package/library.properties +1 -1
  21. package/package.json +3 -3
  22. package/src/arduino/wifi.hpp +380 -13
  23. package/src/painlessmesh/gateway.hpp +2120 -0
  24. package/src/painlessmesh/mesh.hpp +1034 -6
  25. package/src/painlessmesh/message_tracker.hpp +311 -0
  26. package/src/painlessmesh/protocol.hpp +6 -0
  27. package/DOCUMENTATION_INDEX.md +0 -146
  28. package/docs/API_DESIGN_GUIDELINES.md +0 -414
  29. package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
  30. package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
  31. package/docs/BRIDGE_FAILOVER.md +0 -512
  32. package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
  33. package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
  34. package/docs/CREATE_MISSING_RELEASES.md +0 -321
  35. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
  36. package/docs/FAQ_VERSION_NUMBERS.md +0 -152
  37. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
  38. package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
  39. package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
  40. package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
  41. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
  42. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
  43. package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
  44. package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
  45. package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
  46. package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
  47. package/docs/PHASE1_GUIDE.md +0 -349
  48. package/docs/PHASE2_GUIDE.md +0 -543
  49. package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
  50. package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
  51. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
  52. package/docs/VERSION_MANAGEMENT.md +0 -213
  53. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
  54. package/docs/archive/FEATURE_PROPOSALS.md +0 -337
  55. package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
  56. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
  57. package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
  58. package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
  59. package/docs/archive/RELEASE_SUMMARY.md +0 -173
  60. package/docs/archive/SCONS_BUILD_FIX.md +0 -313
  61. package/docs/archive/TRIGGER_RELEASE.md +0 -280
  62. package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
  63. package/docs/archive/ota-and-status-enhancements.md +0 -911
  64. package/docs/archive/ota-status-architecture-diagrams.md +0 -658
  65. package/docs/archive/ota-status-quick-reference.md +0 -284
  66. package/docs/design/.gitkeep +0 -1
  67. package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
  68. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
  69. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
  70. package/docs/development/DOCKER_TESTING.md +0 -196
  71. package/docs/development/PLATFORMIO_USAGE.md +0 -180
  72. package/docs/development/TESTING_SUMMARY.md +0 -126
  73. package/docs/development/contributing.md +0 -301
  74. package/docs/development/documentation.md +0 -583
  75. package/docs/features/DIAGNOSTICS_API.md +0 -534
  76. package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
  77. package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
  78. package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
  79. package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
  80. package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
  81. package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
  82. package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
  83. package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
  84. package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
  85. package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
  86. package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
  87. package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
  88. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
  89. package/docs/improvements/README.md +0 -212
  90. package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
  91. package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
  92. package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
  93. package/docs/internal/ISSUE_66_STATUS.md +0 -316
  94. package/docs/internal/PR_SUMMARY.md +0 -315
  95. package/docs/internal/REVIEW_SUMMARY.md +0 -332
  96. package/docs/multi-bridge-setup.md +0 -1025
  97. package/docs/platformio-publishing.md +0 -255
  98. package/docs/platformio-setup-summary.md +0 -121
  99. package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
  100. package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
  101. package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
  102. package/docs/releases/FEATURE_HISTORY.md +0 -543
  103. package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
  104. package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
  105. package/docs/releases/PATCH_v1.7.2.md +0 -262
  106. package/docs/releases/PATCH_v1.7.3.md +0 -262
  107. package/docs/releases/PATCH_v1.7.4.md +0 -219
  108. package/docs/releases/PHASE1_SUMMARY.md +0 -246
  109. package/docs/releases/PHASE2_SUMMARY.md +0 -499
  110. package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
  111. package/docs/releases/QUICK_START_RELEASES.md +0 -113
  112. package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
  113. package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
  114. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
  115. package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
  116. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
  117. package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
  118. package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
  119. package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
  120. package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
  121. package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
  122. package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
  123. package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
  124. package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
  125. package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
  126. package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
  127. package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
  128. package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
  129. package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
  130. package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
  131. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
  132. package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
  133. package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
  134. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
  135. package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
  136. package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
  137. package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
  138. package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
  139. package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
  140. package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
  141. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
  142. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
  143. package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
  144. package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
  145. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
  146. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
  147. package/docs/troubleshooting/station-reconnection-issues.md +0 -172
  148. package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
  149. package/docs/wiki/API-Reference.md +0 -246
  150. package/docs/wiki/Complete-Documentation.md +0 -123
  151. package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
  152. package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
  153. package/examples/alteriomImproved/platformio.ini +0 -32
  154. package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
  155. package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
  156. package/examples/alteriomMetricsHealth/platformio.ini +0 -26
  157. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
  158. package/examples/alteriomPhase1/phase1_features.ino +0 -242
  159. package/examples/alteriomPhase1/platformio.ini +0 -26
  160. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
  161. package/examples/alteriomPhase2/phase2_features.ino +0 -186
  162. package/examples/alteriomPhase2/platformio.ini +0 -26
  163. package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
  164. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
  165. package/examples/alteriomSensorNode/platformio.ini +0 -26
  166. package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
  167. package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
  168. package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
  169. package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
  170. package/examples/bridge/mesh_event_publisher.hpp +0 -253
  171. package/examples/bridge/mesh_topology_reporter.hpp +0 -303
  172. package/examples/bridge/mqtt_command_bridge.hpp +0 -459
  173. package/examples/bridge/mqtt_status_bridge.hpp +0 -519
  174. package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
  175. package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
  176. package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
  177. package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
  178. package/examples/diagnosticsExample/platformio.ini +0 -26
  179. package/examples/echoNode/echoNode.ino +0 -33
  180. package/examples/echoNode/platformio.ini +0 -26
  181. package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
  182. package/examples/meshCommandNode/meshCommandNode.ino +0 -265
  183. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
  184. package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
  185. package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
  186. package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
  187. package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
  188. package/examples/mqttCommandBridge/platformio.ini +0 -27
  189. package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
  190. package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
  191. package/examples/mqttStatusBridge/platformio.ini +0 -27
  192. package/examples/mqttTopologyTest/README.md +0 -467
  193. package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
  194. package/examples/mqttTopologyTest/platformio.ini +0 -27
  195. package/examples/multi_bridge/README.md +0 -346
  196. package/examples/multi_bridge/primary_bridge.ino +0 -96
  197. package/examples/multi_bridge/regular_node.ino +0 -141
  198. package/examples/multi_bridge/secondary_bridge.ino +0 -111
  199. package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
  200. package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
  201. package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
  202. package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
  203. package/examples/queued_alarms/README.md +0 -390
  204. package/examples/queued_alarms/queued_alarms.ino +0 -265
  205. package/examples/routing_demo/README.md +0 -172
  206. package/examples/routing_demo/routing_demo.ino +0 -102
  207. package/examples/rtcIntegration/README.md +0 -294
  208. package/examples/rtcIntegration/rtcIntegration.ino +0 -210
@@ -1,229 +0,0 @@
1
- # Arduino IDE Version Detection Issue - Resolution Summary
2
-
3
- ## Issue Summary **[RESOLVED]**
4
-
5
- **Problem**: Arduino IDE does not detect the current library version (1.8.2), shows old version (1.6.1).
6
-
7
- **Root Cause**: The library name in `library.properties` was changed from `Alteriom PainlessMesh` (v1.6.1) to `AlteriomPainlessMesh` (v1.7.0+). Arduino Library Manager requires consistent library names and stopped indexing new releases when the name changed.
8
-
9
- **Impact**: Users could only see and install version 1.6.1 via Arduino IDE Library Manager.
10
-
11
- **Solution**: Reverted library name in `library.properties` back to original format with space: `Alteriom PainlessMesh`
12
-
13
- ## Solution Overview
14
-
15
- This issue has been **RESOLVED**. The library name has been corrected and Arduino Library Manager will resume indexing new releases.
16
-
17
- ### What Has Been Done ✅
18
-
19
- 1. **Identified Root Cause**: Library name changed from `Alteriom PainlessMesh` to `AlteriomPainlessMesh`
20
- 2. **Verified Registration**: Confirmed library is already in arduino/library-registry
21
- 3. **Fixed Library Name**: Reverted `library.properties` to use original name with space
22
- 4. **Verified Compliance**: All Arduino Library Manager requirements are met
23
- 5. **Updated Documentation**: Comprehensive explanation and validation tools
24
- 6. **No Manual Action Required**: Arduino will automatically index new releases
25
-
26
- ## What Happens Next (Automatic)
27
-
28
- **Arduino Library Manager will automatically index the next release:**
29
-
30
- ### Step-by-Step Submission Process
31
-
32
- 1. **Open Browser** → https://github.com/arduino/library-registry
33
- 2. **Click "Issues"** → "New Issue"
34
- 3. **Copy Template** from `.github/ARDUINO_LIBRARY_REGISTRY_SUBMISSION.md`
35
- 4. **Paste and Submit** the issue
36
- 5. **Wait for Review** (1-2 weeks typical)
37
- 6. **Verify Registration** in Arduino IDE
38
-
39
- ### Quick Submission
40
-
41
- Use this command to view the submission template:
42
-
43
- ```bash
44
- cat .github/ARDUINO_LIBRARY_REGISTRY_SUBMISSION.md
45
- ```
46
-
47
- Then copy the entire content and create an issue at https://github.com/arduino/library-registry
48
-
49
- ## What Happens After Submission
50
-
51
- ### Immediate (Upon Approval)
52
- - ✅ Library appears in Arduino IDE Library Manager
53
- - ✅ Users can search for "AlteriomPainlessMesh"
54
- - ✅ One-click installation available
55
- - ✅ Version 1.8.2 (and all future releases) automatically indexed
56
-
57
- ### Future Releases
58
- - **Automatic**: Arduino Library Manager checks for updates every 24-48 hours
59
- - **No Manual Work**: Just create GitHub releases with proper version tags
60
- - **Seamless Updates**: Users see "Update" button in Library Manager
61
-
62
- ## Files Created
63
-
64
- ### Documentation
65
- 1. **`docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md`** (10KB)
66
- - Complete submission guide
67
- - Pre-submission checklist
68
- - Testing procedures
69
- - Troubleshooting guide
70
- - Post-registration maintenance
71
-
72
- 2. **`.github/ARDUINO_LIBRARY_REGISTRY_SUBMISSION.md`** (5KB)
73
- - Ready-to-use submission template
74
- - Includes all library features
75
- - Highlights compliance status
76
- - Lists all dependencies
77
-
78
- ### Tools
79
- 3. **`scripts/validate-arduino-compliance.sh`**
80
- - Automated compliance checker
81
- - Validates all requirements
82
- - Checks version consistency
83
- - Verifies file structure
84
- - **Current Status**: ✅ All checks passing
85
-
86
- ### Updated Documentation
87
- 4. **`RELEASE_GUIDE.md`**
88
- - Added Arduino Library Manager section
89
- - Prominent registration warning
90
- - Detailed submission instructions
91
-
92
- 5. **`README.md`**
93
- - Updated installation section
94
- - Added registration status
95
- - Provided temporary workarounds
96
-
97
- ## Current Workarounds for Users
98
-
99
- Until registration is complete, users can install the library via:
100
-
101
- ### Option 1: PlatformIO (Recommended)
102
- ```ini
103
- [env:esp32dev]
104
- lib_deps = alteriom/AlteriomPainlessMesh@^1.8.2
105
- ```
106
-
107
- ### Option 2: Manual ZIP Installation
108
- 1. Download from https://github.com/Alteriom/painlessMesh/releases/latest
109
- 2. Arduino IDE → Sketch → Include Library → Add .ZIP Library
110
- 3. Select downloaded ZIP file
111
-
112
- ### Option 3: Git Clone
113
- ```bash
114
- cd ~/Arduino/libraries/
115
- git clone https://github.com/Alteriom/painlessMesh.git AlteriomPainlessMesh
116
- ```
117
-
118
- ### Option 4: NPM (for Node.js projects)
119
- ```bash
120
- npm install @alteriom/painlessmesh
121
- ```
122
-
123
- ## Validation Results
124
-
125
- All Arduino Library Manager requirements verified:
126
-
127
- ```
128
- ✓ library.properties exists and is properly formatted
129
- ✓ Version field set to 1.8.2
130
- ✓ src/ directory with header files
131
- ✓ examples/ directory with 29 examples
132
- ✓ LICENSE file (LGPL-3.0)
133
- ✓ README.md with comprehensive documentation
134
- ✓ Git tags properly formatted (v1.8.2)
135
- ✓ Version consistency across all files
136
- ✓ Dependencies properly declared
137
- ✓ keywords.txt present
138
- ```
139
-
140
- Run validation: `./scripts/validate-arduino-compliance.sh`
141
-
142
- ## Expected Timeline
143
-
144
- | Phase | Duration | Status |
145
- |-------|----------|--------|
146
- | Documentation & Validation | Complete | ✅ Done |
147
- | Submission Creation | 5 minutes | ⏳ Pending |
148
- | Arduino Team Review | 1-2 weeks | ⏳ Awaiting submission |
149
- | Indexing & Availability | 24-48 hours | ⏳ After approval |
150
-
151
- ## Benefits of Registration
152
-
153
- ### For Users
154
- - ✅ One-click installation via Arduino IDE
155
- - ✅ Automatic update notifications
156
- - ✅ Version selection in Library Manager
157
- - ✅ Integration with Arduino's ecosystem
158
-
159
- ### For Maintainers
160
- - ✅ Wider user reach
161
- - ✅ Automatic version indexing
162
- - ✅ Reduced support burden
163
- - ✅ Professional credibility
164
-
165
- ## Support Resources
166
-
167
- ### Documentation Files
168
- - **Submission Guide**: `docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md`
169
- - **Submission Template**: `.github/ARDUINO_LIBRARY_REGISTRY_SUBMISSION.md`
170
- - **Release Guide**: `RELEASE_GUIDE.md`
171
- - **Validation Script**: `scripts/validate-arduino-compliance.sh`
172
-
173
- ### External Resources
174
- - **Arduino Library Registry**: https://github.com/arduino/library-registry
175
- - **Submission Guidelines**: https://support.arduino.cc/hc/en-us/articles/360012175419
176
- - **Library Specification**: https://arduino.github.io/arduino-cli/latest/library-specification/
177
-
178
- ### Getting Help
179
- - **Issues**: https://github.com/Alteriom/painlessMesh/issues
180
- - **Discussions**: https://github.com/Alteriom/painlessMesh/discussions
181
- - **Arduino Forum**: https://forum.arduino.cc/c/using-arduino/libraries/67
182
-
183
- ## Frequently Asked Questions
184
-
185
- ### Q: Why isn't this automatic?
186
- **A**: Arduino Library Manager requires one-time manual submission to their registry repository. After approval, all future releases are automatically indexed.
187
-
188
- ### Q: How long does approval take?
189
- **A**: Typically 1-2 weeks, but can vary depending on the Arduino team's review queue.
190
-
191
- ### Q: Will this break existing users?
192
- **A**: No. Users already using PlatformIO, manual installation, or NPM will continue working. This only adds Arduino IDE support.
193
-
194
- ### Q: What if the submission is rejected?
195
- **A**: Unlikely, as all requirements are met. If issues are found, the Arduino team will provide feedback to address them.
196
-
197
- ### Q: Do we need to update library.properties?
198
- **A**: No. The current library.properties is compliant and ready for submission.
199
-
200
- ## Next Steps Summary
201
-
202
- **For Repository Maintainer:**
203
- 1. Review `.github/ARDUINO_LIBRARY_REGISTRY_SUBMISSION.md`
204
- 2. Create issue at https://github.com/arduino/library-registry
205
- 3. Monitor issue for Arduino team feedback
206
- 4. Verify library appears in Arduino IDE after approval
207
-
208
- **For Users (Current):**
209
- - Use PlatformIO, manual ZIP, or git clone installation
210
- - All features and updates available via these methods
211
- - Arduino IDE support coming after registration
212
-
213
- **For Future:**
214
- - After registration, Arduino IDE installation works automatically
215
- - No additional work needed for future releases
216
- - Semantic version tags automatically indexed
217
-
218
- ---
219
-
220
- ## Summary
221
-
222
- ✅ **Problem Identified**: Library not in Arduino Library Manager registry
223
- ✅ **Solution Prepared**: Documentation and submission template ready
224
- ✅ **Requirements Met**: All compliance checks passing
225
- ✅ **Action Required**: One-time manual submission by maintainer
226
- ✅ **Workarounds Available**: PlatformIO, ZIP, git clone all functional
227
- ✅ **Future Automatic**: After registration, all releases auto-indexed
228
-
229
- **Estimated Resolution**: 1-3 weeks after submission
@@ -1,197 +0,0 @@
1
- # Arduino Library Manager - Library Name Fix
2
-
3
- ## Issue Resolution Summary
4
-
5
- **Date**: November 11, 2025
6
- **Issue**: Arduino IDE showing version 1.6.1 instead of current version 1.8.2
7
- **Status**: ✅ **RESOLVED**
8
-
9
- ## Problem Analysis
10
-
11
- ### Initial Diagnosis (Incorrect)
12
- Initially believed the library was not registered in Arduino Library Manager.
13
-
14
- ### Actual Root Cause (Correct)
15
- The library IS registered, but the library name changed between releases:
16
-
17
- | Version | Library Name | Arduino Indexing |
18
- |---------|-------------|------------------|
19
- | v1.6.1 (Sept 2025) | `Alteriom PainlessMesh` | ✅ Indexed |
20
- | v1.7.0 - v1.8.2 | `AlteriomPainlessMesh` | ❌ Not indexed |
21
-
22
- **Arduino Library Manager Requirement**: Library names must remain consistent after registration.
23
-
24
- When the name changed from `Alteriom PainlessMesh` (with space) to `AlteriomPainlessMesh` (no space), the Arduino indexer stopped recognizing new releases as updates to the registered library.
25
-
26
- ## Solution Applied
27
-
28
- ### Change Made
29
- Restored the library name in `library.properties` to match the original registration:
30
-
31
- ```diff
32
- - name=AlteriomPainlessMesh
33
- + name=Alteriom PainlessMesh
34
- ```
35
-
36
- ### Verification
37
- ```bash
38
- # v1.6.1 (last indexed version)
39
- name=Alteriom PainlessMesh
40
-
41
- # Current (fixed)
42
- name=Alteriom PainlessMesh
43
-
44
- # Result: ✓ Names match
45
- ```
46
-
47
- ## Impact & Timeline
48
-
49
- ### Immediate
50
- - ✅ Library name corrected in repository
51
- - ✅ Validation script updated to detect this issue
52
- - ✅ Documentation updated with correct information
53
-
54
- ### Next 24-48 Hours
55
- - Arduino Library Manager will detect next release (v1.8.3 or v1.9.0)
56
- - New version will appear in Arduino IDE Library Manager
57
- - Users will see update notification
58
-
59
- ### Going Forward
60
- - All future releases will be automatically indexed
61
- - No manual intervention required
62
- - Library Manager will show latest versions within 24-48 hours of each GitHub release
63
-
64
- ## Technical Details
65
-
66
- ### Arduino Library Registry Status
67
- - **Registered**: ✅ Yes
68
- - **Repository URL**: https://github.com/Alteriom/painlessMesh
69
- - **Registry Entry**: https://github.com/arduino/library-registry (repositories.txt)
70
- - **Original Registration Name**: `Alteriom PainlessMesh`
71
-
72
- ### How Arduino Library Manager Works
73
- 1. Library is registered once in arduino/library-registry
74
- 2. Arduino indexer checks registered repositories for new releases every 24-48 hours
75
- 3. For each new release tag, indexer reads `library.properties`
76
- 4. **Critical**: Library name in `library.properties` must match original registration
77
- 5. If name matches, new version is added to index
78
- 6. If name doesn't match, release is ignored
79
-
80
- ### Why Name Changed
81
- Between v1.6.1 and v1.7.0, the library name was changed (likely to remove the space for URL compatibility). However, this broke Arduino Library Manager indexing.
82
-
83
- ### Versions Affected
84
- **Not Indexed** (due to name mismatch):
85
- - v1.7.0, v1.7.1, v1.7.2, v1.7.3, v1.7.4, v1.7.5, v1.7.6, v1.7.7, v1.7.8, v1.7.9
86
- - v1.8.0, v1.8.1, v1.8.2
87
-
88
- **Will Be Indexed** (after fix):
89
- - v1.8.3+ (any future releases with corrected name)
90
-
91
- ## What Users Will See
92
-
93
- ### Before Fix
94
- ```
95
- Arduino IDE Library Manager:
96
- ┌─────────────────────────────────┐
97
- │ Alteriom PainlessMesh │
98
- │ Version: 1.6.1 │
99
- │ [Installed] │
100
- └─────────────────────────────────┘
101
- ```
102
-
103
- ### After Fix (24-48 hours after v1.8.3 release)
104
- ```
105
- Arduino IDE Library Manager:
106
- ┌─────────────────────────────────┐
107
- │ Alteriom PainlessMesh │
108
- │ Version: 1.8.3 (Update available)│
109
- │ [Update] │
110
- └─────────────────────────────────┘
111
- ```
112
-
113
- ## Validation
114
-
115
- ### Automated Check
116
- Run the validation script to confirm library name is correct:
117
-
118
- ```bash
119
- ./scripts/validate-arduino-compliance.sh
120
- ```
121
-
122
- Expected output:
123
- ```
124
- Checking library name format... ✓ CORRECT (name='Alteriom PainlessMesh')
125
- ```
126
-
127
- ### Manual Verification
128
- Compare current name with v1.6.1:
129
-
130
- ```bash
131
- # Current
132
- grep "^name=" library.properties
133
- # Output: name=Alteriom PainlessMesh
134
-
135
- # v1.6.1 (last indexed)
136
- curl -s "https://raw.githubusercontent.com/Alteriom/painlessMesh/v1.6.1/library.properties" | grep "^name="
137
- # Output: name=Alteriom PainlessMesh
138
-
139
- # They should match ✓
140
- ```
141
-
142
- ## Lessons Learned
143
-
144
- ### For Library Maintainers
145
- 1. **Never change library name** after Arduino Library Manager registration
146
- 2. Library name must remain exactly the same (including spaces, capitalization)
147
- 3. Use validation scripts to catch name changes before release
148
- 4. Check Arduino Library Manager indexing after each release
149
-
150
- ### For This Repository
151
- 1. Added library name validation to compliance script
152
- 2. Documented the requirement clearly in release guide
153
- 3. This issue is now prevented by automated checks
154
-
155
- ## Related Files
156
-
157
- ### Modified Files (Commit 5065fa5)
158
- - `library.properties` - Restored correct library name
159
- - `docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md` - Updated with resolution
160
- - `README.md` - Fixed status and explanation
161
- - `RELEASE_GUIDE.md` - Corrected registration information
162
- - `ARDUINO_IDE_VERSION_FIX_SUMMARY.md` - Updated resolution details
163
- - `scripts/validate-arduino-compliance.sh` - Added name consistency check
164
-
165
- ### Documentation
166
- - `docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md` - Complete guide
167
- - `ARDUINO_IDE_VERSION_FIX_SUMMARY.md` - Issue summary
168
- - This file - Detailed resolution documentation
169
-
170
- ## References
171
-
172
- ### Arduino Documentation
173
- - [Arduino Library Manager FAQ](https://github.com/arduino/library-registry/blob/main/FAQ.md)
174
- - [Library Specification](https://arduino.github.io/arduino-cli/latest/library-specification/)
175
- - [Why libraries aren't updated](https://github.com/arduino/library-registry/issues/1002)
176
-
177
- ### Repository Links
178
- - [Arduino Library Registry](https://github.com/arduino/library-registry)
179
- - [Library Registry repositories.txt](https://github.com/arduino/library-registry/blob/main/repositories.txt)
180
- - [This Repository](https://github.com/Alteriom/painlessMesh)
181
-
182
- ## Credits
183
-
184
- **Issue Identified By**: @sparck75
185
- **Resolution**: GitHub Copilot
186
- **Date**: November 11, 2025
187
- **Commit**: 5065fa5
188
-
189
- ---
190
-
191
- ## Summary
192
-
193
- ✅ **Issue**: Library name changed, breaking Arduino indexing
194
- ✅ **Fix**: Restored original name with space
195
- ✅ **Result**: Automatic indexing will resume with next release
196
- ✅ **Timeline**: 24-48 hours after v1.8.3+ release
197
- ✅ **Prevention**: Validation script now checks library name
@@ -1,93 +0,0 @@
1
- # 🚨 MESH CONNECTION CRASH - QUICK REFERENCE
2
-
3
- **Issue:** `assert failed: vTaskPriorityDisinheritAfterTimeout`
4
- **When:** Sensor nodes connect to mesh
5
- **Platform:** ESP32 only
6
- **Cause:** painlessMesh library (NOT Build 8015)
7
-
8
- ---
9
-
10
- ## ⚡ FASTEST FIX (5 min)
11
-
12
- **File:** `src/painlessmesh/mesh.hpp` **Line 544**
13
-
14
- ```cpp
15
- // CHANGE THIS:
16
- return xSemaphoreTake(xSemaphore, (TickType_t)10) == pdTRUE;
17
-
18
- // TO THIS:
19
- return xSemaphoreTake(xSemaphore, (TickType_t)100) == pdTRUE;
20
- ```
21
-
22
- **Then:** `pio run -t upload`
23
-
24
- ---
25
-
26
- ## 🛡️ PRODUCTION FIX (10 min)
27
-
28
- **1. Create:** `src/painlessTaskOptions.h`
29
- ```cpp
30
- #ifndef _PAINLESS_TASK_OPTIONS_H_
31
- #define _PAINLESS_TASK_OPTIONS_H_
32
-
33
- #ifdef ESP32
34
- #define _TASK_THREAD_SAFE
35
- #define _TASK_PRIORITY
36
- #endif
37
-
38
- #endif
39
- ```
40
-
41
- **2. In your sketch BEFORE** `#include <painlessMesh.h>`:
42
- ```cpp
43
- #include "painlessTaskOptions.h"
44
- ```
45
-
46
- **3. Rebuild:** `pio run -t upload`
47
-
48
- ---
49
-
50
- ## 📊 MONITORING CODE
51
-
52
- Add to `setup()`:
53
- ```cpp
54
- mesh.setDebugMsgTypes(ERROR | STARTUP | CONNECTION);
55
-
56
- mesh.onNewConnection([](uint32_t nodeId) {
57
- Serial.printf("Node %u: Heap=%d Stack=%d\n",
58
- nodeId, ESP.getFreeHeap(),
59
- uxTaskGetStackHighWaterMark(NULL));
60
- });
61
- ```
62
-
63
- ---
64
-
65
- ## ✅ TEST CHECKLIST
66
-
67
- - [ ] Single node connects without crash
68
- - [ ] 5 nodes connect simultaneously
69
- - [ ] Rapid connect/disconnect cycles (10x)
70
- - [ ] 1+ hour sustained operation
71
- - [ ] Heap remains stable (check every 30 sec)
72
-
73
- ---
74
-
75
- ## 📚 FULL DOCS
76
-
77
- - `docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md` - Action plan
78
- - `docs/troubleshooting/QUICK_FIX_FREERTOS.md` - Emergency fixes
79
- - `docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md` - Technical details
80
-
81
- ---
82
-
83
- ## 🎯 KEY POINTS
84
-
85
- ✅ **Apply fix BEFORE testing Build 8015**
86
- ✅ **This is separate from Phase 2 changes**
87
- ✅ **Known library issue - not your code**
88
- ✅ **Choose Option A for speed, Option B for production**
89
-
90
- ---
91
-
92
- **Last Updated:** 2025-10-19
93
- **Status:** 🟡 Workaround available, library fix pending
@@ -1,157 +0,0 @@
1
- # ESP32-C6 Compatibility Guide
2
-
3
- ## Overview
4
-
5
- ESP32-C6 is a newer ESP32 variant that requires updated dependencies to work correctly with painlessMesh. This guide addresses common issues and solutions for using painlessMesh on ESP32-C6.
6
-
7
- ## Known Issue: TCP Allocation Crash
8
-
9
- ### Symptom
10
-
11
- The device crashes on startup or during mesh initialization with the following error:
12
-
13
- ```
14
- assert failed: tcp_alloc /IDF/components/lwip/lwip/src/core/tcp.c:1854 (Required to lock TCPIP core functionality!)
15
- ```
16
-
17
- The device enters an endless reboot loop, preventing normal mesh operation.
18
-
19
- ### Root Cause
20
-
21
- This issue is caused by incompatibility between:
22
- - ESP32-C6 hardware
23
- - Arduino ESP32 core v3.1.0 or later
24
- - Older versions of the AsyncTCP library
25
-
26
- The newer ESP32 Arduino core enforces stricter LWIP (Lightweight IP) thread safety requirements. Operations that modify TCP/IP data structures must now be protected with proper mutex locking. Older AsyncTCP versions (< v3.3.0) do not implement this locking, causing runtime assertions and crashes.
27
-
28
- ### Solution
29
-
30
- #### Option 1: Update AsyncTCP Library (Recommended)
31
-
32
- Use the latest version of AsyncTCP that includes proper LWIP locking:
33
-
34
- **For PlatformIO:**
35
-
36
- Update your `platformio.ini`:
37
-
38
- ```ini
39
- [env:esp32c6]
40
- platform = espressif32
41
- board = esp32-c6-devkitc-1 ; or your specific board
42
- framework = arduino
43
-
44
- lib_deps =
45
- https://github.com/Alteriom/painlessMesh.git
46
- esp32async/AsyncTCP @ ^3.4.7 ; Use latest version with LWIP locking
47
- bblanchon/ArduinoJson @ ^7.4.2
48
- arkhipenko/TaskScheduler @ ^4.0.0
49
- ```
50
-
51
- **For Arduino IDE:**
52
-
53
- 1. Remove any existing AsyncTCP library installation
54
- 2. Download the latest AsyncTCP from: https://github.com/ESP32Async/AsyncTCP
55
- 3. Install using "Sketch" → "Include Library" → "Add .ZIP Library"
56
- 4. **Important:** Do not use the Arduino Library Manager for AsyncTCP, as it may install an outdated version
57
-
58
- #### Option 2: Downgrade Arduino Core (Temporary Workaround)
59
-
60
- If you need an immediate solution and cannot update AsyncTCP:
61
-
62
- 1. In Arduino IDE: Tools → Board Manager → ESP32 by Espressif Systems
63
- 2. Install version **3.0.7** instead of 3.1.0+
64
- 3. This is not recommended long-term as you'll miss security updates and new features
65
-
66
- #### Option 3: Use Recommended Build Flags
67
-
68
- Add these configuration options to improve stability (PlatformIO):
69
-
70
- ```ini
71
- build_flags =
72
- -D CONFIG_ASYNC_TCP_MAX_ACK_TIME=5000
73
- -D CONFIG_ASYNC_TCP_PRIORITY=10
74
- -D CONFIG_ASYNC_TCP_QUEUE_SIZE=64
75
- -D CONFIG_ASYNC_TCP_RUNNING_CORE=1
76
- -D CONFIG_ASYNC_TCP_STACK_SIZE=4096
77
- ```
78
-
79
- These flags help maintain proper task scheduling and LWIP event handling.
80
-
81
- ## Verification
82
-
83
- After applying the fix, verify your setup:
84
-
85
- 1. Upload a simple bridge example
86
- 2. Monitor serial output for clean startup
87
- 3. Check for successful mesh initialization without crashes
88
- 4. Verify mesh connectivity with other nodes
89
-
90
- Example verification output:
91
- ```
92
- setLogLevel: ERROR | STARTUP | CONNECTION |
93
- STARTUP: init(): 1
94
- STARTUP: stationManual() Starting WiFi connection
95
- STARTUP: Connection established
96
- STARTUP: IP address: 192.168.1.100
97
- ```
98
-
99
- ## Additional ESP32-C6 Considerations
100
-
101
- ### Hardware-Specific Notes
102
-
103
- - ESP32-C6 uses RISC-V architecture (not Xtensa like older ESP32)
104
- - Built-in WiFi 6 (802.11ax) support - but mesh uses 802.11n
105
- - Lower power consumption compared to ESP32
106
- - Different GPIO pinout - verify your pin assignments
107
-
108
- ### Memory Constraints
109
-
110
- ESP32-C6 typically has:
111
- - 320 KB SRAM
112
- - 4 MB Flash (typical configuration)
113
-
114
- This is adequate for painlessMesh, but be mindful of:
115
- - Maximum node count in mesh (recommend < 20 nodes)
116
- - Message queue sizes
117
- - JSON message complexity
118
-
119
- ### Performance Optimization
120
-
121
- For best results on ESP32-C6:
122
-
123
- 1. **WiFi Channel Selection**: Use channels 1, 6, or 11 for best performance
124
- 2. **Mesh Size**: Keep mesh networks under 15-20 nodes
125
- 3. **Message Frequency**: Avoid sending messages more than once per second per node
126
- 4. **Power Management**: Consider WiFi power save modes for battery operation
127
-
128
- ## Troubleshooting Checklist
129
-
130
- If you're still experiencing issues:
131
-
132
- - [ ] Confirmed AsyncTCP version is 3.3.0 or newer
133
- - [ ] Removed all old AsyncTCP library installations
134
- - [ ] Arduino ESP32 core is 3.0.7 or 3.1.0+ with updated AsyncTCP
135
- - [ ] Verified board definition matches your hardware
136
- - [ ] Checked serial monitor for actual error messages
137
- - [ ] Tested with minimal example (examples/basic/basic.ino)
138
- - [ ] Verified WiFi credentials are correct
139
- - [ ] Confirmed router and mesh use same WiFi channel (for bridge mode)
140
-
141
- ## References
142
-
143
- - [AsyncTCP Library (ESP32Async)](https://github.com/ESP32Async/AsyncTCP)
144
- - [ESP32 Arduino Core Release Notes](https://github.com/espressif/arduino-esp32/releases)
145
- - [painlessMesh GitHub Issues](https://github.com/Alteriom/painlessMesh/issues)
146
-
147
- ## Related Documentation
148
-
149
- - [Common Issues](common-issues.md)
150
- - [FAQ](faq.md)
151
- - [Bridge to Internet Guide](../../BRIDGE_TO_INTERNET.md)
152
- - [Debugging Guide](debugging.md)
153
-
154
- ---
155
-
156
- **Last Updated:** 2025-11-05
157
- **Applies to:** painlessMesh v1.7.8+, ESP32-C6, Arduino ESP32 Core 3.0+