@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,173 +0,0 @@
1
- # Release Summary - Alteriom painlessMesh Library v1.6.0
2
-
3
- ## 🎯 Release Overview
4
-
5
- This release marks the **comprehensive publication setup** of the Alteriom fork of the painlessMesh library. The library has been completely prepared for modern CI/CD workflows, automated releases, and distribution through multiple package managers.
6
-
7
- ## ✨ What's New
8
-
9
- ### 🔧 CI/CD Infrastructure
10
- - **GitHub Actions** for automated build and testing
11
- - **Multi-platform compilation** testing (ESP32, ESP8266)
12
- - **Automated release** generation with changelog integration
13
- - **Library validation** with Arduino Library Manager compliance
14
- - **NPM publication** to both public NPM and GitHub Packages
15
-
16
- ### 📦 Package Management
17
- - **Arduino Library Manager** ready for submission
18
- - **PlatformIO** compatibility with automatic indexing
19
- - **NPM package** configuration for MCP server integration (@alteriom/painlessmesh)
20
- - **GitHub Packages** scoped publishing
21
- - **Semantic versioning** with automated version management
22
-
23
- ### 📚 Enhanced Documentation
24
- - **Comprehensive README** with installation instructions
25
- - **Contributing guidelines** for developers
26
- - **Release guide** for maintainers
27
- - **Changelog** tracking for version history
28
- - **GitHub Wiki** automatic synchronization
29
-
30
- ### 🛠️ Development Tools
31
- - **Version bump scripts** for easy releases
32
- - **Library validation scripts** for quality assurance
33
- - **Multiple build environments** and test suites
34
- - **Keywords.txt** for Arduino IDE syntax highlighting
35
-
36
- ## 🏗️ Technical Improvements
37
-
38
- ### Library Structure
39
- - ✅ **Arduino Library Manager** compliant structure
40
- - ✅ **PlatformIO** multi-environment support
41
- - ✅ **NPM package** configuration with proper scoping
42
- - ✅ **GitHub Packages** publishing setup
43
- - ✅ **Example compilation** verification
44
-
45
- ### Metadata Accuracy
46
- - ✅ **Version consistency** across all files (1.6.0)
47
- - ✅ **Repository URLs** updated to Alteriom fork
48
- - ✅ **Maintainer information** properly attributed
49
- - ✅ **License compliance** maintained (LGPL-3.0)
50
- - ✅ **Keywords and descriptions** optimized
51
-
52
- ### CI/CD Pipeline
53
- - ✅ **Build testing** on multiple platforms
54
- - ✅ **Library format validation**
55
- - ✅ **Automated releases** with GitHub Actions
56
- - ✅ **NPM publishing** to public registry and GitHub Packages
57
- - ✅ **Wiki synchronization** with documentation updates
58
- - ✅ **Release notes** generation from changelog
59
-
60
- ## 🎨 Features Retained
61
-
62
- All original functionality from the upstream library is maintained:
63
-
64
- - **Mesh Networking**: ESP32 and ESP8266 automatic mesh formation
65
- - **JSON Messaging**: Structured communication between nodes
66
- - **Time Synchronization**: Coordinated time across all mesh nodes
67
- - **Task Scheduling**: Built-in task management system
68
- - **Callback System**: Event-driven programming model
69
- - **Node Discovery**: Automatic node detection and routing
70
-
71
- ## 🚀 Alteriom Extensions
72
-
73
- ### Enhanced Packages
74
- - **SensorPackage** (Type 200): Environmental monitoring with temperature, humidity, pressure, battery levels
75
- - **CommandPackage (Type 400): Device control and automation commands
76
- - **StatusPackage** (Type 202): Health monitoring and system status reporting
77
-
78
- ### Additional Features
79
- - **Type-safe serialization**: Automatic JSON conversion with validation
80
- - **Cross-platform compatibility**: TSTRING abstraction for consistent string handling
81
- - **Memory optimization**: Efficient data structures for resource-constrained devices
82
-
83
- ## 📋 Validation Results
84
-
85
- The library passes all validation checks:
86
-
87
- ```
88
- 🔍 Validating Alteriom painlessMesh Library...
89
- ================================================
90
- 📁 All required files present ✅
91
- 🔢 Version consistency across files ✅
92
- 🔗 Repository URLs correct ✅
93
- 📋 Arduino Library Manager compliance ✅
94
- 🏗️ Header file structure valid ✅
95
- 📦 NPM package configuration valid ✅
96
- 🔑 Keywords.txt present for Arduino IDE ✅
97
-
98
- 🎉 SUCCESS: Library validation passed with no issues!
99
- ```
100
-
101
- ## 🚀 Installation Methods
102
-
103
- ### Arduino Library Manager (Recommended)
104
- ```
105
- 1. Open Arduino IDE
106
- 2. Go to Tools → Manage Libraries
107
- 3. Search for "painlessMesh" (author: Alteriom)
108
- 4. Click Install
109
- ```
110
-
111
- ### PlatformIO
112
- ```ini
113
- [env:myproject]
114
- platform = espressif32
115
- board = esp32dev
116
- framework = arduino
117
- lib_deps =
118
- alteriom/painlessMesh@^1.6.0
119
- ```
120
-
121
- ### NPM Package (for MCP/Copilot integration)
122
- ```bash
123
- # Public NPM
124
- npm install @alteriom/painlessmesh
125
-
126
- # GitHub Packages (requires .npmrc configuration)
127
- echo '@alteriom:registry=https://npm.pkg.github.com' >> .npmrc
128
- npm install @alteriom/painlessmesh
129
- ```
130
-
131
- ### Manual Installation
132
- ```bash
133
- git clone https://github.com/Alteriom/painlessMesh.git
134
- # Copy to Arduino libraries folder
135
- ```
136
-
137
- ## 📊 Package Distribution
138
-
139
- The library is now available through multiple channels:
140
-
141
- - **GitHub Releases**: https://github.com/Alteriom/painlessMesh/releases
142
- - **Arduino Library Manager**: Search "painlessMesh" (Alteriom)
143
- - **PlatformIO Registry**: https://registry.platformio.org/libraries/alteriom/painlessMesh
144
- - **NPM Public**: https://www.npmjs.com/package/@alteriom/painlessmesh
145
- - **GitHub Packages**: https://github.com/Alteriom/painlessMesh/packages
146
- - **GitHub Wiki**: https://github.com/Alteriom/painlessMesh/wiki
147
-
148
- ## 🔮 Future Roadmap
149
-
150
- - **v1.6.1**: Bug fixes and minor improvements based on community feedback
151
- - **v1.7.0**: Additional Alteriom packages and enhanced MCP integration
152
- - **v1.8.0**: Performance optimizations and memory usage improvements
153
- - **v2.0.0**: Breaking changes for major improvements (if needed)
154
-
155
- ## 🤝 Community
156
-
157
- - **Repository**: https://github.com/Alteriom/painlessMesh
158
- - **Issues**: Report bugs and request features
159
- - **Discussions**: Community support and questions
160
- - **Contributing**: Follow CONTRIBUTING.md guidelines
161
- - **Wiki**: Comprehensive documentation and examples
162
-
163
- ## 🙏 Acknowledgments
164
-
165
- - **Coopdis** - Original painlessMesh author and creator
166
- - **Original Contributors** - Scotty Franzyshen, Edwin van Leeuwen, Germán Martín, and others
167
- - **Alteriom Team** - Fork enhancements, CI/CD setup, and package management
168
-
169
- ---
170
-
171
- **Ready to use?** Install the library and start building your mesh projects today! 🚀
172
-
173
- For complete setup instructions and examples, visit our [GitHub Wiki](https://github.com/Alteriom/painlessMesh/wiki).
@@ -1,313 +0,0 @@
1
- # PlatformIO SCons Build Error Troubleshooting
2
-
3
- ## Common Error: "UnboundLocalError: local variable 'dir' referenced before assignment"
4
-
5
- This error occurs during PlatformIO's SCons build process when compiling `painlessMeshSTA.cpp` and similar files.
6
-
7
- ---
8
-
9
- ## ✅ FIXES APPLIED TO LIBRARY
10
-
11
- The following fixes have been applied to the **painlessMesh library** itself:
12
-
13
- ### 0. Added Missing Header Include (CRITICAL)
14
- ```cpp
15
- // src/painlessmesh/mesh.hpp
16
- #include <vector> // Required for std::vector usage
17
- ```
18
- **Why:** The mesh.hpp file uses `std::vector` but wasn't including the header, causing compilation errors.
19
-
20
- ### 1. Added Explicit Directory Specifications
21
- ```json
22
- {
23
- "srcDir": "src",
24
- "includeDir": "src"
25
- }
26
- ```
27
- **Why:** Tells PlatformIO exactly where source files are located.
28
-
29
- ### 2. Removed Conflicting Export Settings
30
- **Before:**
31
- ```json
32
- {
33
- "export": {
34
- "include": "src"
35
- }
36
- }
37
- ```
38
-
39
- **After:** (Removed completely)
40
-
41
- **Why:** The `export.include` conflicts with `srcDir` and causes path resolution issues in SCons.
42
-
43
- ### 3. Verified File Locations
44
- - ✅ All `.cpp` files in `src/` directory
45
- - ✅ `painlessMeshSTA.cpp` at `src/painlessMeshSTA.cpp`
46
- - ✅ No source files in root directory
47
- - ✅ No duplicate `library.json` files
48
-
49
- ### 4. Fixed Header References
50
- - ✅ `library.properties` references `painlessMesh.h`
51
- - ✅ Both `painlessMesh.h` and `AlteriomPainlessMesh.h` available
52
-
53
- ---
54
-
55
- ## 🔧 FIXES FOR YOUR PROJECT
56
-
57
- If you're still getting errors, apply these fixes in YOUR project:
58
-
59
- ### Fix 1: Clean Build Cache
60
-
61
- ```bash
62
- # Delete PlatformIO cache
63
- pio run --target clean
64
-
65
- # Or delete manually
66
- rm -rf .pio
67
- rm -rf .pioenvs
68
- rm -rf .piolibdeps
69
- ```
70
-
71
- ### Fix 2: Update Library from GitHub
72
-
73
- Make sure you're pulling the latest fixes:
74
-
75
- ```ini
76
- [env:esp32]
77
- platform = espressif32
78
- board = esp32dev
79
- framework = arduino
80
- lib_deps =
81
- ; Use the LATEST commit with fixes
82
- https://github.com/Alteriom/painlessMesh#copilot/start-phase-2-implementation
83
- ```
84
-
85
- ### Fix 3: Force Library Re-download
86
-
87
- ```bash
88
- # Remove cached library
89
- rm -rf .pio/libdeps/*/AlteriomPainlessMesh
90
-
91
- # Or use PlatformIO's update command
92
- pio pkg update
93
- ```
94
-
95
- ### Fix 4: Verify PlatformIO Version
96
-
97
- ```bash
98
- # Check version
99
- pio --version
100
-
101
- # Update if needed (requires >= 6.0.0)
102
- pip install -U platformio
103
- ```
104
-
105
- ### Fix 5: Check for Conflicting Libraries
106
-
107
- ```bash
108
- # List installed libraries
109
- pio pkg list
110
-
111
- # Remove any duplicate painlessMesh installations
112
- pio pkg uninstall -g painlessMesh
113
- pio pkg uninstall -g AlteriomPainlessMesh
114
- ```
115
-
116
- ---
117
-
118
- ## 🧪 TEST BUILD
119
-
120
- ### Step 1: Create Test Project
121
-
122
- ```bash
123
- mkdir test-painlessmesh
124
- cd test-painlessmesh
125
- pio init --board esp32dev
126
- ```
127
-
128
- ### Step 2: Create platformio.ini
129
-
130
- ```ini
131
- [env:esp32]
132
- platform = espressif32
133
- board = esp32dev
134
- framework = arduino
135
- monitor_speed = 115200
136
-
137
- lib_deps =
138
- https://github.com/Alteriom/painlessMesh#copilot/start-phase-2-implementation
139
- ```
140
-
141
- ### Step 3: Create src/main.cpp
142
-
143
- ```cpp
144
- #include <Arduino.h>
145
- #include <painlessMesh.h>
146
-
147
- Scheduler userScheduler;
148
- painlessMesh mesh;
149
-
150
- void setup() {
151
- Serial.begin(115200);
152
-
153
- mesh.setDebugMsgTypes(ERROR | STARTUP);
154
- mesh.init("TestMesh", "password", &userScheduler, 5555);
155
-
156
- Serial.println("Mesh initialized!");
157
- }
158
-
159
- void loop() {
160
- mesh.update();
161
- }
162
- ```
163
-
164
- ### Step 4: Build
165
-
166
- ```bash
167
- pio run
168
- ```
169
-
170
- **Expected Output:**
171
- ```
172
- Building .pio/build/esp32/src/main.cpp.o
173
- Building .pio/build/esp32/.pio/libdeps/esp32/AlteriomPainlessMesh/...
174
- Linking .pio/build/esp32/firmware.elf
175
- Building .pio/build/esp32/firmware.bin
176
- SUCCESS
177
- ```
178
-
179
- ---
180
-
181
- ## 🚨 IF STILL FAILING
182
-
183
- ### Collect Diagnostic Information
184
-
185
- ```bash
186
- # Get verbose build output
187
- pio run -v > build.log 2>&1
188
-
189
- # Check library structure
190
- cd .pio/libdeps/esp32/AlteriomPainlessMesh
191
- ls -la
192
- cat library.json
193
- ```
194
-
195
- ### Check for These Issues:
196
-
197
- **1. Verify srcDir in downloaded library:**
198
- ```bash
199
- cd .pio/libdeps/esp32/AlteriomPainlessMesh
200
- cat library.json | grep srcDir
201
- # Should show: "srcDir": "src",
202
- ```
203
-
204
- **2. Verify source files exist:**
205
- ```bash
206
- ls -la src/
207
- # Should show: painlessMeshSTA.cpp, scheduler.cpp, wifi.cpp
208
- ```
209
-
210
- **3. Check for duplicate files:**
211
- ```bash
212
- find . -name "painlessMeshSTA.cpp"
213
- # Should only show: ./src/painlessMeshSTA.cpp
214
- ```
215
-
216
- **4. Verify no export.include:**
217
- ```bash
218
- cat library.json | grep export
219
- # Should show: (nothing) or not include "include": "src"
220
- ```
221
-
222
- ---
223
-
224
- ## 📋 CHECKLIST FOR SUCCESSFUL BUILD
225
-
226
- - [ ] PlatformIO version >= 6.0.0
227
- - [ ] Clean build cache (`pio run --target clean`)
228
- - [ ] Remove `.pio` directory
229
- - [ ] Update library.json has `srcDir` and `includeDir`
230
- - [ ] No `export.include` in library.json
231
- - [ ] All `.cpp` files in `src/` directory
232
- - [ ] Force library re-download from GitHub
233
- - [ ] Test with minimal example
234
- - [ ] Check verbose build log for actual error
235
-
236
- ---
237
-
238
- ## 🔍 UNDERSTANDING THE ERROR
239
-
240
- ### What Causes "UnboundLocalError: dir"?
241
-
242
- This error occurs in PlatformIO's SCons build system when:
243
-
244
- 1. **Path resolution fails:** SCons can't determine the source directory
245
- 2. **Conflicting settings:** Multiple directory specifications conflict
246
- 3. **Cache corruption:** Old cached metadata from previous builds
247
- 4. **Missing metadata:** No `srcDir` specified in library.json
248
-
249
- ### The Fix (Applied):
250
-
251
- ```json
252
- {
253
- "name": "AlteriomPainlessMesh",
254
- "srcDir": "src", // ← Explicit source directory
255
- "includeDir": "src" // ← Explicit include directory
256
- // "export": {...} // ← REMOVED (was causing conflicts)
257
- }
258
- ```
259
-
260
- ---
261
-
262
- ## 📞 SUPPORT
263
-
264
- If issues persist after trying all fixes:
265
-
266
- 1. **Check your build log:**
267
- ```bash
268
- pio run -v 2>&1 | tee build-verbose.log
269
- ```
270
-
271
- 2. **Verify library was actually updated:**
272
- ```bash
273
- cd .pio/libdeps/YOUR_ENV/AlteriomPainlessMesh
274
- git log -1 --oneline
275
- # Should show recent commit with fixes
276
- ```
277
-
278
- 3. **Try a completely fresh project:**
279
- - New directory
280
- - Fresh `pio init`
281
- - No existing `.pio` folder
282
- - Copy minimal example above
283
-
284
- 4. **Report issue with:**
285
- - PlatformIO version
286
- - Platform (espressif32/espressif8266)
287
- - Full build log
288
- - Contents of `.pio/libdeps/*/AlteriomPainlessMesh/library.json`
289
-
290
- ---
291
-
292
- ## ✅ VERIFICATION
293
-
294
- After applying fixes, your build should succeed with output like:
295
-
296
- ```
297
- Dependency Graph
298
- |-- AlteriomPainlessMesh @ 1.7.0
299
- | |-- AsyncTCP @ 3.4.7
300
- | |-- ArduinoJson @ 7.4.2
301
- | |-- TaskScheduler @ 4.0.0
302
- | |-- WiFi @ 2.0.0
303
- Building .pio/build/esp32/lib/.../painlessMeshSTA.cpp.o
304
- ...
305
- SUCCESS
306
- ```
307
-
308
- ---
309
-
310
- **Last Updated:** October 15, 2025
311
- **Library Version:** 1.7.0
312
- **Branch:** copilot/start-phase-2-implementation
313
- **Status:** ✅ SCons build issues resolved