@alteriom/painlessmesh 1.8.15 → 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 +61 -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 +81 -0
  8. package/examples/bridge_failover/bridge_failover.ino +35 -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 +342 -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,323 +0,0 @@
1
- # painlessMesh Release Readiness Plan
2
-
3
- ## Executive Summary
4
-
5
- **Current Status**: The library is functionally correct but requires comprehensive testing and validation before the next release. This PR (#163) focuses on adding simulator-based testing infrastructure.
6
-
7
- **Key Finding**: Issue #161 is NOT a library bug - it's an architectural misunderstanding about how mesh networks work. Regular nodes do NOT have direct internet access by design.
8
-
9
- ## Overview of Recent Work
10
-
11
- ### This PR - Simulator Integration (#163)
12
- ✅ **Completed**:
13
- - Integrated painlessMesh-simulator as git submodule
14
- - Created basic example test with YAML configuration
15
- - Added CI/CD workflow for automated testing
16
- - Fixed all build and configuration issues
17
- - Comprehensive documentation
18
-
19
- 🔄 **Status**: Simulator infrastructure is working and tests run in CI
20
-
21
- ### Issue #161 - Not a Performance Bug
22
- **Analysis**: This is an architectural misunderstanding, not a library performance issue.
23
-
24
- **Root Cause**:
25
- - User expects ALL nodes to have internet access
26
- - painlessMesh architecture: ONLY bridge nodes connect to router
27
- - Regular mesh nodes (WIFI_AP mode) do NOT have internet access
28
- - This is by design due to ESP8266/ESP32 hardware limitations
29
-
30
- **Solution**: Document correct architecture pattern - regular nodes send data to bridge, bridge forwards to internet
31
-
32
- **Reference**: See `ISSUE_161_ANALYSIS.md` for complete analysis
33
-
34
- ## Release Readiness Checklist
35
-
36
- ### 1. Build & Test Infrastructure ✅
37
-
38
- **Status**: COMPLETE
39
-
40
- - [x] Unit tests build successfully (needs TaskScheduler dependency)
41
- - [x] Integration tests pass (tcp_integration: 113 assertions)
42
- - [x] Simulator infrastructure integrated
43
- - [x] CI/CD workflows functional
44
- - [x] All platforms build (Desktop, Arduino, PlatformIO, ESP8266, ESP32)
45
-
46
- **Action Required**:
47
- ```bash
48
- # Fix test dependencies
49
- cd test
50
- git clone https://github.com/arkhipenko/TaskScheduler
51
- cd ..
52
- cmake -G Ninja . && ninja
53
- ```
54
-
55
- ### 2. Core Functionality Verification ✅
56
-
57
- **Status**: VERIFIED (per @sparck75 comment with screenshot)
58
-
59
- - [x] Mesh formation works
60
- - [x] Message routing between nodes works
61
- - [x] Sensor data reporting from mesh nodes to gateway works
62
- - [x] Bridge functionality works correctly
63
- - [x] Bridge failover works (v1.8.0+)
64
-
65
- **Evidence**: Owner @sparck75 confirms "The sensor are purely connected via mesh and are reporting properly to the gateway" with working dashboard screenshot
66
-
67
- ### 3. Performance Testing 🔄
68
-
69
- **Status**: IN PROGRESS (This PR)
70
-
71
- #### Current Performance Tests:
72
- - [x] tcp_integration: 113 assertions (timing, routing, topology)
73
- - [x] catch_connection: 6 assertions (connection handling)
74
- - [x] 30+ additional unit tests covering:
75
- - Router memory management
76
- - Message queue
77
- - Priority messaging
78
- - Bridge health metrics
79
- - Topology validation
80
- - NTP sync
81
- - Buffer management
82
- - MQTT bridge
83
- - Diagnostics API
84
-
85
- #### Simulator Tests Added:
86
- - [x] Basic mesh formation (5 nodes, 60 second test)
87
- - [x] Message broadcasting validation
88
- - [x] Metrics collection (messages sent/received, bytes)
89
- - [x] Runs automatically in CI/CD
90
-
91
- #### Performance Issues to Monitor:
92
- Based on changelog analysis:
93
- - ✅ Bridge status discovery (fixed in v1.8.10, v1.8.11)
94
- - ✅ Routing table timing (fixed in v1.8.11)
95
- - ✅ Internet connection detection (fixed in v1.8.14)
96
- - ✅ MSVC compilation (fixed in v1.8.11)
97
- - ✅ Security vulnerabilities (fixed in v1.8.11)
98
-
99
- **No open performance bugs identified**
100
-
101
- ### 4. Documentation Quality ✅
102
-
103
- **Status**: EXCELLENT
104
-
105
- Comprehensive documentation added:
106
- - [x] BRIDGE_TO_INTERNET.md - Bridge architecture
107
- - [x] ISSUE_161_ANALYSIS.md - Architecture explanation
108
- - [x] TESTING_WITH_SIMULATOR.md - Simulator quick start
109
- - [x] docs/SIMULATOR_TESTING.md - Complete integration guide
110
- - [x] CHANGELOG.md - Well-maintained with detailed fix descriptions
111
- - [x] Multiple migration guides, release notes, verification reports
112
- - [x] Architecture documentation explaining mesh design
113
-
114
- ### 5. Known Issues Review
115
-
116
- **Open Issues**: 2
117
-
118
- 1. **Issue #163** (This PR): Improve validation
119
- - Status: IN PROGRESS
120
- - Solution: Simulator integration (this PR)
121
- - Completion: ~80% (infrastructure done, needs more test scenarios)
122
-
123
- 2. **Issue #161**: "Performance downgraded"
124
- - Status: NOT A BUG - Architecture misunderstanding
125
- - Solution: Documentation (already added in PR #166)
126
- - Action: Close issue with reference to architecture docs
127
-
128
- **No actual performance bugs or library defects identified**
129
-
130
- ### 6. Security Review ✅
131
-
132
- **Status**: COMPLETE
133
-
134
- - [x] CodeQL scanning active in CI
135
- - [x] Security vulnerabilities fixed in v1.8.11:
136
- - Wrong type arguments to formatting functions
137
- - Overrunning write with float conversion
138
- - Dangerous function usage
139
- - Improved type safety and buffer management
140
-
141
- ### 7. Example Code Validation 🔄
142
-
143
- **Status**: PARTIAL
144
-
145
- Currently validated examples:
146
- - [x] basic.ino (via simulator)
147
- - [x] mqttBridge (via unit tests)
148
- - [x] bridge_failover (via unit tests)
149
-
150
- Needs simulator tests:
151
- - [ ] startHere.ino
152
- - [ ] echoNode.ino
153
- - [ ] routing_demo
154
- - [ ] priority messaging
155
- - [ ] OTA examples
156
- - [ ] Alteriom packages
157
-
158
- **Priority**: MEDIUM (examples are tested manually by users, simulator adds automation)
159
-
160
- ## Action Plan for Next Release
161
-
162
- ### Phase 1: Complete This PR ✅
163
- - [x] Simulator infrastructure integrated
164
- - [x] Basic example test created
165
- - [x] CI/CD integration working
166
- - [x] Documentation complete
167
-
168
- **Decision Point**: MERGE THIS PR NOW
169
- - Infrastructure is solid
170
- - Tests pass
171
- - Documentation complete
172
- - Additional test scenarios can be added incrementally
173
-
174
- ### Phase 2: Close Issue #161
175
- **Recommended Action**: Close as "Not a bug - Working as designed"
176
-
177
- **Rationale**:
178
- 1. Library is working correctly
179
- 2. Issue is architectural misunderstanding
180
- 3. Comprehensive documentation added explaining correct architecture
181
- 4. Owner (@sparck75) confirms functionality works in production
182
-
183
- **Closing Comment Template**:
184
- ```markdown
185
- Closing this issue as it represents an architectural misunderstanding rather than a library defect.
186
-
187
- ## Summary
188
- painlessMesh works as designed:
189
- - ✅ Bridge nodes have internet access (WIFI_AP_STA mode)
190
- - ✅ Regular mesh nodes do NOT have internet access by design (WIFI_AP mode)
191
- - ✅ This is due to ESP8266/ESP32 hardware limitations
192
-
193
- ## Correct Pattern
194
- Regular nodes send data to bridge → Bridge forwards to internet services
195
-
196
- ## Documentation Added
197
- - BRIDGE_TO_INTERNET.md - Complete bridge architecture guide
198
- - ISSUE_161_ANALYSIS.md - Detailed analysis of this issue
199
- - PR #166 - Documentation improvements
200
-
201
- ## Working Confirmation
202
- Library maintainer confirms mesh nodes successfully report to gateway in production setup.
203
-
204
- For questions about architecture or implementation patterns, please consult the documentation or open a new discussion issue.
205
- ```
206
-
207
- ### Phase 3: Pre-Release Validation
208
-
209
- **Before releasing next version**:
210
-
211
- 1. **Run complete test suite**: ✅
212
- ```bash
213
- # Already passing in CI
214
- cmake -G Ninja . && ninja && run-parts --regex catch_ bin/
215
- ```
216
-
217
- 2. **Verify simulator tests**: ✅
218
- ```bash
219
- # Already passing in CI
220
- cd test/simulator/build
221
- bin/painlessmesh-simulator --config ../../../examples/basic/test/simulator/scenarios/basic_mesh_test.yaml
222
- ```
223
-
224
- 3. **Build verification across platforms**: ✅
225
- - Desktop (Linux/Mac/Windows): Passing in CI
226
- - Arduino (ESP8266/ESP32): Passing in CI
227
- - PlatformIO: Passing in CI
228
-
229
- 4. **Security scan**: ✅
230
- - CodeQL running automatically in CI
231
- - No alerts currently
232
-
233
- 5. **Manual hardware testing** (recommended):
234
- - Test bridge failover with 2-3 ESP32 devices
235
- - Verify mesh formation and message routing
236
- - Confirm internet access pattern works
237
-
238
- ## Risk Assessment
239
-
240
- ### HIGH PRIORITY Issues: NONE ✅
241
-
242
- ### MEDIUM PRIORITY Issues:
243
-
244
- 1. **More Simulator Test Scenarios**
245
- - Current: Basic mesh formation test
246
- - Needed: Bridge failover, multi-hop routing, large network (10+ nodes)
247
- - Impact: Better regression detection
248
- - Timeline: Can be added incrementally after release
249
-
250
- 2. **Additional Example Validation**
251
- - Current: basic.ino tested
252
- - Needed: All 25+ examples
253
- - Impact: Better example code quality
254
- - Timeline: Can be added incrementally
255
-
256
- ### LOW PRIORITY Issues:
257
-
258
- 1. **TaskScheduler Dependency Setup**
259
- - Tests require manual clone of TaskScheduler
260
- - Could be improved with git submodule
261
- - Impact: Developer convenience
262
- - Timeline: Future enhancement
263
-
264
- ## Release Recommendation
265
-
266
- ### ✅ READY FOR RELEASE
267
-
268
- **Confidence Level**: HIGH
269
-
270
- **Justification**:
271
- 1. ✅ All tests passing (119+ assertions)
272
- 2. ✅ No open bugs (issue #161 is not a bug)
273
- 3. ✅ Security scans passing
274
- 4. ✅ Builds on all platforms
275
- 5. ✅ Recent fixes well-tested (v1.8.14, v1.8.11, v1.8.10)
276
- 6. ✅ Comprehensive documentation
277
- 7. ✅ Working in production (per maintainer)
278
- 8. ✅ Simulator infrastructure added for future validation
279
-
280
- **Recommended Version**: v1.8.15
281
-
282
- **Release Notes Focus**:
283
- - Simulator testing infrastructure added
284
- - Improved validation and CI/CD
285
- - Documentation improvements for bridge architecture
286
- - No breaking changes
287
- - 100% backward compatible
288
-
289
- ## Next Steps
290
-
291
- ### Immediate (Before Merge):
292
- 1. ✅ Verify all simulator tests pass in CI
293
- 2. ✅ Confirm documentation is complete
294
- 3. ✅ Address any final code review comments
295
-
296
- ### Post-Merge:
297
- 1. Close Issue #161 with explanation
298
- 2. Prepare release notes for v1.8.15
299
- 3. Tag and publish release
300
- 4. Create follow-up issues for:
301
- - Additional simulator test scenarios
302
- - Example validation automation
303
- - TaskScheduler dependency improvement
304
-
305
- ### Future Enhancements:
306
- 1. Add simulator tests for all examples
307
- 2. Increase node count in simulator tests (10-100 nodes)
308
- 3. Add network condition simulation (latency, packet loss)
309
- 4. Performance benchmarking with simulator
310
- 5. Regression test suite for past issues
311
-
312
- ## Conclusion
313
-
314
- The painlessMesh library is **production-ready** and **ready for release**. This PR adds important testing infrastructure that will improve future development velocity and regression detection. Issue #161 is not a library defect but rather an architectural misunderstanding that has been addressed with comprehensive documentation.
315
-
316
- **Recommendation**: Merge this PR and proceed with v1.8.15 release.
317
-
318
- ---
319
-
320
- **Document Status**: COMPLETE
321
- **Date**: 2025-11-23
322
- **Author**: @copilot
323
- **Reviewers**: @sparck75
@@ -1,259 +0,0 @@
1
- # Testing painlessMesh Examples with the Simulator
2
-
3
- ## Quick Start Guide
4
-
5
- This guide shows how to validate painlessMesh examples using the integrated simulator.
6
-
7
- ### Prerequisites
8
-
9
- ```bash
10
- # Ubuntu/Debian
11
- sudo apt-get install cmake ninja-build libboost-dev libboost-program-options-dev libyaml-cpp-dev
12
-
13
- # macOS
14
- brew install cmake ninja boost yaml-cpp
15
- ```
16
-
17
- ### Initialize Simulator
18
-
19
- ```bash
20
- # Clone with submodules (if starting fresh)
21
- git clone --recursive https://github.com/Alteriom/painlessMesh.git
22
-
23
- # OR initialize if already cloned
24
- cd painlessMesh
25
- git submodule update --init test/simulator
26
- ```
27
-
28
- ### Run Basic Example Test
29
-
30
- ```bash
31
- # Build simulator
32
- cd test/simulator
33
- mkdir build && cd build
34
- cmake -G Ninja ..
35
- ninja
36
-
37
- # Run basic example validation
38
- bin/painlessmesh-simulator --config \
39
- ../../../examples/basic/test/simulator/scenarios/basic_mesh_test.yaml
40
- ```
41
-
42
- ### Expected Output
43
-
44
- ```
45
- Starting simulation: Basic Example - Mesh Formation and Broadcasting
46
- Duration: 60 seconds
47
-
48
- [00:00] Initializing 10 nodes...
49
- [00:05] Node 6481 connected to mesh
50
- [00:08] Node 6482 connected to mesh
51
- [00:12] Node 6483 connected to mesh
52
- ...
53
- [00:30] ✓ All nodes connected (10/10)
54
- [00:45] ✓ Messages delivered (avg 8.5 messages/node)
55
- [00:60] ✓ Time synchronized (max drift: 5.2ms)
56
-
57
- PASS: All validation criteria met
58
- Results saved to: results/basic_test_results.csv
59
- ```
60
-
61
- ## What Gets Tested
62
-
63
- ### Basic Example Test Scenario
64
-
65
- The `basic_mesh_test.yaml` scenario validates:
66
-
67
- 1. **Mesh Formation** ✓
68
- - 10 virtual nodes form a connected mesh
69
- - All nodes discover each other within 30 seconds
70
-
71
- 2. **Message Broadcasting** ✓
72
- - Each node periodically sends broadcasts
73
- - All nodes receive messages from others
74
- - Minimum 5 messages delivered per node
75
-
76
- 3. **Time Synchronization** ✓
77
- - Node clocks start with random offsets
78
- - Time sync protocol converges within 45 seconds
79
- - Final time differences < 10ms
80
-
81
- 4. **Dynamic Topology** ✓
82
- - New node joins at 30 seconds
83
- - Network adapts and includes new node
84
- - Messages continue to flow
85
-
86
- ## Test Configuration
87
-
88
- Edit `examples/basic/test/simulator/scenarios/basic_mesh_test.yaml`:
89
-
90
- ```yaml
91
- simulation:
92
- duration: 60 # Test duration in seconds
93
-
94
- nodes:
95
- - template: "basic_example"
96
- count: 10 # Number of virtual nodes
97
-
98
- topology:
99
- type: "random"
100
- connectivity: 0.7 # 70% mesh connectivity
101
-
102
- validation:
103
- - check: "all_nodes_connected"
104
- timeout: 30
105
- - check: "messages_delivered"
106
- min_messages_per_node: 5
107
- ```
108
-
109
- ## Analyzing Results
110
-
111
- Results are saved to CSV:
112
-
113
- ```bash
114
- cat results/basic_test_results.csv
115
- ```
116
-
117
- ```csv
118
- timestamp,node_id,messages_sent,messages_received,connections
119
- 0,6481,0,0,0
120
- 1,6481,1,0,2
121
- 5,6481,1,3,3
122
- 10,6481,2,7,3
123
- ...
124
- ```
125
-
126
- Use Python/Excel/etc to analyze:
127
-
128
- ```python
129
- import pandas as pd
130
-
131
- df = pd.read_csv('results/basic_test_results.csv')
132
- print(f"Total messages: {df['messages_sent'].sum()}")
133
- print(f"Avg per node: {df.groupby('node_id')['messages_received'].max().mean()}")
134
- ```
135
-
136
- ## Adding More Tests
137
-
138
- ### Test with 50 Nodes
139
-
140
- Copy and modify the scenario:
141
-
142
- ```bash
143
- cp examples/basic/test/simulator/scenarios/basic_mesh_test.yaml \
144
- examples/basic/test/simulator/scenarios/stress_test.yaml
145
- ```
146
-
147
- Edit `stress_test.yaml`:
148
- ```yaml
149
- nodes:
150
- - template: "basic_example"
151
- count: 50 # Scale up!
152
- ```
153
-
154
- Run it:
155
- ```bash
156
- ./painlessmesh-simulator --config \
157
- ../../../examples/basic/test/simulator/scenarios/stress_test.yaml
158
- ```
159
-
160
- ### Inject Network Failures
161
-
162
- Add events to `basic_mesh_test.yaml`:
163
-
164
- ```yaml
165
- events:
166
- # Partition network at 30s
167
- - type: "network_partition"
168
- time: 30
169
- duration: 15
170
- groups: [[0,1,2,3,4], [5,6,7,8,9]]
171
-
172
- # Heal at 45s
173
- - type: "network_heal"
174
- time: 45
175
- ```
176
-
177
- This tests if the mesh recovers from partitions!
178
-
179
- ## Testing Other Examples
180
-
181
- To test other examples (startHere, echo, etc):
182
-
183
- 1. Create `test/simulator/` directory in the example
184
- 2. Copy firmware adapter pattern from `basic/`
185
- 3. Create YAML scenario
186
- 4. Run test
187
-
188
- See [docs/SIMULATOR_TESTING.md](docs/SIMULATOR_TESTING.md) for detailed instructions.
189
-
190
- ## CI/CD Integration
191
-
192
- Add to `.github/workflows/ci.yml`:
193
-
194
- ```yaml
195
- - name: Test examples with simulator
196
- run: |
197
- cd test/simulator/build
198
- bin/painlessmesh-simulator --config \
199
- ../../../examples/basic/test/simulator/scenarios/basic_mesh_test.yaml
200
- ```
201
-
202
- ## Troubleshooting
203
-
204
- ### Simulator not found
205
-
206
- ```bash
207
- git submodule update --init test/simulator
208
- ```
209
-
210
- ### Build fails
211
-
212
- ```bash
213
- # Check dependencies
214
- sudo apt-get install cmake ninja-build libboost-dev libyaml-cpp-dev
215
-
216
- # Clean rebuild
217
- cd test/simulator
218
- rm -rf build && mkdir build && cd build
219
- cmake -G Ninja .. && ninja
220
- ```
221
-
222
- ### Test times out
223
-
224
- Increase duration in YAML:
225
- ```yaml
226
- simulation:
227
- duration: 120 # Give more time
228
- ```
229
-
230
- ### Need more details
231
-
232
- Enable verbose logging:
233
- ```bash
234
- bin/painlessmesh-simulator --config test.yaml --verbose
235
- ```
236
-
237
- ## Documentation
238
-
239
- - **Complete Guide**: [docs/SIMULATOR_TESTING.md](docs/SIMULATOR_TESTING.md)
240
- - **Simulator Repo**: https://github.com/Alteriom/painlessMesh-simulator
241
- - **Getting Started**: [test/simulator/GETTING_STARTED.md](test/simulator/GETTING_STARTED.md)
242
- - **Configuration**: [test/simulator/docs/CONFIGURATION_GUIDE.md](test/simulator/docs/CONFIGURATION_GUIDE.md)
243
-
244
- ## Benefits of Simulator Testing
245
-
246
- ✅ **Fast** - Complete test in 60 seconds vs hours with hardware
247
- ✅ **Scalable** - Test with 100+ nodes on a laptop
248
- ✅ **Reproducible** - Same scenario always gives same results
249
- ✅ **Realistic** - Actual firmware code runs in simulated environment
250
- ✅ **Automated** - Integrate with CI/CD
251
- ✅ **Cost-effective** - No hardware required
252
-
253
- ## Next Steps
254
-
255
- 1. Run the basic example test (see above)
256
- 2. Experiment with different scenarios
257
- 3. Add tests for other examples you use
258
- 4. Integrate into your CI/CD pipeline
259
- 5. Share your scenarios with the community!