@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,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