@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,213 +0,0 @@
1
- # Version Management in AlteriomPainlessMesh
2
-
3
- This document explains how versioning works in the AlteriomPainlessMesh library and clarifies common questions about version numbers in different files.
4
-
5
- ## 📋 Version Number Locations
6
-
7
- The library version is maintained in multiple files across the repository:
8
-
9
- ### 1. **Official Version Files** (Source of Truth)
10
-
11
- These files define the official library version:
12
-
13
- - **`library.properties`** - Arduino Library Manager version
14
- - **`library.json`** - PlatformIO Library Registry version
15
- - **`package.json`** - NPM package version
16
-
17
- **All three files must always have the same version number.**
18
-
19
- ### 2. **Header File Version Comments** (Documentation)
20
-
21
- These are **documentation comments** that indicate when the header file documentation was last updated:
22
-
23
- - **`src/painlessMesh.h`** - `@version` in header comment
24
- - **`src/AlteriomPainlessMesh.h`** - `ALTERIOM_PAINLESS_MESH_VERSION` defines
25
-
26
- **Important:** Version numbers in header file comments reflect the overall library version at the time the header was documented, not file-specific versioning.
27
-
28
- ## ❓ Common Questions
29
-
30
- ### Q: Does the version in `painlessMesh.h` mean the file hasn't changed since that version?
31
-
32
- **A: No.** The version comment in header files indicates the library version when the header documentation was last reviewed/updated, not the last time the file was modified.
33
-
34
- **Example:**
35
- ```cpp
36
- /**
37
- * @file painlessMesh.h
38
- * @version 1.8.7
39
- * @date 2025-11-12
40
- */
41
- ```
42
-
43
- This means:
44
- - ✅ The library version is 1.8.7
45
- - ✅ The header documentation is current as of version 1.8.7
46
- - ❌ It does NOT mean the file hasn't been modified since 1.8.7
47
-
48
- ### Q: Why might header version comments be out of sync?
49
-
50
- **A:** During rapid development, header file documentation may not be updated every release. The comments are updated when:
51
- - Significant API changes are made
52
- - Documentation requires updating
53
- - Major version milestones are reached
54
- - Version consistency review is performed
55
-
56
- ### Q: Which version number should I trust?
57
-
58
- **A:** Always refer to the official version files:
59
- 1. `library.properties` - Official Arduino version
60
- 2. `library.json` - Official PlatformIO version
61
- 3. `package.json` - Official NPM version
62
- 4. GitHub releases - Tagged release versions
63
-
64
- Header file comments are for documentation reference only.
65
-
66
- ## 🔄 Version Update Process
67
-
68
- ### When Releasing a New Version:
69
-
70
- 1. **Update Official Version Files** (required)
71
- ```bash
72
- ./scripts/bump-version.sh patch # or minor, major
73
- ```
74
- This updates: `library.properties`, `library.json`, `package.json`
75
-
76
- 2. **Update CHANGELOG.md** (required)
77
- - Move items from `[Unreleased]` to new version section
78
- - Add release date
79
-
80
- 3. **Update Header File Comments** (recommended)
81
- - Update `@version` in `src/painlessMesh.h`
82
- - Update version defines in `src/AlteriomPainlessMesh.h`
83
-
84
- 4. **Commit and Tag** (required)
85
- ```bash
86
- git commit -m "release: vX.Y.Z - Brief description"
87
- git push origin main
88
- ```
89
- GitHub Actions will automatically create the tag.
90
-
91
- ## 📝 Version Comment Best Practices
92
-
93
- ### In Header Files:
94
-
95
- **Good Practice:**
96
- ```cpp
97
- /**
98
- * @file painlessMesh.h
99
- * @brief Main header file for Alteriom painlessMesh library
100
- *
101
- * @version 1.8.7
102
- * @date 2025-11-12
103
- *
104
- * painlessMesh is a user-friendly library for creating mesh networks...
105
- */
106
- ```
107
-
108
- **What This Means:**
109
- - The library is at version 1.8.7
110
- - Header documentation was reviewed/updated on 2025-11-12
111
- - Always synchronized with library version during releases
112
-
113
- ### In Implementation Files:
114
-
115
- Implementation files (`.cpp`, `.hpp`) typically do not need version comments. Version information in these files can be misleading and is unnecessary since:
116
- - Git history tracks all changes with timestamps
117
- - Version is centrally managed in the official version files
118
- - Per-file versioning creates maintenance overhead
119
-
120
- ## 🎯 Version Management Workflow
121
-
122
- ### Developer Workflow:
123
-
124
- 1. **Check Current Version**
125
- ```bash
126
- grep "version=" library.properties
127
- ```
128
-
129
- 2. **Make Changes**
130
- - Implement features/fixes
131
- - Update documentation as needed
132
- - Add entries to CHANGELOG.md under `[Unreleased]`
133
-
134
- 3. **Prepare Release**
135
- ```bash
136
- ./scripts/release-agent.sh # Validate release readiness
137
- ./scripts/bump-version.sh patch # Update version
138
- ```
139
-
140
- 4. **Update Documentation**
141
- - Review and update header file version comments
142
- - Ensure CHANGELOG.md has the new version section
143
- - Verify all documentation references are current
144
-
145
- 5. **Release**
146
- ```bash
147
- git add library.properties library.json package.json CHANGELOG.md src/*.h
148
- git commit -m "release: v1.8.7 - Brief description"
149
- git push origin main
150
- ```
151
-
152
- ### Automated Process:
153
-
154
- GitHub Actions automatically handles:
155
- - ✅ Git tag creation
156
- - ✅ GitHub release with notes
157
- - ✅ NPM publishing
158
- - ✅ PlatformIO registry update
159
- - ✅ Documentation deployment
160
-
161
- ## 🔍 Version History Tracking
162
-
163
- ### To Check File History:
164
-
165
- Use Git to see actual file modification history:
166
-
167
- ```bash
168
- # See all commits that modified a file
169
- git log --oneline -- src/painlessMesh.h
170
-
171
- # See detailed changes to a file
172
- git log -p -- src/painlessMesh.h
173
-
174
- # See when a file was last modified
175
- git log -1 --format="%ai %an" -- src/painlessMesh.h
176
- ```
177
-
178
- ### To Check Version History:
179
-
180
- ```bash
181
- # List all version tags
182
- git tag -l "v*"
183
-
184
- # See changes in a specific version
185
- git show v1.8.7
186
-
187
- # Compare two versions
188
- git diff v1.8.6..v1.8.7
189
- ```
190
-
191
- ## 📚 Related Documentation
192
-
193
- - **[CHANGELOG.md](../CHANGELOG.md)** - Complete version history with changes
194
- - **[RELEASE_GUIDE.md](../RELEASE_GUIDE.md)** - Detailed release process
195
- - **[GitHub Releases](https://github.com/Alteriom/painlessMesh/releases)** - Official release notes
196
-
197
- ## 🎓 Summary
198
-
199
- **Key Takeaways:**
200
-
201
- 1. **Official version** = `library.properties` / `library.json` / `package.json`
202
- 2. **Header comments** = Documentation reference, not file-specific versions
203
- 3. **Git history** = Actual source of truth for file modifications
204
- 4. **CHANGELOG.md** = Human-readable version history
205
- 5. **GitHub releases** = Tagged versions with release notes
206
-
207
- **When in doubt:** Check `library.properties` for the official library version, and use `git log` to see actual file modification history.
208
-
209
- ---
210
-
211
- **Version Management Process Owner:** @Alteriom
212
- **Last Updated:** 2025-11-12
213
- **Document Version:** 1.0
@@ -1,166 +0,0 @@
1
- # GitHub Pages Deployment Guide
2
-
3
- This guide explains how to deploy the Docusaurus documentation site to GitHub Pages.
4
-
5
- ## 🚀 Deployment Steps
6
-
7
- ### 1. Enable GitHub Pages
8
-
9
- 1. Go to your repository on GitHub: `https://github.com/Alteriom/painlessMesh`
10
- 2. Click **Settings** tab
11
- 3. Scroll down to **Pages** section
12
- 4. Under **Source**, select **GitHub Actions**
13
- 5. Save the changes
14
-
15
- ### 2. Commit and Push Changes
16
-
17
- ```bash
18
- # Add all changes
19
- git add .
20
-
21
- # Commit the Docusaurus setup
22
- git commit -m "feat: Add Docusaurus documentation site
23
-
24
- - Replace basic HTML generation with modern Docusaurus
25
- - Add GitHub Actions workflow for automated deployment
26
- - Include Alteriom package documentation
27
- - Integrate Doxygen API docs with user guides
28
- - Enable responsive design and built-in search
29
-
30
- Closes: Documentation modernization initiative"
31
-
32
- # Push to trigger deployment
33
- git push origin main
34
- ```
35
-
36
- ### 3. Monitor Deployment
37
-
38
- 1. Go to **Actions** tab in your repository
39
- 2. Watch the **Documentation** workflow run
40
- 3. When complete, your site will be available at:
41
- - **URL**: `https://alteriom.github.io/painlessMesh/`
42
-
43
- ## 🛠️ Local Development
44
-
45
- ### Start Development Server
46
-
47
- ```bash
48
- cd website
49
- npm start
50
- ```
51
-
52
- Visit: `http://localhost:3000/painlessMesh/`
53
-
54
- ### Build for Production
55
-
56
- ```bash
57
- cd website
58
- npm run build
59
- ```
60
-
61
- ### Test Production Build
62
-
63
- ```bash
64
- cd website
65
- npm run serve
66
- ```
67
-
68
- ## 📁 Documentation Structure
69
-
70
- ```
71
- website/
72
- ├── docs/ # Main documentation
73
- │ ├── intro.md # Homepage content
74
- │ ├── getting-started/ # Installation & quickstart
75
- │ ├── api/ # API reference
76
- │ ├── alteriom/ # Alteriom extensions
77
- │ ├── tutorials/ # Usage examples
78
- │ ├── architecture/ # Technical details
79
- │ ├── advanced/ # Advanced topics
80
- │ └── troubleshooting/ # Help & FAQ
81
- ├── static/ # Static assets
82
- │ └── api/ # Doxygen API docs (auto-generated)
83
- ├── docusaurus.config.ts # Main configuration
84
- └── sidebars.ts # Navigation structure
85
- ```
86
-
87
- ## 🔄 Workflow Overview
88
-
89
- The GitHub Actions workflow:
90
-
91
- 1. **Checkout** repository code
92
- 2. **Setup Node.js** for Docusaurus
93
- 3. **Install Doxygen** for API documentation
94
- 4. **Generate API docs** using existing Doxygen config
95
- 5. **Install dependencies** for Docusaurus
96
- 6. **Integrate Doxygen** output with Docusaurus
97
- 7. **Build site** for production
98
- 8. **Deploy** to GitHub Pages
99
-
100
- ## 🎯 Benefits Over Previous System
101
-
102
- | Feature | Old System | **New Docusaurus** |
103
- |---------|------------|-------------------|
104
- | **Search** | ❌ None | ✅ Built-in Algolia search |
105
- | **Mobile** | ❌ Poor responsive | ✅ Perfect mobile experience |
106
- | **Navigation** | ❌ Manual links | ✅ Auto-generated sidebar |
107
- | **Performance** | ❌ Slow page loads | ✅ Single-page app speed |
108
- | **Maintenance** | ❌ Manual HTML generation | ✅ Pure Markdown workflow |
109
- | **Link validation** | ❌ Broken links undetected | ✅ Automatic validation |
110
- | **Versioning** | ❌ Not supported | ✅ Multiple library versions |
111
- | **API integration** | ❌ Separate Doxygen site | ✅ Seamless integration |
112
-
113
- ## 🔧 Customization
114
-
115
- ### Adding New Pages
116
-
117
- 1. Create `.md` files in appropriate `docs/` subdirectory
118
- 2. Update `sidebars.ts` to include in navigation
119
- 3. Commit and push - automatic deployment
120
-
121
- ### Modifying Branding
122
-
123
- Edit `docusaurus.config.ts`:
124
- - `title`: Site title
125
- - `tagline`: Site description
126
- - `favicon`: Icon file
127
- - `themeConfig.navbar`: Navigation menu
128
- - `themeConfig.footer`: Footer content
129
-
130
- ### Custom Styling
131
-
132
- Edit `src/css/custom.css` for custom styles and branding.
133
-
134
- ## 🚨 Troubleshooting
135
-
136
- ### Build Fails
137
-
138
- 1. Check **Actions** tab for error details
139
- 2. Verify all referenced files exist in sidebars
140
- 3. Ensure Markdown syntax is valid
141
-
142
- ### Pages Not Deploying
143
-
144
- 1. Verify **GitHub Pages** is set to **GitHub Actions**
145
- 2. Check repository permissions
146
- 3. Ensure workflow has **Pages write** permission
147
-
148
- ### Links Broken
149
-
150
- 1. Use relative paths: `../other-page`
151
- 2. Verify file extensions: `.md` files become `.html`
152
- 3. Check sidebar configuration matches file structure
153
-
154
- ## 📞 Support
155
-
156
- For issues with:
157
- - **Docusaurus**: See [Docusaurus docs](https://docusaurus.io/)
158
- - **GitHub Actions**: Check workflow logs in Actions tab
159
- - **Content**: Create issues in repository
160
-
161
- ## 🎉 Next Steps
162
-
163
- 1. **Enable search**: Configure Algolia search index
164
- 2. **Add analytics**: Integrate Google Analytics
165
- 3. **Custom domain**: Set up custom domain if desired
166
- 4. **Content migration**: Move remaining docs from `/docs` folder
@@ -1,337 +0,0 @@
1
- # Feature Proposals: OTA and Status Enhancements
2
-
3
- **Status:** 📋 Proposal - Awaiting Review
4
- **Type:** Enhancement
5
- **Impact:** High
6
- **Effort:** Medium-High
7
-
8
- ---
9
-
10
- ## 🎯 Overview
11
-
12
- This proposal explores comprehensive enhancements to painlessMesh for production IoT deployments, focusing on two critical areas:
13
-
14
- 1. **Enhanced OTA Distribution** - More efficient, reliable, and scalable firmware updates across mesh networks
15
- 2. **Mesh Network Status Monitoring** - Comprehensive health monitoring and diagnostic capabilities
16
-
17
- ---
18
-
19
- ## 📚 Documentation Index
20
-
21
- ### Quick Start
22
- - **[Quick Reference Guide](ota-status-quick-reference.md)** ⚡ - Start here for TL;DR with decision matrices
23
- - **[Architecture Diagrams](ota-status-architecture-diagrams.md)** 📊 - Visual understanding of each option
24
-
25
- ### Complete Analysis
26
- - **[Full Proposal](ota-and-status-enhancements.md)** 📖 - Comprehensive 50+ page analysis with:
27
- - Detailed examination of current implementation
28
- - 5 OTA enhancement options with pros/cons
29
- - 5 status monitoring options with pros/cons
30
- - Implementation details and code examples
31
- - Risk assessment and mitigation strategies
32
- - Phased rollout recommendations
33
-
34
- ---
35
-
36
- ## 🚀 At a Glance
37
-
38
- ### OTA Enhancement Options
39
-
40
- | Option | Description | Speed | Memory | Best For |
41
- |--------|-------------|-------|--------|----------|
42
- | **1E: Compression** ⭐⭐⭐⭐⭐ | Gzip firmware transfers | ⭐⭐⭐⭐ | +4-8KB | Everyone (start here) |
43
- | **1A: Broadcast** ⭐⭐⭐⭐ | Mesh-wide simultaneous distribution | ⭐⭐⭐⭐⭐ | +2-5KB | Medium-large meshes |
44
- | **1B: Progressive** ⭐⭐⭐⭐ | Phased rollout with safety checks | ⭐⭐ | +3-7KB | Production safety |
45
- | 1C: Peer-to-Peer | Viral propagation via updated nodes | ⭐⭐⭐⭐⭐ | +200KB | Very large meshes |
46
- | 1D: MQTT Bridge | Cloud-managed OTA via MQTT | ⭐⭐⭐ | +5-10KB | MQTT infrastructure |
47
-
48
- ### Status Monitoring Options
49
-
50
- | Option | Description | Real-time | Overhead | Best For |
51
- |--------|-------------|-----------|----------|----------|
52
- | **2A: Enhanced Package** ⭐⭐⭐⭐⭐ | Extended Alteriom StatusPackage | ⭐⭐⭐ | Low | Simple integration |
53
- | **2E: MQTT Bridge** ⭐⭐⭐⭐⭐ | Publish status to MQTT topics | ⭐⭐⭐ | Low | Cloud integration |
54
- | **2B: Status Service** ⭐⭐⭐⭐ | Query-based status collection | ⭐⭐⭐ | Medium | Centralized control |
55
- | 2C: Telemetry Stream | Continuous low-bandwidth updates | ⭐⭐⭐⭐⭐ | Very Low | Real-time critical |
56
- | 2D: Health Dashboard | Complete web-based monitoring | ⭐⭐⭐⭐⭐ | Medium | User-facing apps |
57
-
58
- ---
59
-
60
- ## 🎯 Recommended Path
61
-
62
- ### ✅ Phase 1: Quick Wins (Weeks 3-4)
63
- **Implement:** Options 1E + 2A
64
- **Effort:** 3-4 weeks
65
- **Value:** Immediate 40-60% OTA speed improvement + standardized status
66
-
67
- ```cpp
68
- // Compressed OTA
69
- mesh.offerOTA("sensor", "ESP32", md5, parts, false, false, true);
70
-
71
- // Enhanced Status
72
- alteriom::EnhancedStatusPackage status;
73
- status.uptime = millis() / 1000;
74
- status.freeMemory = ESP.getFreeHeap() / 1024;
75
- mesh.sendBroadcast(status.toJsonString());
76
- ```
77
-
78
- **Benefits:**
79
- - ✅ Faster OTA distribution
80
- - ✅ Lower network bandwidth usage
81
- - ✅ Standardized status reporting
82
- - ✅ Minimal risk, high reward
83
-
84
- ---
85
-
86
- ### ✅ Phase 2: Production Ready (Weeks 6-8)
87
- **Implement:** Options 1A + 2E
88
- **Effort:** 6-8 weeks
89
- **Value:** Scalable OTA + professional monitoring
90
-
91
- ```cpp
92
- // Broadcast OTA
93
- mesh.offerOTA("sensor", "ESP32", md5, parts, false, true);
94
-
95
- // MQTT Status
96
- MqttStatusBridge bridge(mesh, mqttClient);
97
- bridge.setPublishInterval(30000);
98
- bridge.begin();
99
- ```
100
-
101
- **Benefits:**
102
- - ✅ Scales to large meshes (50+ nodes)
103
- - ✅ Cloud integration via MQTT
104
- - ✅ Professional monitoring tools (Grafana, InfluxDB)
105
- - ✅ Enterprise-ready features
106
-
107
- ---
108
-
109
- ### ✅ Phase 3: Advanced (Months 3-4)
110
- **Implement:** Options 1B + 2C
111
- **Effort:** 3-4 months
112
- **Value:** Production-safe updates + real-time monitoring
113
-
114
- ```cpp
115
- // Progressive Rollout
116
- ProgressiveOTA ota(mesh);
117
- ota.setPhases({0.05, 0.20, 1.0}); // 5%, 20%, 100%
118
- ota.setHealthCheck(checkNodeHealth);
119
- ota.begin("sensor", "ESP32", md5);
120
-
121
- // Telemetry Stream
122
- TelemetryStream telemetry(mesh);
123
- telemetry.setInterval(60000); // 60s
124
- telemetry.begin();
125
- ```
126
-
127
- **Benefits:**
128
- - ✅ Zero-downtime updates
129
- - ✅ Early failure detection
130
- - ✅ Real-time anomaly detection
131
- - ✅ Proactive alerting
132
-
133
- ---
134
-
135
- ## 📊 Expected Results
136
-
137
- ### OTA Improvements
138
-
139
- **Current State:**
140
- - Update time: 60-120s for 10 nodes
141
- - Network usage: N × Firmware_Size
142
- - Success rate: ~85%
143
-
144
- **After Phase 1 (Compression):**
145
- - Update time: 35-70s (40% faster)
146
- - Network usage: 0.5 × N × Firmware_Size
147
- - Success rate: ~90%
148
-
149
- **After Phase 2 (Broadcast + Compression):**
150
- - Update time: 15-30s (75% faster)
151
- - Network usage: 1 × Firmware_Size (regardless of node count)
152
- - Success rate: ~95%
153
-
154
- ### Status Monitoring
155
-
156
- **Current State:**
157
- - Manual status collection
158
- - No standardization
159
- - Application-specific implementation
160
-
161
- **After Phase 1 (Enhanced Package):**
162
- - Standardized status format
163
- - Integration with metrics system
164
- - 500 bytes overhead per update
165
-
166
- **After Phase 2 (MQTT Bridge):**
167
- - Cloud integration
168
- - Integration with standard tools
169
- - Historical data tracking
170
- - Alert management
171
-
172
- ---
173
-
174
- ## 🎓 Decision Guide
175
-
176
- ### "Which OTA option should I choose?"
177
-
178
- **Start with:** 1E (Compression)
179
- - Universal benefit (40-60% faster)
180
- - Low complexity
181
- - Works with existing infrastructure
182
-
183
- **Add 1A (Broadcast) if:**
184
- - Mesh has 10+ nodes
185
- - Frequent OTA updates
186
- - Network congestion is an issue
187
-
188
- **Add 1B (Progressive) if:**
189
- - Production deployment
190
- - Cannot afford downtime
191
- - Need safety guarantees
192
-
193
- **Consider 1C (P2P) if:**
194
- - Very large mesh (50+ nodes)
195
- - Nodes have sufficient flash (ESP32)
196
- - Need fastest possible distribution
197
-
198
- **Use 1D (MQTT) if:**
199
- - Already using MQTT infrastructure
200
- - Need cloud-based management
201
- - External OTA tools required
202
-
203
- ### "Which status option should I choose?"
204
-
205
- **Start with:** 2A (Enhanced StatusPackage)
206
- - Easiest integration
207
- - Builds on existing Alteriom packages
208
- - Minimal changes required
209
-
210
- **Add 2E (MQTT Bridge) if:**
211
- - Need cloud monitoring
212
- - Using monitoring tools (Grafana, etc.)
213
- - Want historical data
214
-
215
- **Use 2B (Status Service) if:**
216
- - Need centralized aggregation
217
- - On-demand queries preferred
218
- - RESTful API required
219
-
220
- **Use 2C (Telemetry) if:**
221
- - Real-time monitoring critical
222
- - Large-scale deployment (50+ nodes)
223
- - Proactive alerting needed
224
-
225
- **Use 2D (Dashboard) if:**
226
- - User-facing application
227
- - Need visual interface
228
- - Web-based monitoring required
229
-
230
- ---
231
-
232
- ## ⚠️ Important Notes
233
-
234
- ### For OTA Implementation
235
-
236
- **Always remember:**
237
- - ✅ Include OTA support in updated firmware (prevents bricking)
238
- - ✅ Test on single node before mesh-wide deployment
239
- - ✅ Implement rollback mechanism for failures
240
- - ✅ Use MD5 validation for firmware integrity
241
- - ✅ Consider progressive rollout for production
242
-
243
- **Common pitfalls:**
244
- - ❌ Updating all nodes simultaneously without testing
245
- - ❌ Forgetting OTA support in new firmware
246
- - ❌ Skipping MD5 validation
247
- - ❌ No rollback plan
248
-
249
- ### For Status Monitoring
250
-
251
- **Always remember:**
252
- - ✅ Choose appropriate update intervals (30-60s typical)
253
- - ✅ Implement timeout handling for non-responsive nodes
254
- - ✅ Monitor memory usage to prevent exhaustion
255
- - ✅ Set up alerts for critical conditions
256
-
257
- **Common pitfalls:**
258
- - ❌ Polling status too frequently (causes congestion)
259
- - ❌ Ignoring memory warnings (causes crashes)
260
- - ❌ Assuming all nodes respond (timeouts happen)
261
- - ❌ No historical data retention
262
-
263
- ---
264
-
265
- ## 🔄 Current Status
266
-
267
- ### Completed
268
- - ✅ Analysis of current implementation
269
- - ✅ Research of enhancement options
270
- - ✅ Detailed proposal documentation
271
- - ✅ Architecture diagrams
272
- - ✅ Quick reference guide
273
-
274
- ### Next Steps
275
- 1. ⏳ Review proposal with team
276
- 2. ⏳ Approve Phase 1 features
277
- 3. ⏳ Create detailed design documents
278
- 4. ⏳ Set up test infrastructure
279
- 5. ⏳ Begin Phase 1 implementation
280
-
281
- ### Timeline
282
- - **Weeks 1-2:** Review and approval
283
- - **Weeks 3-6:** Phase 1 implementation
284
- - **Weeks 7-12:** Phase 2 implementation
285
- - **Months 4-6:** Phase 3 implementation
286
-
287
- ---
288
-
289
- ## 🤝 Contributing
290
-
291
- Interested in implementing these features?
292
-
293
- 1. Read the full proposal: [ota-and-status-enhancements.md](ota-and-status-enhancements.md)
294
- 2. Review architecture: [ota-status-architecture-diagrams.md](ota-status-architecture-diagrams.md)
295
- 3. Check quick reference: [ota-status-quick-reference.md](ota-status-quick-reference.md)
296
- 4. Open a GitHub issue to discuss
297
- 5. Submit a pull request with implementation
298
-
299
- ---
300
-
301
- ## 📖 Related Resources
302
-
303
- ### In This Repository
304
- - [Library Improvements Overview](README.md)
305
- - [Metrics System](../../src/painlessmesh/metrics.hpp)
306
- - [Alteriom Packages](../../examples/alteriom/alteriom_sensor_package.hpp)
307
- - [OTA Sender Example](../../examples/otaSender/otaSender.ino)
308
- - [OTA Receiver Example](../../examples/otaReceiver/otaReceiver.ino)
309
- - [MQTT Bridge Example](../../examples/mqttBridge/mqttBridge.ino)
310
-
311
- ### Documentation
312
- - [painlessMesh Architecture](../architecture/mesh-architecture.md)
313
- - [Plugin System](../architecture/plugin-system.md)
314
- - [API Reference](../api/core-api.md)
315
- - [Troubleshooting](../troubleshooting/common-issues.md)
316
-
317
- ### External References
318
- - ESP-IDF OTA Documentation
319
- - ArduinoOTA Library
320
- - MQTT Protocol Specification
321
- - InfluxDB/Grafana Integration
322
-
323
- ---
324
-
325
- ## 📞 Contact
326
-
327
- Questions or feedback?
328
-
329
- - **GitHub Issues:** https://github.com/Alteriom/painlessMesh/issues
330
- - **Discussions:** https://github.com/Alteriom/painlessMesh/discussions
331
- - **Email:** See CONTRIBUTING.md
332
-
333
- ---
334
-
335
- **Last Updated:** December 2024
336
- **Proposal Version:** 1.0
337
- **Status:** Ready for Review