@alteriom/painlessmesh 1.7.2 → 1.7.3

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 (37) hide show
  1. package/CHANGELOG.md +58 -4
  2. package/README.md +17 -3
  3. package/docs/README.md +62 -10
  4. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +166 -0
  5. package/docs/archive/LIBRARY_JSON_FIX.md +98 -0
  6. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -0
  7. package/docs/archive/RELEASE_SUMMARY.md +173 -0
  8. package/docs/archive/SCONS_BUILD_FIX.md +313 -0
  9. package/docs/archive/TRIGGER_RELEASE.md +280 -0
  10. package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -0
  11. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +71 -0
  12. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -0
  13. package/docs/development/DOCKER_TESTING.md +196 -0
  14. package/docs/development/PLATFORMIO_USAGE.md +180 -0
  15. package/docs/development/TESTING_SUMMARY.md +126 -0
  16. package/docs/development/contributing.md +301 -0
  17. package/docs/development/documentation.md +583 -0
  18. package/docs/improvements/FUTURE_PROPOSALS.md +1016 -0
  19. package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -0
  20. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -0
  21. package/docs/improvements/README.md +171 -46
  22. package/docs/releases/FEATURE_HISTORY.md +543 -0
  23. package/docs/releases/PATCH_v1.7.3.md +262 -0
  24. package/docs/releases/PHASE1_SUMMARY.md +246 -0
  25. package/docs/releases/PHASE2_SUMMARY.md +499 -0
  26. package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -0
  27. package/docs/troubleshooting/debugging.md +455 -0
  28. package/library.json +1 -1
  29. package/library.properties +1 -1
  30. package/package.json +1 -1
  31. package/src/painlessmesh/router.hpp +35 -19
  32. /package/docs/{improvements → archive}/FEATURE_PROPOSALS.md +0 -0
  33. /package/docs/{improvements → archive}/PHASE1_IMPLEMENTATION.md +0 -0
  34. /package/docs/{improvements → archive}/PHASE2_IMPLEMENTATION.md +0 -0
  35. /package/docs/{improvements → archive}/ota-and-status-enhancements.md +0 -0
  36. /package/docs/{improvements → archive}/ota-status-architecture-diagrams.md +0 -0
  37. /package/docs/{improvements → archive}/ota-status-quick-reference.md +0 -0
@@ -0,0 +1,583 @@
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