@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,255 +0,0 @@
1
- # PlatformIO Library Publishing Guide
2
-
3
- This guide explains how to publish the AlteriomPainlessMesh library to the PlatformIO Library Registry.
4
-
5
- ## Prerequisites
6
-
7
- ### 1. PlatformIO Account Setup
8
-
9
- 1. Visit [https://platformio.org/](https://platformio.org/) and create an account
10
- 2. Verify your email address
11
- 3. Log in to your PlatformIO account
12
-
13
- ### 2. Authentication Token
14
-
15
- 1. Go to [https://platformio.org/account/token](https://platformio.org/account/token)
16
- 2. Generate a new Personal Access Token
17
- 3. Copy the token and store it securely
18
- 4. Set up the token in your local environment:
19
-
20
- ```powershell
21
- # Set environment variable (Windows PowerShell)
22
- $env:PLATFORMIO_AUTH_TOKEN="YOUR_TOKEN_HERE"
23
-
24
- # Or for Command Prompt
25
- set PLATFORMIO_AUTH_TOKEN=YOUR_TOKEN_HERE
26
-
27
- # Or use login command
28
- pio account login
29
- ```
30
-
31
- ## Library Configuration
32
- 4. Set up the token in your local environment:
33
- ```powershell
34
- pio account token --set YOUR_TOKEN_HERE
35
- ```
36
-
37
- ## Library Configuration
38
-
39
- ### Required Files
40
- Ensure these files are properly configured:
41
-
42
- #### 1. `library.json` (Primary PlatformIO Configuration)
43
- ```json
44
- {
45
- "name": "AlteriomPainlessMesh",
46
- "keywords": "ethernet, m2m, iot, mesh, alteriom, sensor, esp32, esp8266, json, time-sync, wireless, communication",
47
- "description": "painlessMesh library with Alteriom extensions for sensor networks",
48
- "repository": {
49
- "type": "git",
50
- "url": "https://github.com/Alteriom/painlessMesh"
51
- },
52
- "version": "1.6.1",
53
- "frameworks": ["arduino"],
54
- "platforms": ["espressif8266", "espressif32"],
55
- "dependencies": [...],
56
- "authors": [...],
57
- "license": "LGPL-3.0",
58
- "homepage": "https://github.com/Alteriom/painlessMesh",
59
- "headers": "painlessMesh.h",
60
- "examples": ["examples/basic/basic.ino", "examples/alteriom/alteriom_sensor_node.ino"],
61
- "export": {
62
- "include": "src"
63
- }
64
- }
65
- ```
66
-
67
- #### 2. `library.properties` (Arduino Library Manager)
68
- Should remain compatible for dual publishing:
69
- ```properties
70
- name=AlteriomPainlessMesh
71
- version=1.6.1
72
- author=Coopdis,Scotty Franzyshen,Edwin van Leeuwen,Germán Martín,Maximilian Schwarz,Doanh Doanh,Alteriom
73
- maintainer=Alteriom
74
- sentence=A painless way to setup a mesh with ESP8266 and ESP32 devices with Alteriom extensions
75
- paragraph=...
76
- category=Communication
77
- url=https://github.com/Alteriom/painlessMesh
78
- architectures=esp8266,esp32
79
- includes=AlteriomPainlessMesh.h
80
- depends=ArduinoJson, TaskScheduler
81
- ```
82
-
83
- ## Publishing Process
84
-
85
- ### Method 1: Git Tag Publishing (Recommended)
86
-
87
- This method automatically publishes when you create a Git tag:
88
-
89
- 1. **Ensure all files are committed and pushed:**
90
- ```powershell
91
- git add .
92
- git commit -m "Prepare v1.6.1 for PlatformIO Library Registry"
93
- git push origin main
94
- ```
95
-
96
- 2. **Create and push a Git tag:**
97
- ```powershell
98
- git tag v1.6.1
99
- git push origin v1.6.1
100
- ```
101
-
102
- 3. **PlatformIO will automatically detect the new tag and import the library**
103
- - Monitor at: [https://platformio.org/lib/show/LIBRARY_ID/AlteriomPainlessMesh](https://platformio.org/lib)
104
- - It may take 5-15 minutes for the library to appear
105
-
106
- ### Method 2: Manual Package Upload
107
-
108
- If automatic detection doesn't work:
109
-
110
- 1. **Create a tarball of your library:**
111
- ```powershell
112
- # Create archive excluding unnecessary files
113
- tar --exclude='.git' --exclude='test' --exclude='bin' --exclude='.vscode' --exclude='node_modules' -czf AlteriomPainlessMesh-1.6.1.tar.gz .
114
- ```
115
-
116
- 2. **Submit via PlatformIO Library Registry:**
117
- - Visit [https://platformio.org/lib/register](https://platformio.org/lib/register)
118
- - Upload the created tarball
119
- - Fill in any additional metadata
120
-
121
- ### Method 3: Using PlatformIO CLI
122
-
123
- ```powershell
124
- # Ensure you're authenticated
125
- pio account token --set YOUR_TOKEN_HERE
126
-
127
- # Publish the library
128
- pio pkg publish .
129
- ```
130
-
131
- ## Verification
132
-
133
- ### 1. Check Library Status
134
- ```powershell
135
- # Search for your published library
136
- pio pkg search "AlteriomPainlessMesh"
137
-
138
- # View detailed information
139
- pio pkg show alteriom/AlteriomPainlessMesh
140
- ```
141
-
142
- ### 2. Test Installation
143
- Create a test project to verify the library can be installed:
144
- ```powershell
145
- mkdir test_project
146
- cd test_project
147
- pio project init --board esp32dev
148
-
149
- # Add to platformio.ini:
150
- # lib_deps = alteriom/AlteriomPainlessMesh@^1.6.1
151
-
152
- pio pkg install
153
- ```
154
-
155
- ## Updating the Library
156
-
157
- For future releases:
158
-
159
- 1. **Update version numbers:**
160
- - `library.json` → `"version": "1.6.2"`
161
- - `library.properties` → `version=1.6.2`
162
- - `package.json` → `"version": "1.6.2"`
163
-
164
- 2. **Commit changes:**
165
- ```powershell
166
- git add .
167
- git commit -m "Bump version to 1.6.2"
168
- git push origin main
169
- ```
170
-
171
- 3. **Create new tag:**
172
- ```powershell
173
- git tag v1.6.2
174
- git push origin v1.6.2
175
- ```
176
-
177
- 4. **Verify update appears in registry**
178
-
179
- ## Troubleshooting
180
-
181
- ### Common Issues
182
-
183
- 1. **Library name conflicts:**
184
- - Use a unique name like "AlteriomPainlessMesh" instead of "painlessMesh"
185
- - Check existing libraries: `pio pkg search "painless"`
186
-
187
- 2. **Authentication errors:**
188
- - Verify token: `pio account show`
189
- - Regenerate token if needed
190
-
191
- 3. **Dependency resolution errors:**
192
- - Ensure all dependencies exist in PlatformIO Registry
193
- - Check version constraints (use `^` for flexible versions)
194
-
195
- 4. **Git repository requirements:**
196
- - Repository must be publicly accessible
197
- - Tags must follow semantic versioning (v1.6.1)
198
- - library.json must be in repository root
199
-
200
- ### Useful Commands
201
-
202
- ```powershell
203
- # Check authentication status
204
- pio account show
205
-
206
- # List all your published packages
207
- pio pkg search --owner="YOUR_USERNAME"
208
-
209
- # View package statistics
210
- pio pkg stats
211
-
212
- # Update package metadata
213
- pio pkg update
214
- ```
215
-
216
- ## Best Practices
217
-
218
- 1. **Semantic Versioning:**
219
- - Use format: MAJOR.MINOR.PATCH (e.g., 1.6.1)
220
- - Increment MAJOR for breaking changes
221
- - Increment MINOR for new features
222
- - Increment PATCH for bug fixes
223
-
224
- 2. **Documentation:**
225
- - Include comprehensive README.md
226
- - Provide working examples in examples/ directory
227
- - Document all public APIs
228
-
229
- 3. **Testing:**
230
- - Test library installation in clean environments
231
- - Verify examples compile successfully
232
- - Test on both ESP8266 and ESP32 platforms
233
-
234
- 4. **Dependency Management:**
235
- - Specify minimum required versions
236
- - Use version ranges (^1.6.0) for flexibility
237
- - Platform-specific dependencies when needed
238
-
239
- ## PlatformIO Library Registry URLs
240
-
241
- - **Library Registry:** [https://platformio.org/lib](https://platformio.org/lib)
242
- - **Account Management:** [https://platformio.org/account](https://platformio.org/account)
243
- - **Submit Library:** [https://platformio.org/lib/register](https://platformio.org/lib/register)
244
- - **Documentation:** [https://docs.platformio.org/en/latest/librarymanager/index.html](https://docs.platformio.org/en/latest/librarymanager/index.html)
245
-
246
- ---
247
-
248
- **Note:** After successful publication, users will be able to install your library using:
249
- ```ini
250
- [env:esp32dev]
251
- platform = espressif32
252
- board = esp32dev
253
- framework = arduino
254
- lib_deps = alteriom/AlteriomPainlessMesh@^1.6.1
255
- ```
@@ -1,121 +0,0 @@
1
- # PlatformIO Publishing Setup Summary
2
-
3
- ## ✅ What's Been Implemented
4
-
5
- ### 1. Dedicated PlatformIO Publishing Workflow
6
- - **File**: `.github/workflows/platformio-publish.yml`
7
- - **Triggers**: Automatic on releases, manual dispatch for testing
8
- - **Features**: Complete validation, authentication, and publishing pipeline
9
-
10
- ### 2. Library Configuration Enhanced
11
- - **Updated `library.json`**: PlatformIO-specific optimizations
12
- - **Name**: Changed to "AlteriomPainlessMesh" for uniqueness
13
- - **Dependencies**: All verified available in PlatformIO Registry
14
- - **Metadata**: Enhanced with license, examples, export configuration
15
-
16
- ### 3. Release Process Integration
17
- - **Main release workflow** now references PlatformIO publishing
18
- - **Documentation updated** in `RELEASE_GUIDE.md`
19
- - **Comprehensive instructions** in `docs/platformio-publishing.md`
20
-
21
- ## 🚀 How It Works
22
-
23
- ### Automatic Publishing
24
- 1. **Release Created**: GitHub release triggers PlatformIO workflow
25
- 2. **Validation**: Library.json format and dependencies checked
26
- 3. **Authentication**: Uses `PLATFORMIO_AUTH_TOKEN` secret
27
- 4. **Publication**: Direct publishing via PlatformIO CLI
28
- 5. **Verification**: Registry confirmation and user notification
29
-
30
- ### Manual Publishing (Alternative)
31
- 1. Go to GitHub Actions → PlatformIO Library Publishing
32
- 2. Click "Run workflow"
33
- 3. Enter version number and optional force publish
34
- 4. Workflow handles the rest
35
-
36
- ## 🔧 Setup Required
37
-
38
- ### One-Time Setup: PlatformIO Account
39
-
40
- 1. **Create Account**: <https://platformio.org/account/register>
41
- 2. **Generate Token**: <https://platformio.org/account/token>
42
- 3. **Add to Secrets**: Repository Settings → Secrets → Actions
43
- - Name: `PLATFORMIO_AUTH_TOKEN`
44
- - Value: [your token from step 2]
45
-
46
- **Local Testing (Optional):**
47
- ```powershell
48
- # Method 1: Environment variable
49
- $env:PLATFORMIO_AUTH_TOKEN="YOUR_TOKEN_HERE"
50
- pio account show # Verify authentication
51
-
52
- # Method 2: Interactive login (if token doesn't work)
53
- pio account login
54
-
55
- # Test publishing
56
- pio pkg publish . --no-interactive
57
- ```
58
-
59
- **Troubleshooting Authentication:**
60
- ```powershell
61
- # If authentication fails:
62
- 1. Go to https://platformio.org/account/token
63
- 2. Copy your existing token OR generate a new one
64
- 3. Set it as environment variable: $env:PLATFORMIO_AUTH_TOKEN="token"
65
- 4. Test: pio account show
66
- ```
67
-
68
- ### Current Status for v1.6.1
69
- Since v1.6.1 is already released and published to other platforms:
70
-
71
- #### Option A: Test with Manual Workflow
72
- ```
73
- 1. Go to: https://github.com/Alteriom/painlessMesh/actions/workflows/platformio-publish.yml
74
- 2. Click "Run workflow"
75
- 3. Set version: 1.6.1
76
- 4. Enable force_publish: true
77
- 5. Click "Run workflow"
78
- ```
79
-
80
- #### Option B: Wait for Next Release
81
- The PlatformIO workflow will automatically trigger on your next release (v1.6.2, etc.)
82
-
83
- ## 📋 Future Releases
84
-
85
- For all future releases, PlatformIO publishing is now **fully automated**:
86
-
87
- ```bash
88
- # Standard release process remains the same
89
- ./scripts/bump-version.sh patch
90
- # Edit CHANGELOG.md
91
- git add . && git commit -m "release: v1.6.2" && git push
92
- ```
93
-
94
- This will now automatically:
95
- - ✅ Create GitHub release
96
- - ✅ Publish to NPM
97
- - ✅ **Publish to PlatformIO Registry**
98
- - ✅ Update GitHub Wiki
99
- - ✅ Prepare Arduino Library Manager package
100
-
101
- ## 🔍 Verification
102
-
103
- After publishing, verify at:
104
- - **Registry**: <https://registry.platformio.org/libraries>
105
- - **Search**: Search for "AlteriomPainlessMesh"
106
- - **Installation**: `pio pkg install --library "alteriom/AlteriomPainlessMesh@^1.6.1"`
107
-
108
- ## 📚 Documentation
109
-
110
- Complete documentation available:
111
- - **Publishing Guide**: `docs/platformio-publishing.md`
112
- - **Release Process**: `RELEASE_GUIDE.md` (updated)
113
- - **Workflow Details**: `.github/workflows/platformio-publish.yml`
114
-
115
- ## 🎯 Next Steps
116
-
117
- 1. **Add PlatformIO Token**: Set up the `PLATFORMIO_AUTH_TOKEN` secret
118
- 2. **Test Workflow**: Run manual workflow for v1.6.1 (optional)
119
- 3. **Next Release**: PlatformIO publishing will be automatic
120
-
121
- The PlatformIO publishing is now fully integrated into your release pipeline! 🎉
@@ -1,63 +0,0 @@
1
- # 🎉 painlessMesh v1.8.6 Released!
2
-
3
- We're excited to announce **painlessMesh v1.8.6** - a patch release that fixes a critical bridge failover issue.
4
-
5
- ## 🔧 What's Fixed
6
-
7
- **Bridge Auto-Election** - Meshes now automatically elect a bridge when all nodes start without a designated initial bridge. Previously, the network would remain bridgeless indefinitely in this scenario.
8
-
9
- ### The Problem
10
- ```
11
- --- Bridge Status ---
12
- I am bridge: NO
13
- Internet available: NO
14
- Known bridges: 0
15
- No primary bridge available! ❌
16
- ```
17
-
18
- ### The Solution
19
- After a 60-second startup grace period, the mesh automatically detects the absence of a bridge and triggers an election. The node with the best WiFi signal (RSSI) becomes the bridge. ✅
20
-
21
- ## 🚀 Key Features
22
-
23
- - **Automatic Recovery** - No manual intervention needed
24
- - **Smart Timing** - 60s grace period for network stabilization
25
- - **Randomized Delays** - Prevents election conflicts
26
- - **Fully Backward Compatible** - Existing setups work unchanged
27
-
28
- ## 📦 Installation
29
-
30
- ```bash
31
- # PlatformIO
32
- pio pkg update alteriom/AlteriomPainlessMesh@^1.8.6
33
-
34
- # NPM
35
- npm update @alteriom/painlessmesh
36
-
37
- # Arduino Library Manager
38
- Search for "AlteriomPainlessMesh" and update
39
- ```
40
-
41
- ## 🎯 Perfect For
42
-
43
- ✅ Dynamic mesh networks with changing topologies
44
- ✅ IoT deployments requiring automatic bridge recovery
45
- ✅ Development environments without pre-configured bridges
46
- ✅ Fault-tolerant systems needing zero-touch setup
47
-
48
- ## 🙏 Thanks
49
-
50
- Special thanks to **@woodlist** for reporting the issue and providing detailed logs!
51
-
52
- ## 📚 Learn More
53
-
54
- - 📖 [Full Release Notes](https://github.com/Alteriom/painlessMesh/blob/main/docs/releases/RELEASE_NOTES_v1.8.6.md)
55
- - 🔗 [GitHub Release](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.6)
56
- - 📝 [Changelog](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)
57
- - 💻 [Bridge Failover Example](https://github.com/Alteriom/painlessMesh/tree/main/examples/bridge_failover)
58
-
59
- ---
60
-
61
- **Upgrade today and enjoy seamless bridge failover! 🎊**
62
-
63
- #painlessMesh #ESP32 #ESP8266 #IoT #MeshNetwork #Arduino #Alteriom
@@ -1,113 +0,0 @@
1
- # 🚀 AlteriomPainlessMesh v1.8.7 Released
2
-
3
- **Date:** November 12, 2025
4
-
5
- We're pleased to announce the release of **AlteriomPainlessMesh v1.8.7**, a patch release focused on bug fixes and documentation improvements.
6
-
7
- ## 🎯 What's New
8
-
9
- ### Bridge Internet Connectivity Detection Fixed
10
-
11
- Bridge nodes now correctly detect and report internet connectivity status. The previous implementation only checked WiFi connection status, which led to incorrect reporting when bridges were connected to routers with internet access.
12
-
13
- **Key Improvements:**
14
- - ✅ Accurate internet status reporting for bridge nodes
15
- - ✅ Proper gateway IP validation (not 0.0.0.0)
16
- - ✅ Fixed false positives on regular nodes
17
- - ✅ Better bridge failover logic
18
-
19
- ### Version Documentation Clarity
20
-
21
- We've resolved confusion about version numbers in header files by creating comprehensive documentation and synchronizing all version references.
22
-
23
- **What Changed:**
24
- - ✅ All header file version comments now match library version
25
- - ✅ New VERSION_MANAGEMENT.md document explains versioning
26
- - ✅ Clear distinction between library version and file modification history
27
- - ✅ Best practices for version management established
28
-
29
- ## 📚 New Documentation
30
-
31
- ### VERSION_MANAGEMENT.md
32
-
33
- A comprehensive guide that answers:
34
- - What do version numbers in header files mean?
35
- - Where is the official library version defined?
36
- - How to check if a file has been modified?
37
- - Best practices for version comments
38
- - Complete version update workflow
39
-
40
- **Read it here:** [docs/VERSION_MANAGEMENT.md](https://github.com/Alteriom/painlessMesh/blob/main/docs/VERSION_MANAGEMENT.md)
41
-
42
- ## 🔧 For Developers
43
-
44
- ### Version Comment Best Practices
45
-
46
- When releasing new versions, remember to update header file version comments:
47
-
48
- ```cpp
49
- /**
50
- * @file painlessMesh.h
51
- * @version 1.8.7 // ← Keep this synchronized with library version
52
- * @date 2025-11-12
53
- */
54
- ```
55
-
56
- This helps maintain documentation consistency and prevents user confusion.
57
-
58
- ## 📦 How to Update
59
-
60
- ### Arduino Library Manager
61
- ```
62
- Sketch → Include Library → Manage Libraries →
63
- Search "AlteriomPainlessMesh" → Update to 1.8.7
64
- ```
65
-
66
- ### PlatformIO
67
- ```ini
68
- [env:myenv]
69
- lib_deps =
70
- alteriom/AlteriomPainlessMesh@^1.8.7
71
- ```
72
-
73
- ### NPM
74
- ```bash
75
- npm update @alteriom/painlessmesh
76
- ```
77
-
78
- ## ✅ Compatibility
79
-
80
- This release is **fully backward compatible** with v1.8.6. No breaking changes.
81
-
82
- - ✅ ESP32 (all variants)
83
- - ✅ ESP8266 (all variants)
84
- - ✅ Arduino Core 2.x and 3.x
85
- - ✅ PlatformIO
86
-
87
- ## 🐛 Bug Reports
88
-
89
- If you encounter any issues with this release, please:
90
-
91
- 1. Check the [VERSION_MANAGEMENT.md](https://github.com/Alteriom/painlessMesh/blob/main/docs/VERSION_MANAGEMENT.md) for version-related questions
92
- 2. Review the [CHANGELOG.md](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md) for detailed changes
93
- 3. [Open an issue](https://github.com/Alteriom/painlessMesh/issues) with a detailed description
94
-
95
- ## 🙏 Thank You
96
-
97
- Thanks to our users for reporting issues and helping improve the library!
98
-
99
- Special thanks to the user who raised the question about version comments in `painlessMesh.h`, leading to better documentation clarity.
100
-
101
- ## 📖 Resources
102
-
103
- - **Release Notes:** [RELEASE_NOTES_v1.8.7.md](RELEASE_NOTES_v1.8.7.md)
104
- - **CHANGELOG:** [CHANGELOG.md](../../CHANGELOG.md)
105
- - **Documentation:** https://alteriom.github.io/painlessMesh/
106
- - **GitHub Repository:** https://github.com/Alteriom/painlessMesh
107
- - **Issues:** https://github.com/Alteriom/painlessMesh/issues
108
-
109
- ---
110
-
111
- **Happy Meshing!** 🌐
112
-
113
- — The Alteriom Team