@alteriom/painlessmesh 1.8.15 → 1.9.1

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 +101 -1
  3. package/CONTRIBUTING.md +79 -0
  4. package/README.md +69 -144
  5. package/docs/README.md +1 -0
  6. package/docs/api/shared-gateway.md +1207 -0
  7. package/examples/bridge_failover/README.md +113 -0
  8. package/examples/bridge_failover/bridge_failover.ino +38 -4
  9. package/examples/sharedGateway/README.md +235 -0
  10. package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
  11. package/examples/sharedGateway/sharedGateway.ino +303 -0
  12. package/library.json +3 -22
  13. package/library.properties +1 -1
  14. package/package.json +3 -6
  15. package/src/arduino/wifi.hpp +504 -4
  16. package/src/painlessmesh/gateway.hpp +2120 -0
  17. package/src/painlessmesh/mesh.hpp +1034 -6
  18. package/src/painlessmesh/message_tracker.hpp +311 -0
  19. package/src/painlessmesh/protocol.hpp +6 -0
  20. package/DOCUMENTATION_INDEX.md +0 -146
  21. package/RELEASE_NOTES_1.8.15.md +0 -160
  22. package/RELEASE_READINESS_PLAN.md +0 -323
  23. package/TESTING_WITH_SIMULATOR.md +0 -259
  24. package/docs/API_DESIGN_GUIDELINES.md +0 -414
  25. package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
  26. package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
  27. package/docs/BRIDGE_FAILOVER.md +0 -512
  28. package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
  29. package/docs/BRIDGE_INITIALIZATION_FALLBACK.md +0 -357
  30. package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
  31. package/docs/CREATE_MISSING_RELEASES.md +0 -321
  32. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
  33. package/docs/FAQ_VERSION_NUMBERS.md +0 -152
  34. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
  35. package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
  36. package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
  37. package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
  38. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
  39. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
  40. package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
  41. package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
  42. package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
  43. package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
  44. package/docs/PHASE1_GUIDE.md +0 -349
  45. package/docs/PHASE2_GUIDE.md +0 -543
  46. package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
  47. package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
  48. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
  49. package/docs/SIMULATOR_TESTING.md +0 -408
  50. package/docs/VERSION_MANAGEMENT.md +0 -213
  51. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
  52. package/docs/archive/FEATURE_PROPOSALS.md +0 -337
  53. package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
  54. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
  55. package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
  56. package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
  57. package/docs/archive/RELEASE_SUMMARY.md +0 -173
  58. package/docs/archive/SCONS_BUILD_FIX.md +0 -313
  59. package/docs/archive/TRIGGER_RELEASE.md +0 -280
  60. package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
  61. package/docs/archive/ota-and-status-enhancements.md +0 -911
  62. package/docs/archive/ota-status-architecture-diagrams.md +0 -658
  63. package/docs/archive/ota-status-quick-reference.md +0 -284
  64. package/docs/design/.gitkeep +0 -1
  65. package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
  66. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
  67. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
  68. package/docs/development/DOCKER_TESTING.md +0 -196
  69. package/docs/development/PLATFORMIO_USAGE.md +0 -180
  70. package/docs/development/TESTING_SUMMARY.md +0 -126
  71. package/docs/development/contributing.md +0 -301
  72. package/docs/development/documentation.md +0 -583
  73. package/docs/features/DIAGNOSTICS_API.md +0 -534
  74. package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
  75. package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
  76. package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
  77. package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
  78. package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
  79. package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
  80. package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
  81. package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
  82. package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
  83. package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
  84. package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
  85. package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
  86. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
  87. package/docs/improvements/README.md +0 -212
  88. package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
  89. package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
  90. package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
  91. package/docs/internal/ISSUE_66_STATUS.md +0 -316
  92. package/docs/internal/PR_SUMMARY.md +0 -315
  93. package/docs/internal/REVIEW_SUMMARY.md +0 -332
  94. package/docs/multi-bridge-setup.md +0 -1025
  95. package/docs/platformio-publishing.md +0 -255
  96. package/docs/platformio-setup-summary.md +0 -121
  97. package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
  98. package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
  99. package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
  100. package/docs/releases/FEATURE_HISTORY.md +0 -543
  101. package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
  102. package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
  103. package/docs/releases/PATCH_v1.7.2.md +0 -262
  104. package/docs/releases/PATCH_v1.7.3.md +0 -262
  105. package/docs/releases/PATCH_v1.7.4.md +0 -219
  106. package/docs/releases/PHASE1_SUMMARY.md +0 -246
  107. package/docs/releases/PHASE2_SUMMARY.md +0 -499
  108. package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
  109. package/docs/releases/QUICK_START_RELEASES.md +0 -113
  110. package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
  111. package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
  112. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
  113. package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
  114. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
  115. package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
  116. package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
  117. package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
  118. package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
  119. package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
  120. package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
  121. package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
  122. package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
  123. package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
  124. package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
  125. package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
  126. package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
  127. package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
  128. package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
  129. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
  130. package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
  131. package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
  132. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
  133. package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
  134. package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
  135. package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
  136. package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
  137. package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
  138. package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
  139. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
  140. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
  141. package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
  142. package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
  143. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
  144. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
  145. package/docs/troubleshooting/common-architecture-mistakes.md +0 -438
  146. package/docs/troubleshooting/internet-access-faq.md +0 -299
  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 -108
  197. package/examples/multi_bridge/regular_node.ino +0 -141
  198. package/examples/multi_bridge/secondary_bridge.ino +0 -123
  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