@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.
- package/CHANGELOG.md +58 -4
- package/README.md +17 -3
- package/docs/README.md +62 -10
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +166 -0
- package/docs/archive/LIBRARY_JSON_FIX.md +98 -0
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -0
- package/docs/archive/RELEASE_SUMMARY.md +173 -0
- package/docs/archive/SCONS_BUILD_FIX.md +313 -0
- package/docs/archive/TRIGGER_RELEASE.md +280 -0
- package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -0
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +71 -0
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -0
- package/docs/development/DOCKER_TESTING.md +196 -0
- package/docs/development/PLATFORMIO_USAGE.md +180 -0
- package/docs/development/TESTING_SUMMARY.md +126 -0
- package/docs/development/contributing.md +301 -0
- package/docs/development/documentation.md +583 -0
- package/docs/improvements/FUTURE_PROPOSALS.md +1016 -0
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -0
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -0
- package/docs/improvements/README.md +171 -46
- package/docs/releases/FEATURE_HISTORY.md +543 -0
- package/docs/releases/PATCH_v1.7.3.md +262 -0
- package/docs/releases/PHASE1_SUMMARY.md +246 -0
- package/docs/releases/PHASE2_SUMMARY.md +499 -0
- package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -0
- package/docs/troubleshooting/debugging.md +455 -0
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/painlessmesh/router.hpp +35 -19
- /package/docs/{improvements → archive}/FEATURE_PROPOSALS.md +0 -0
- /package/docs/{improvements → archive}/PHASE1_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/PHASE2_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/ota-and-status-enhancements.md +0 -0
- /package/docs/{improvements → archive}/ota-status-architecture-diagrams.md +0 -0
- /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
|