@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,583 +0,0 @@
1
- # Documentation Contributing Guide
2
-
3
- Thank you for helping improve the painlessMesh documentation! This guide will help you contribute effectively.
4
-
5
- ## Documentation Structure
6
-
7
- The documentation is organized into these main directories:
8
-
9
- ```
10
- docs/
11
- ├── README.md # Documentation index
12
- ├── getting-started/ # Installation and quickstart guides
13
- ├── tutorials/ # Step-by-step tutorials
14
- ├── api/ # API reference documentation
15
- ├── architecture/ # System design and architecture docs
16
- ├── alteriom/ # Alteriom-specific extensions
17
- ├── troubleshooting/ # Common issues and debugging
18
- ├── development/ # Development and testing docs
19
- ├── releases/ # Release notes and summaries
20
- ├── improvements/ # Feature proposals and enhancements
21
- └── archive/ # Historical/obsolete documentation
22
- ```
23
-
24
- ## Documentation Standards
25
-
26
- ### Markdown Style
27
-
28
- We follow the [Markdown Style Guide](https://www.markdownguide.org/basic-syntax/) with these specific conventions:
29
-
30
- **Headers:**
31
-
32
- - Use ATX-style headers (`#` syntax)
33
- - Add blank lines before and after headers
34
- - Use sentence case (capitalize first word only)
35
-
36
- ```markdown
37
- # Main heading
38
-
39
- ## Section heading
40
-
41
- Content goes here.
42
-
43
- ### Subsection heading
44
- ```
45
-
46
- **Lists:**
47
-
48
- - Add blank lines before and after lists
49
- - Use `-` for unordered lists
50
- - Use `1.` for ordered lists
51
- - Indent nested lists by 2 spaces
52
-
53
- ```markdown
54
- Here's a list:
55
-
56
- - First item
57
- - Second item
58
- - Nested item
59
- - Another nested
60
- - Third item
61
-
62
- Back to content.
63
- ```
64
-
65
- **Code Blocks:**
66
-
67
- - Add blank lines before and after code blocks
68
- - Always specify language for syntax highlighting
69
- - Use `cpp` for Arduino/C++ code
70
- - Use `bash` for shell commands
71
- - Use `ini` for PlatformIO config
72
-
73
- ```markdown
74
- Example code:
75
-
76
- ```cpp
77
- #include "painlessMesh.h"
78
-
79
- painlessMesh mesh;
80
- void setup() {
81
- mesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler);
82
- }
83
- ```
84
-
85
- Back to content.
86
-
87
- ```
88
-
89
- **Links:**
90
- - Use relative paths for internal documentation links
91
- - Use descriptive link text (not "click here")
92
- - Verify links work before committing
93
-
94
- ```markdown
95
- Good: See the [debugging guide](../troubleshooting/debugging.md) for details.
96
- Bad: For more info, click [here](../troubleshooting/debugging.md).
97
- ```
98
-
99
- ### File Naming
100
-
101
- - Use lowercase with hyphens: `my-document.md`
102
- - Be descriptive: `mqtt-bridge-setup.md` not `mqtt.md`
103
- - Use consistent prefixes for related docs
104
-
105
- ### Content Guidelines
106
-
107
- **Be Clear and Concise:**
108
-
109
- - Write in active voice
110
- - Use short sentences and paragraphs
111
- - Define acronyms on first use
112
- - Include examples for complex topics
113
-
114
- **Be Accurate:**
115
-
116
- - Test all code examples before documenting
117
- - Verify API references against source code
118
- - Update version numbers and compatibility info
119
- - Link to related documentation
120
-
121
- **Be Helpful:**
122
-
123
- - Anticipate user questions
124
- - Provide troubleshooting tips
125
- - Include "common mistakes" sections
126
- - Add "See Also" references
127
-
128
- ## Types of Documentation
129
-
130
- ### 1. Getting Started Guides
131
-
132
- **Purpose:** Help new users get up and running quickly
133
-
134
- **Should Include:**
135
-
136
- - Prerequisites
137
- - Installation steps
138
- - First example
139
- - Next steps / what to read next
140
-
141
- **Example Structure:**
142
-
143
- ```markdown
144
- # Quick Start Guide
145
-
146
- ## Prerequisites
147
- - Hardware requirements
148
- - Software requirements
149
-
150
- ## Installation
151
- Step-by-step installation
152
-
153
- ## Your First Mesh
154
- Simple working example with explanation
155
-
156
- ## Next Steps
157
- - Link to tutorials
158
- - Link to API reference
159
- ```
160
-
161
- ### 2. Tutorials
162
-
163
- **Purpose:** Teach specific skills through hands-on practice
164
-
165
- **Should Include:**
166
-
167
- - Learning objectives
168
- - Required materials/setup
169
- - Step-by-step instructions
170
- - Complete working code
171
- - Explanation of concepts
172
- - Troubleshooting section
173
-
174
- **Example Structure:**
175
-
176
- ```markdown
177
- # Tutorial: Building a Sensor Network
178
-
179
- **What you'll learn:**
180
- - How to use SensorPackage
181
- - Broadcasting sensor data
182
- - ...
183
-
184
- **What you'll need:**
185
- - 2+ ESP32 devices
186
- - DHT22 sensor
187
- - ...
188
-
189
- ## Step 1: Setup
190
- ...
191
-
192
- ## Step 2: Code
193
- ...
194
-
195
- ## Troubleshooting
196
- ...
197
- ```
198
-
199
- ### 3. API Documentation
200
-
201
- **Purpose:** Comprehensive reference for all classes and methods
202
-
203
- **Should Include:**
204
-
205
- - Class/function signature
206
- - Parameters with types
207
- - Return values
208
- - Description
209
- - Usage examples
210
- - Related functions
211
-
212
- **Example Structure:**
213
-
214
- ```markdown
215
- ### mesh.sendBroadcast()
216
-
217
- Sends a message to all nodes in the mesh.
218
-
219
- **Signature:**
220
- ```cpp
221
- bool sendBroadcast(String& msg);
222
- ```
223
-
224
- **Parameters:**
225
-
226
- - `msg` (String&): Message to broadcast (JSON recommended)
227
-
228
- **Returns:**
229
-
230
- - `true` if message queued successfully
231
- - `false` if queue full or error
232
-
233
- **Example:**
234
-
235
- ```cpp
236
- String msg = "{\"type\":\"sensor\",\"value\":42}";
237
- if (mesh.sendBroadcast(msg)) {
238
- Serial.println("Message sent");
239
- }
240
- ```
241
-
242
- **See Also:**
243
-
244
- - `sendSingle()` - Send to specific node
245
- - `onReceive()` - Receive messages
246
-
247
- ```
248
-
249
- ### 4. Architecture Documentation
250
-
251
- **Purpose:** Explain system design and internals
252
-
253
- **Should Include:**
254
- - High-level overview
255
- - Component diagrams
256
- - Data flow diagrams
257
- - Design decisions and rationale
258
- - Performance characteristics
259
-
260
- ### 5. Troubleshooting Guides
261
-
262
- **Purpose:** Help users solve problems
263
-
264
- **Should Include:**
265
- - Symptom description
266
- - Diagnostic steps
267
- - Common causes
268
- - Solutions
269
- - Prevention tips
270
-
271
- **Example Structure:**
272
- ```markdown
273
- ## Problem: Nodes Not Connecting
274
-
275
- **Symptoms:**
276
- - Nodes don't appear in node list
277
- - onNewConnection never fires
278
-
279
- **Diagnostic Steps:**
280
- 1. Enable debug: `mesh.setDebugMsgTypes(ERROR | CONNECTION)`
281
- 2. Check serial output for errors
282
- 3. ...
283
-
284
- **Common Causes:**
285
- - Mismatched MESH_PREFIX
286
- - Different MESH_PORT
287
- - ...
288
-
289
- **Solutions:**
290
- - Verify all nodes use same credentials
291
- - ...
292
-
293
- **Prevention:**
294
- - Use configuration file for mesh settings
295
- - ...
296
- ```
297
-
298
- ## Contributing Process
299
-
300
- ### 1. Before You Start
301
-
302
- - **Check existing issues:** Someone may already be working on it
303
- - **Discuss major changes:** Open an issue for significant additions
304
- - **Review existing docs:** Maintain consistency with current documentation
305
-
306
- ### 2. Making Changes
307
-
308
- **For Minor Edits (typos, clarifications):**
309
-
310
- 1. Edit directly on GitHub
311
- 2. Submit pull request
312
- 3. Describe what you fixed
313
-
314
- **For Major Additions:**
315
-
316
- 1. Fork the repository
317
- 2. Create a branch: `git checkout -b docs/mqtt-bridge-guide`
318
- 3. Make your changes
319
- 4. Test locally (see below)
320
- 5. Commit with descriptive message
321
- 6. Push and create pull request
322
-
323
- ### 3. Testing Your Changes
324
-
325
- **Check Markdown Formatting:**
326
-
327
- ```bash
328
- # Install markdownlint
329
- npm install -g markdownlint-cli
330
-
331
- # Check your files
332
- markdownlint docs/**/*.md
333
-
334
- # Auto-fix what's possible
335
- markdownlint --fix docs/**/*.md
336
- ```
337
-
338
- **Preview Locally:**
339
-
340
- ```bash
341
- # Option 1: VS Code with Markdown Preview
342
- # Just open .md file and press Ctrl+Shift+V
343
-
344
- # Option 2: Serve docs locally
345
- cd docs
346
- python -m http.server 8000
347
- # Open http://localhost:8000
348
- ```
349
-
350
- **Verify Links:**
351
-
352
- ```bash
353
- # Check for broken links
354
- grep -r "](.*\.md)" docs/ | # Find all markdown links
355
- while read line; do
356
- # Extract and check each link exists
357
- # (manual verification recommended)
358
- done
359
- ```
360
-
361
- ### 4. Pull Request Guidelines
362
-
363
- **PR Title:**
364
-
365
- - `docs: add MQTT bridge tutorial`
366
- - `docs: fix broken links in API reference`
367
- - `docs: update installation guide for v1.7.0`
368
-
369
- **PR Description:**
370
-
371
- ```markdown
372
- ## What
373
- Brief description of changes
374
-
375
- ## Why
376
- Why this documentation is needed
377
-
378
- ## Changes
379
- - Added new tutorial for X
380
- - Updated API reference for Y
381
- - Fixed broken links in Z
382
-
383
- ## Checklist
384
- - [ ] Markdown formatting checked
385
- - [ ] Code examples tested
386
- - [ ] Links verified
387
- - [ ] Added to appropriate index/README
388
- ```
389
-
390
- ## Documentation Maintenance
391
-
392
- ### Keeping Docs Current
393
-
394
- **Version Updates:**
395
-
396
- - Update version numbers in examples
397
- - Mark deprecated features
398
- - Add "New in v1.X" callouts
399
-
400
- **Code Examples:**
401
-
402
- - Test examples with each release
403
- - Update for API changes
404
- - Verify dependencies
405
-
406
- **Link Checking:**
407
-
408
- - Periodically verify internal links
409
- - Check external links still valid
410
- - Update or remove dead links
411
-
412
- ### Documentation Reviews
413
-
414
- When reviewing documentation PRs, check:
415
-
416
- - [ ] **Accuracy:** Information is correct and up-to-date
417
- - [ ] **Clarity:** Easy to understand for target audience
418
- - [ ] **Completeness:** Covers the topic adequately
419
- - [ ] **Examples:** Code examples work and are helpful
420
- - [ ] **Style:** Follows our markdown conventions
421
- - [ ] **Links:** All links work correctly
422
- - [ ] **Grammar:** No typos or grammar errors
423
- - [ ] **Navigation:** Added to appropriate index/README
424
-
425
- ## Common Documentation Tasks
426
-
427
- ### Adding a New Tutorial
428
-
429
- 1. Create file in `docs/tutorials/`
430
- 2. Follow tutorial structure (see above)
431
- 3. Add entry to `docs/README.md`
432
- 4. Add entry to `docs/tutorials/README.md` (if exists)
433
- 5. Link from related documents
434
-
435
- ### Updating API Reference
436
-
437
- 1. Check source code for changes
438
- 2. Update method signatures
439
- 3. Update parameter descriptions
440
- 4. Add/update examples
441
- 5. Mark deprecated methods
442
- 6. Update version compatibility info
443
-
444
- ### Fixing Broken Links
445
-
446
- 1. Find broken links: `grep -r "](.*\.md)" docs/`
447
- 2. Verify which files moved/renamed
448
- 3. Update all references
449
- 4. Check git history if uncertain
450
- 5. Test links in preview
451
-
452
- ### Adding Code Examples
453
-
454
- **Best Practices:**
455
-
456
- - Keep examples minimal and focused
457
- - Include necessary includes
458
- - Comment complex sections
459
- - Test before documenting
460
- - Show both setup and usage
461
- - Include error handling
462
-
463
- **Example Template:**
464
-
465
- ```cpp
466
- /**
467
- * Example: Sensor Data Broadcasting
468
- *
469
- * Demonstrates how to broadcast sensor readings
470
- * using the Alteriom SensorPackage.
471
- *
472
- * Hardware: ESP32 + DHT22 sensor
473
- * Libraries: painlessMesh, DHT sensor library
474
- */
475
-
476
- #include "painlessMesh.h"
477
- #include "examples/alteriom/alteriom_sensor_package.hpp"
478
- #include "DHT.h"
479
-
480
- #define MESH_PREFIX "SensorMesh"
481
- #define MESH_PASSWORD "password123"
482
- #define MESH_PORT 5555
483
- #define DHT_PIN 4
484
- #define DHT_TYPE DHT22
485
-
486
- Scheduler userScheduler;
487
- painlessMesh mesh;
488
- DHT dht(DHT_PIN, DHT_TYPE);
489
-
490
- void sendSensorData() {
491
- // Read sensor
492
- float temp = dht.readTemperature();
493
- float humidity = dht.readHumidity();
494
-
495
- // Check for errors
496
- if (isnan(temp) || isnan(humidity)) {
497
- Serial.println("Failed to read from DHT sensor");
498
- return;
499
- }
500
-
501
- // Create package
502
- alteriom::SensorPackage pkg;
503
- pkg.sensorId = mesh.getNodeId();
504
- pkg.temperature = temp;
505
- pkg.humidity = humidity;
506
- pkg.timestamp = mesh.getNodeTime();
507
-
508
- // Convert to JSON and broadcast
509
- auto var = painlessmesh::protocol::Variant(&pkg);
510
- String msg = var.to<String>();
511
-
512
- if (mesh.sendBroadcast(msg)) {
513
- Serial.printf("Sent: T=%.1f°C H=%.1f%%\n", temp, humidity);
514
- }
515
- }
516
-
517
- Task sensorTask(TASK_MINUTE, TASK_FOREVER, &sendSensorData);
518
-
519
- void setup() {
520
- Serial.begin(115200);
521
-
522
- // Initialize sensor
523
- dht.begin();
524
-
525
- // Initialize mesh
526
- mesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT);
527
-
528
- // Add task
529
- userScheduler.addTask(sensorTask);
530
- sensorTask.enable();
531
- }
532
-
533
- void loop() {
534
- mesh.update();
535
- }
536
- ```
537
-
538
- ## Style Cheatsheet
539
-
540
- ### Quick Reference
541
-
542
- ```markdown
543
- # H1 - Main page title (one per page)
544
-
545
- ## H2 - Major sections
546
-
547
- ### H3 - Subsections
548
-
549
- **Bold** for emphasis, `code` for technical terms
550
-
551
- - Unordered lists
552
- - Nested items
553
- 1. Ordered lists
554
- 2. For sequential steps
555
-
556
- ```cpp
557
- // Code blocks with language
558
- void example() {
559
- // Code here
560
- }
561
- ```
562
-
563
- > Blockquotes for important notes
564
-
565
- | Tables | Are | Supported |
566
- |--------|-----|-----------|
567
- | Use | For | Structured data |
568
-
569
- [Link text](relative/path/to/file.md)
570
-
571
- ```
572
-
573
- ## Questions?
574
-
575
- - **General questions:** Open a [discussion](https://github.com/Alteriom/painlessMesh/discussions)
576
- - **Found an error:** Open an [issue](https://github.com/Alteriom/painlessMesh/issues)
577
- - **Want to help:** Check [good first issues](https://github.com/Alteriom/painlessMesh/labels/good%20first%20issue)
578
-
579
- ## See Also
580
-
581
- - [Contributing Guidelines](../../CONTRIBUTING.md) - General contribution guide
582
- - [Code Style Guide](contributing.md) - Code contribution standards
583
- - [Release Guide](../../RELEASE_GUIDE.md) - Release process documentation