@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
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
19
|
|
|
20
20
|
- TBD
|
|
21
21
|
|
|
22
|
+
## [1.7.3] - 2025-10-16
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **Router Memory Safety**: Replaced dangerous escalating memory allocation workaround with safe pre-calculated capacity
|
|
27
|
+
- Removed static `baseCapacity` variable that grew indefinitely (512B → 20KB)
|
|
28
|
+
- Implemented single-allocation strategy with pre-calculated capacity based on message size and nesting depth
|
|
29
|
+
- Added 8KB safety cap to protect ESP8266 devices from OOM crashes
|
|
30
|
+
- Support for both ArduinoJson v6 and v7 with version-aware capacity calculation
|
|
31
|
+
|
|
32
|
+
### Performance
|
|
33
|
+
|
|
34
|
+
- **Small messages (50B)**: +512B predictable overhead (vs. variable 512B-20KB in v1.7.0)
|
|
35
|
+
- **Medium messages (500B)**: -3596B saved by eliminating retry allocations
|
|
36
|
+
- **Large messages (2KB)**: -17KB saved by preventing escalation to 20KB
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- **Tests**: New comprehensive memory safety test suite (`test/catch/catch_router_memory.cpp`)
|
|
41
|
+
- Simple message parsing tests
|
|
42
|
+
- Deeply nested JSON structure tests (10+ levels)
|
|
43
|
+
- Oversized message handling tests
|
|
44
|
+
- Predictable capacity allocation verification
|
|
45
|
+
- 14 new assertions, all passing
|
|
46
|
+
|
|
47
|
+
### Documentation
|
|
48
|
+
|
|
49
|
+
- **CODE_REFACTORING_RECOMMENDATIONS.md**: Comprehensive code analysis document with 8 prioritized refactoring recommendations (P0-P3)
|
|
50
|
+
- **PATCH_v1.7.3.md**: Complete release notes with before/after comparison, performance metrics, and migration guide
|
|
51
|
+
|
|
52
|
+
### Technical Details
|
|
53
|
+
|
|
54
|
+
- Fixes issue #521: ArduinoJson copy constructor segmentation fault workaround
|
|
55
|
+
- All 710+ test assertions passing across 18 test suites
|
|
56
|
+
- Docker-based testing on Linux x86_64 with CMake + Ninja
|
|
57
|
+
|
|
22
58
|
## [1.7.2] - 2025-10-15
|
|
23
59
|
|
|
24
60
|
### Fixed
|
|
@@ -26,7 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
26
62
|
- **NPM Configuration**: Updated `.npmrc` to use public NPM registry instead of GitHub Packages
|
|
27
63
|
- **Dependencies**: Moved `@alteriom/mqtt-schema` back to `devDependencies` now that it's publicly available
|
|
28
64
|
- **Automated Releases**: Fixed npm install failures during automated release workflow
|
|
29
|
-
- **Package Availability**: Package now accessible at https://www.npmjs.com/package/@alteriom/mqtt-schema
|
|
65
|
+
- **Package Availability**: Package now accessible at <https://www.npmjs.com/package/@alteriom/mqtt-schema>
|
|
30
66
|
|
|
31
67
|
## [1.7.1] - 2025-10-15
|
|
32
68
|
|
|
@@ -52,6 +88,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
52
88
|
#### Phase 2: Broadcast OTA & MQTT Status Bridge
|
|
53
89
|
|
|
54
90
|
**Broadcast OTA Distribution**
|
|
91
|
+
|
|
55
92
|
- ✨ **Broadcast Mode OTA**: True mesh-wide firmware distribution with ~98% network traffic reduction for 50+ node meshes
|
|
56
93
|
- 📡 **Parallel Updates**: All nodes receive firmware chunks simultaneously instead of sequential unicast
|
|
57
94
|
- ⚡ **Performance**: ~50x faster for 50-node mesh, ~100x faster for 100-node mesh
|
|
@@ -60,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
60
97
|
- 📊 **Scalability**: Efficiently handles 50-100+ node meshes with minimal overhead
|
|
61
98
|
|
|
62
99
|
**MQTT Status Bridge**
|
|
100
|
+
|
|
63
101
|
- 🌉 **Professional Monitoring**: Complete MQTT bridge for publishing mesh status to monitoring tools
|
|
64
102
|
- 📈 **Multiple Topics**: Publishes topology, metrics, alerts, and per-node status
|
|
65
103
|
- 🔗 **Tool Integration**: Ready for Grafana, InfluxDB, Prometheus, Home Assistant, Node-RED
|
|
@@ -157,14 +195,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
157
195
|
### ⚙️ Configuration Changes
|
|
158
196
|
|
|
159
197
|
**library.json**
|
|
198
|
+
|
|
160
199
|
- Added `"srcDir": "src"` for explicit source directory
|
|
161
200
|
- Added `"includeDir": "src"` for explicit include directory
|
|
162
201
|
- Removed conflicting `"export": {"include": "src"}` section
|
|
163
202
|
|
|
164
203
|
**library.properties**
|
|
204
|
+
|
|
165
205
|
- Updated `includes=painlessMesh.h` (was AlteriomPainlessMesh.h)
|
|
166
206
|
|
|
167
207
|
**package.json**
|
|
208
|
+
|
|
168
209
|
- Renamed `build` → `dev:build` (prevents auto-execution)
|
|
169
210
|
- Renamed `prebuild` → `dev:prebuild` (prevents auto-execution)
|
|
170
211
|
- Updated to @alteriom/mqtt-schema v0.5.0
|
|
@@ -172,6 +213,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
172
213
|
### 📊 Performance Improvements
|
|
173
214
|
|
|
174
215
|
**Broadcast OTA Performance**
|
|
216
|
+
|
|
175
217
|
- **Network Traffic**: 90% reduction (10 nodes), 98% reduction (50 nodes), 99% reduction (100 nodes)
|
|
176
218
|
- **Update Speed**: ~N times faster (parallel vs sequential)
|
|
177
219
|
- **Example**: 150-chunk firmware to 50 nodes
|
|
@@ -180,6 +222,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
180
222
|
- **Savings: 98% (7,350 transmissions)**
|
|
181
223
|
|
|
182
224
|
**Memory Impact**
|
|
225
|
+
|
|
183
226
|
- Broadcast OTA: +2-5KB per node (chunk tracking)
|
|
184
227
|
- MQTT Bridge: +5-8KB (root node only)
|
|
185
228
|
- Minimal overhead for ESP32, acceptable for ESP8266
|
|
@@ -205,6 +248,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
205
248
|
**No migration required** for existing code. To adopt new features:
|
|
206
249
|
|
|
207
250
|
**Enable Broadcast OTA:**
|
|
251
|
+
|
|
208
252
|
```cpp
|
|
209
253
|
// Before (v1.6.x)
|
|
210
254
|
mesh.offerOTA(role, hw, md5, parts, false, false, true);
|
|
@@ -215,6 +259,7 @@ mesh.offerOTA(role, hw, md5, parts, false, true, true);
|
|
|
215
259
|
```
|
|
216
260
|
|
|
217
261
|
**Add MQTT Status Bridge:**
|
|
262
|
+
|
|
218
263
|
```cpp
|
|
219
264
|
#include "examples/bridge/mqtt_status_bridge.hpp"
|
|
220
265
|
|
|
@@ -277,8 +322,8 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
277
322
|
- Release validation with multi-file version consistency
|
|
278
323
|
- **Arduino IDE Support**: Added keywords.txt for syntax highlighting
|
|
279
324
|
- **Distribution Documentation**: Complete guides for all publication channels
|
|
280
|
-
- RELEASE_SUMMARY.md template for release notes
|
|
281
|
-
- TRIGGER_RELEASE.md for step-by-step release instructions
|
|
325
|
+
- docs/archive/RELEASE_SUMMARY.md template for release notes (archived)
|
|
326
|
+
- docs/archive/TRIGGER_RELEASE.md for step-by-step release instructions (archived, see RELEASE_GUIDE.md)
|
|
282
327
|
- Enhanced RELEASE_GUIDE.md with comprehensive publication workflow
|
|
283
328
|
- **Version Management**: Enhanced bump-version script
|
|
284
329
|
- Updates all three version files simultaneously (library.properties, library.json, package.json)
|
|
@@ -286,6 +331,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
286
331
|
- Clear instructions for NPM and GitHub Packages publication
|
|
287
332
|
|
|
288
333
|
### Changed
|
|
334
|
+
|
|
289
335
|
- **Library Name**: Updated from "Painless Mesh" to "Alteriom PainlessMesh" for Arduino Library Manager
|
|
290
336
|
- **Release Process**: Streamlined to support multiple package managers
|
|
291
337
|
- Single commit with "release:" prefix triggers full publication pipeline
|
|
@@ -301,6 +347,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
301
347
|
- Troubleshooting guides for each distribution channel
|
|
302
348
|
|
|
303
349
|
### Fixed
|
|
350
|
+
|
|
304
351
|
- **NPM Publishing**: Fixed registry configuration issues that prevented NPM publication
|
|
305
352
|
- **GitHub Pages**: Improved workflow to handle cases where Pages is not configured
|
|
306
353
|
- **PlatformIO Build**: Fixed include paths in improved_sensor_node.ino example
|
|
@@ -311,6 +358,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
311
358
|
## [1.6.0] - 2025-09-29
|
|
312
359
|
|
|
313
360
|
### Added
|
|
361
|
+
|
|
314
362
|
- Enhanced Alteriom-specific package documentation and examples
|
|
315
363
|
- Updated repository URLs and metadata for Alteriom fork
|
|
316
364
|
- Improved release process documentation
|
|
@@ -319,11 +367,13 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
319
367
|
- Comprehensive Alteriom package documentation and quick start guide
|
|
320
368
|
|
|
321
369
|
### Changed
|
|
370
|
+
|
|
322
371
|
- Migrated from deprecated `actions/create-release@v1` to GitHub CLI for releases
|
|
323
372
|
- Updated library.properties and library.json to reflect Alteriom ownership
|
|
324
373
|
- Enhanced package descriptions to highlight Alteriom extensions
|
|
325
374
|
|
|
326
375
|
### Fixed
|
|
376
|
+
|
|
327
377
|
- Fixed deprecated GitHub Actions in release workflow
|
|
328
378
|
- Corrected undefined variable references in upload workflow steps
|
|
329
379
|
- Updated repository URLs from GitLab to GitHub in library files
|
|
@@ -331,6 +381,7 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
331
381
|
## [1.5.6] - Current Release
|
|
332
382
|
|
|
333
383
|
### Features
|
|
384
|
+
|
|
334
385
|
- painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices
|
|
335
386
|
- Automatic routing and network management
|
|
336
387
|
- JSON-based messaging system
|
|
@@ -339,16 +390,19 @@ This release includes contributions from Phase 2 implementation, bug fixes disco
|
|
|
339
390
|
- Sensor network patterns for IoT applications
|
|
340
391
|
|
|
341
392
|
### Platforms Supported
|
|
393
|
+
|
|
342
394
|
- ESP32 (espressif32)
|
|
343
395
|
- ESP8266 (espressif8266)
|
|
344
396
|
|
|
345
397
|
### Dependencies
|
|
398
|
+
|
|
346
399
|
- ArduinoJson ^7.4.2
|
|
347
400
|
- TaskScheduler ^3.8.5
|
|
348
401
|
- AsyncTCP ^3.4.7 (ESP32)
|
|
349
402
|
- ESPAsyncTCP ^2.0.0 (ESP8266)
|
|
350
403
|
|
|
351
404
|
### Alteriom Extensions
|
|
405
|
+
|
|
352
406
|
- SensorPackage for environmental monitoring
|
|
353
407
|
- CommandPackage for device control
|
|
354
408
|
- StatusPackage for health monitoring
|
|
@@ -378,4 +432,4 @@ This project follows [Semantic Versioning](https://semver.org/):
|
|
|
378
432
|
- **MINOR** version when you add functionality in a backwards compatible manner
|
|
379
433
|
- **PATCH** version when you make backwards compatible bug fixes
|
|
380
434
|
|
|
381
|
-
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
|
|
435
|
+
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
|
package/README.md
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
[](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml)
|
|
8
8
|
[](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml)
|
|
9
9
|
[](https://github.com/Alteriom/painlessMesh/actions/workflows/release.yml)
|
|
10
|
-
[](https://github.com/Alteriom/painlessMesh/releases)
|
|
11
|
+
[](https://www.npmjs.com/package/@alteriom/painlessmesh)
|
|
11
12
|
[](https://registry.platformio.org/libraries/alteriom/painlessMesh)
|
|
12
13
|
[](https://www.arduino.cc/reference/en/libraries/alteriompainlessmesh/)
|
|
13
14
|
|
|
@@ -33,12 +34,14 @@ All packages provide type-safe serialization, automatic JSON conversion, and mes
|
|
|
33
34
|
#### 🚀 Phase 2 Features (v1.7.0+)
|
|
34
35
|
|
|
35
36
|
**Broadcast OTA Distribution**
|
|
37
|
+
|
|
36
38
|
- 📡 **98% Network Traffic Reduction** for 50+ node meshes
|
|
37
39
|
- ⚡ **Parallel Firmware Updates** - All nodes receive simultaneously
|
|
38
40
|
- 🔄 **Backward Compatible** - Single parameter enables broadcast mode
|
|
39
41
|
- 📊 **Scales to 100+ Nodes** efficiently
|
|
40
42
|
|
|
41
43
|
**MQTT Status Bridge**
|
|
44
|
+
|
|
42
45
|
- 🌉 **Professional Monitoring** - Grafana, InfluxDB, Prometheus integration
|
|
43
46
|
- 📈 **Real-Time Topology** - Complete mesh visualization over MQTT
|
|
44
47
|
- 🎯 **Production Ready** - Enterprise IoT and commercial deployments
|
|
@@ -56,10 +59,12 @@ The MQTT bridge enables bidirectional communication between MQTT brokers and mes
|
|
|
56
59
|
- **Event Notifications** - Track node connections, disconnections, and mesh topology changes
|
|
57
60
|
|
|
58
61
|
**Documentation:**
|
|
62
|
+
|
|
59
63
|
- 📖 [MQTT Bridge Commands Reference](docs/MQTT_BRIDGE_COMMANDS.md) - Complete command API documentation
|
|
60
64
|
- 🔧 [OTA Commands Reference](docs/OTA_COMMANDS_REFERENCE.md) - Over-the-air firmware updates
|
|
61
65
|
|
|
62
66
|
**Examples:**
|
|
67
|
+
|
|
63
68
|
- 🌉 [MQTT Command Bridge](examples/mqttCommandBridge/mqttCommandBridge.ino) - Gateway bridge with bidirectional MQTT-mesh routing
|
|
64
69
|
- 📡 [Mesh Command Node](examples/alteriom/mesh_command_node.ino) - Node that receives and handles MQTT commands
|
|
65
70
|
|
|
@@ -178,6 +183,7 @@ void receivedCallback(uint32_t from, String& msg) {
|
|
|
178
183
|
## Key Features
|
|
179
184
|
|
|
180
185
|
### Core Features
|
|
186
|
+
|
|
181
187
|
- **🔄 Automatic Mesh Formation** - Nodes discover and connect automatically
|
|
182
188
|
- **📡 Self-Healing Network** - Adapts when nodes join/leave
|
|
183
189
|
- **⏰ Time Synchronization** - Coordinated actions across all nodes
|
|
@@ -187,6 +193,7 @@ void receivedCallback(uint32_t from, String& msg) {
|
|
|
187
193
|
- **🛡️ Memory Efficient** - Optimized for resource-constrained devices
|
|
188
194
|
|
|
189
195
|
### Advanced Features (v1.7.0+)
|
|
196
|
+
|
|
190
197
|
- **📡 Broadcast OTA** - Efficient firmware distribution for large meshes (50-100+ nodes)
|
|
191
198
|
- **🌉 MQTT Bridge** - Professional monitoring with Grafana/InfluxDB/Prometheus
|
|
192
199
|
- **📊 Topology Visualization** - D3.js, Cytoscape.js, Node-RED examples
|
|
@@ -210,6 +217,7 @@ void receivedCallback(uint32_t from, String& msg) {
|
|
|
210
217
|
## Development
|
|
211
218
|
|
|
212
219
|
### Building from Source
|
|
220
|
+
|
|
213
221
|
```bash
|
|
214
222
|
git clone https://github.com/Alteriom/painlessMesh.git
|
|
215
223
|
cd painlessMesh
|
|
@@ -220,6 +228,7 @@ run-parts --regex catch_ bin/ # Run tests
|
|
|
220
228
|
```
|
|
221
229
|
|
|
222
230
|
### Requirements
|
|
231
|
+
|
|
223
232
|
- **ESP32/ESP8266**: Arduino Core 2.0.0+
|
|
224
233
|
- **Dependencies**: ArduinoJson 6.x, TaskScheduler 3.x
|
|
225
234
|
- **Development**: CMake, Ninja, Boost (for desktop testing)
|
|
@@ -229,12 +238,14 @@ run-parts --regex catch_ bin/ # Run tests
|
|
|
229
238
|
painlessMesh features a state-of-the-art automated CI/CD pipeline:
|
|
230
239
|
|
|
231
240
|
**🔄 Continuous Integration:**
|
|
241
|
+
|
|
232
242
|
- Automated builds on gcc/clang with strict warnings
|
|
233
243
|
- Cross-platform testing (Arduino CLI, PlatformIO)
|
|
234
244
|
- Code quality and formatting validation
|
|
235
245
|
- Comprehensive test suite execution
|
|
236
246
|
|
|
237
247
|
**🚀 Automated Releases:**
|
|
248
|
+
|
|
238
249
|
- Semantic versioning with automated tagging
|
|
239
250
|
- GitHub Releases with changelog generation
|
|
240
251
|
- Library package distribution
|
|
@@ -242,6 +253,7 @@ painlessMesh features a state-of-the-art automated CI/CD pipeline:
|
|
|
242
253
|
- Arduino Library Manager & PlatformIO Registry integration
|
|
243
254
|
|
|
244
255
|
**📋 Release Management:**
|
|
256
|
+
|
|
245
257
|
```bash
|
|
246
258
|
# Bump version and prepare release
|
|
247
259
|
./scripts/bump-version.sh patch # or minor, major
|
|
@@ -321,16 +333,19 @@ You can tip me using ko-fi:
|
|
|
321
333
|
- **[❓ FAQ](https://alteriom.github.io/painlessMesh/#/troubleshooting/faq)** - Frequently asked questions
|
|
322
334
|
|
|
323
335
|
**📖 Tutorials & Examples:**
|
|
336
|
+
|
|
324
337
|
- **[Basic Examples](docs/tutorials/basic-examples.md)** - Essential patterns and techniques
|
|
325
338
|
- **[Custom Packages](docs/tutorials/custom-packages.md)** - Type-safe message handling
|
|
326
339
|
- **[Sensor Networks](docs/tutorials/sensor-networks.md)** - IoT sensor network patterns
|
|
327
340
|
|
|
328
341
|
**🚀 Alteriom Extensions:**
|
|
342
|
+
|
|
329
343
|
- **[Alteriom Overview](docs/alteriom/overview.md)** - Production-ready IoT packages
|
|
330
344
|
- **[Sensor Packages](docs/alteriom/sensor-packages.md)** - Environmental monitoring
|
|
331
345
|
- **[Command System](docs/alteriom/command-system.md)** - Device control and automation
|
|
332
346
|
|
|
333
347
|
**🔧 Troubleshooting:**
|
|
348
|
+
|
|
334
349
|
- **[Common Issues](docs/troubleshooting/common-issues.md)** - Solutions to frequent problems
|
|
335
350
|
- **[FAQ](docs/troubleshooting/faq.md)** - Frequently asked questions
|
|
336
351
|
- **[Debugging Guide](docs/troubleshooting/debugging.md)** - Tools and techniques
|
|
@@ -467,8 +482,7 @@ Note: The mesh must be on the same WiFi channel as the AP.
|
|
|
467
482
|
Change the internal log level. List of types defined in Logger.hpp:
|
|
468
483
|
ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE
|
|
469
484
|
|
|
470
|
-
|
|
471
|
-
# Funding
|
|
485
|
+
# Funding
|
|
472
486
|
|
|
473
487
|
Most development of painlessMesh has been done as a hobby, but some specific features have been funded by the companies listed below:
|
|
474
488
|
|
package/docs/README.md
CHANGED
|
@@ -1,62 +1,114 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 📚 AlteriomPainlessMesh Documentation
|
|
2
2
|
|
|
3
|
-
Welcome to the comprehensive documentation for painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library
|
|
3
|
+
Welcome to the comprehensive documentation for the Alteriom fork of painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library with advanced OTA updates, MQTT integration, and structured IoT packages.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🌟 What's New in Alteriom Fork
|
|
6
|
+
|
|
7
|
+
- **Broadcast OTA Distribution** - 98% network traffic reduction for large meshes
|
|
8
|
+
- **MQTT Status Bridge** - Enterprise monitoring integration (Grafana, InfluxDB)
|
|
9
|
+
- **Structured Packages** - SensorPackage, CommandPackage, StatusPackage
|
|
10
|
+
- **Enhanced CI/CD** - Automated releases to NPM, PlatformIO, Arduino Library Manager
|
|
11
|
+
|
|
12
|
+
## 📖 Documentation Structure
|
|
6
13
|
|
|
7
14
|
### Getting Started
|
|
15
|
+
|
|
8
16
|
- [Quick Start Guide](getting-started/quickstart.md) - Get up and running in minutes
|
|
9
17
|
- [Installation](getting-started/installation.md) - Detailed installation instructions
|
|
10
18
|
- [First Mesh Network](getting-started/first-mesh.md) - Your first working mesh
|
|
11
19
|
|
|
12
20
|
### Architecture & Design
|
|
21
|
+
|
|
13
22
|
- [Mesh Architecture](architecture/mesh-architecture.md) - How painlessMesh works internally
|
|
14
23
|
- [Plugin System](architecture/plugin-system.md) - Understanding the plugin architecture
|
|
15
24
|
- [Message Routing](architecture/routing.md) - Message routing algorithms and strategies
|
|
16
25
|
- [Time Synchronization](architecture/time-sync.md) - Mesh-wide time synchronization
|
|
17
26
|
|
|
18
27
|
### API Reference
|
|
28
|
+
|
|
19
29
|
- [Core API](api/core-api.md) - Main painlessMesh class methods
|
|
20
30
|
- [Plugin API](api/plugin-api.md) - Creating custom packages and plugins
|
|
21
31
|
- [Configuration](api/configuration.md) - Configuration options and constants
|
|
22
32
|
- [Callbacks](api/callbacks.md) - Event handling and callbacks
|
|
23
33
|
|
|
24
34
|
### Tutorials & Examples
|
|
35
|
+
|
|
25
36
|
- [Basic Examples](tutorials/basic-examples.md) - Simple mesh networking examples
|
|
26
37
|
- [Custom Packages](tutorials/custom-packages.md) - Creating your own message types
|
|
27
38
|
- [Sensor Networks](tutorials/sensor-networks.md) - Building IoT sensor networks
|
|
28
39
|
- [Bridge Applications](tutorials/bridge-apps.md) - Connecting mesh to external networks
|
|
29
40
|
|
|
30
41
|
### Alteriom Extensions
|
|
42
|
+
|
|
31
43
|
- [Alteriom Overview](alteriom/overview.md) - Alteriom-specific functionality
|
|
32
44
|
- [Sensor Packages](alteriom/sensor-packages.md) - Environmental sensor data handling
|
|
33
45
|
- [Command System](alteriom/command-system.md) - Device command and control
|
|
34
46
|
- [Status Monitoring](alteriom/status-monitoring.md) - Device health and diagnostics
|
|
35
47
|
|
|
48
|
+
### 📡 MQTT Integration
|
|
49
|
+
|
|
50
|
+
- **[MQTT Bridge Commands](MQTT_BRIDGE_COMMANDS.md)** - Complete MQTT command API
|
|
51
|
+
- **[MQTT Bridge Implementation](MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md)** - Implementation details
|
|
52
|
+
- **[MQTT Schema Compliance](MQTT_SCHEMA_COMPLIANCE.md)** - Schema validation
|
|
53
|
+
- **[OTA Commands Reference](OTA_COMMANDS_REFERENCE.md)** - OTA update commands
|
|
54
|
+
- **[Mesh Topology Guide](MESH_TOPOLOGY_GUIDE.md)** - Topology reporting over MQTT
|
|
55
|
+
|
|
36
56
|
### Advanced Topics
|
|
57
|
+
|
|
37
58
|
- [Performance Optimization](advanced/performance.md) - Optimizing mesh performance
|
|
38
59
|
- [Memory Management](advanced/memory.md) - Managing ESP8266/ESP32 memory constraints
|
|
39
60
|
- [Security Considerations](advanced/security.md) - Securing your mesh network
|
|
40
61
|
- [OTA Updates](advanced/ota.md) - Over-the-air firmware updates in mesh
|
|
41
62
|
|
|
42
63
|
### Troubleshooting
|
|
64
|
+
|
|
43
65
|
- [Common Issues](troubleshooting/common-issues.md) - Solutions to frequent problems
|
|
44
66
|
- [Debugging Guide](troubleshooting/debugging.md) - Tools and techniques for debugging
|
|
45
67
|
- [FAQ](troubleshooting/faq.md) - Frequently asked questions
|
|
46
68
|
- [Network Issues](troubleshooting/network-issues.md) - Connectivity and mesh topology problems
|
|
47
69
|
|
|
48
70
|
### Development
|
|
71
|
+
|
|
49
72
|
- [Contributing](development/contributing.md) - How to contribute to painlessMesh
|
|
50
73
|
- [Building & Testing](development/building.md) - Development environment setup
|
|
51
74
|
- [Documentation](development/documentation.md) - Contributing to documentation
|
|
52
75
|
- [Release Process](development/releases.md) - Understanding releases and versioning
|
|
76
|
+
- **[Docker Testing](development/DOCKER_TESTING.md)** - Containerized testing environment
|
|
77
|
+
- **[Testing Summary](development/TESTING_SUMMARY.md)** - Complete test suite overview
|
|
78
|
+
- **[Arduino Compliance](development/ARDUINO_COMPLIANCE_SUMMARY.md)** - Arduino Library Manager standards
|
|
79
|
+
- **[PlatformIO Usage](development/PLATFORMIO_USAGE.md)** - PlatformIO integration guide
|
|
80
|
+
|
|
81
|
+
### 📦 Releases & Changelogs
|
|
82
|
+
|
|
83
|
+
- **[Feature History](releases/FEATURE_HISTORY.md)** - ⭐ Consolidated Phase 1 & 2 development history
|
|
84
|
+
- **[Release Notes v1.7.0](releases/RELEASE_NOTES_1.7.0.md)** - Detailed v1.7.0 release notes
|
|
85
|
+
- **[CHANGELOG](../CHANGELOG.md)** - Complete version history
|
|
86
|
+
- **[RELEASE_GUIDE](../RELEASE_GUIDE.md)** - Maintainer release process
|
|
87
|
+
- [Phase 1 Details](releases/PHASE1_SUMMARY.md) - v1.6.x detailed summary (archived)
|
|
88
|
+
- [Phase 2 Details](releases/PHASE2_SUMMARY.md) - v1.7.x detailed summary (archived)
|
|
89
|
+
|
|
90
|
+
### 🗂️ Core Documentation (Root)
|
|
91
|
+
|
|
92
|
+
- **[Main README](../README.md)** - Project overview and quick start
|
|
93
|
+
- **[CONTRIBUTING](../CONTRIBUTING.md)** - Contribution guidelines
|
|
94
|
+
- **[LICENSE](../LICENSE)** - LGPL-3.0 license terms
|
|
95
|
+
|
|
96
|
+
### 🗃️ Historical & Archive
|
|
97
|
+
|
|
98
|
+
- **[Archive](archive/)** - Historical bug fixes and obsolete documentation
|
|
99
|
+
- Bug fix documentation (SCONS, VECTOR, LIBRARY fixes)
|
|
100
|
+
- Legacy deployment guides
|
|
101
|
+
- Superseded release documentation
|
|
102
|
+
|
|
103
|
+
### 🚀 Improvements & Enhancements
|
|
53
104
|
|
|
54
|
-
|
|
55
|
-
- [
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
105
|
+
- **[Improvements Overview](improvements/README.md)** - Complete guide to library enhancements
|
|
106
|
+
- **[OTA & Status Enhancements](improvements/OTA_STATUS_ENHANCEMENTS.md)** 📋 - Complete reference for all options
|
|
107
|
+
- ✅ Phase 1 (v1.6.x): Compressed OTA + Enhanced Status
|
|
108
|
+
- ✅ Phase 2 (v1.7.0): Broadcast OTA + MQTT Bridge
|
|
109
|
+
- 📋 Phase 3 (Future): Progressive rollout, P2P distribution, real-time telemetry
|
|
110
|
+
- **[Implementation History](improvements/IMPLEMENTATION_HISTORY.md)** 🔧 - Technical details for Phases 1-2
|
|
111
|
+
- **[Future Proposals](improvements/FUTURE_PROPOSALS.md)** 🚀 - Phase 3+ roadmap and specifications
|
|
60
112
|
|
|
61
113
|
## Quick Links
|
|
62
114
|
|
|
@@ -75,4 +127,4 @@ Welcome to the comprehensive documentation for painlessMesh - a user-friendly ES
|
|
|
75
127
|
|
|
76
128
|
---
|
|
77
129
|
|
|
78
|
-
This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.
|
|
130
|
+
This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# GitHub Pages Deployment Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to deploy the Docusaurus documentation site to GitHub Pages.
|
|
4
|
+
|
|
5
|
+
## 🚀 Deployment Steps
|
|
6
|
+
|
|
7
|
+
### 1. Enable GitHub Pages
|
|
8
|
+
|
|
9
|
+
1. Go to your repository on GitHub: `https://github.com/Alteriom/painlessMesh`
|
|
10
|
+
2. Click **Settings** tab
|
|
11
|
+
3. Scroll down to **Pages** section
|
|
12
|
+
4. Under **Source**, select **GitHub Actions**
|
|
13
|
+
5. Save the changes
|
|
14
|
+
|
|
15
|
+
### 2. Commit and Push Changes
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Add all changes
|
|
19
|
+
git add .
|
|
20
|
+
|
|
21
|
+
# Commit the Docusaurus setup
|
|
22
|
+
git commit -m "feat: Add Docusaurus documentation site
|
|
23
|
+
|
|
24
|
+
- Replace basic HTML generation with modern Docusaurus
|
|
25
|
+
- Add GitHub Actions workflow for automated deployment
|
|
26
|
+
- Include Alteriom package documentation
|
|
27
|
+
- Integrate Doxygen API docs with user guides
|
|
28
|
+
- Enable responsive design and built-in search
|
|
29
|
+
|
|
30
|
+
Closes: Documentation modernization initiative"
|
|
31
|
+
|
|
32
|
+
# Push to trigger deployment
|
|
33
|
+
git push origin main
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 3. Monitor Deployment
|
|
37
|
+
|
|
38
|
+
1. Go to **Actions** tab in your repository
|
|
39
|
+
2. Watch the **Documentation** workflow run
|
|
40
|
+
3. When complete, your site will be available at:
|
|
41
|
+
- **URL**: `https://alteriom.github.io/painlessMesh/`
|
|
42
|
+
|
|
43
|
+
## 🛠️ Local Development
|
|
44
|
+
|
|
45
|
+
### Start Development Server
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cd website
|
|
49
|
+
npm start
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Visit: `http://localhost:3000/painlessMesh/`
|
|
53
|
+
|
|
54
|
+
### Build for Production
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
cd website
|
|
58
|
+
npm run build
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Test Production Build
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
cd website
|
|
65
|
+
npm run serve
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 📁 Documentation Structure
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
website/
|
|
72
|
+
├── docs/ # Main documentation
|
|
73
|
+
│ ├── intro.md # Homepage content
|
|
74
|
+
│ ├── getting-started/ # Installation & quickstart
|
|
75
|
+
│ ├── api/ # API reference
|
|
76
|
+
│ ├── alteriom/ # Alteriom extensions
|
|
77
|
+
│ ├── tutorials/ # Usage examples
|
|
78
|
+
│ ├── architecture/ # Technical details
|
|
79
|
+
│ ├── advanced/ # Advanced topics
|
|
80
|
+
│ └── troubleshooting/ # Help & FAQ
|
|
81
|
+
├── static/ # Static assets
|
|
82
|
+
│ └── api/ # Doxygen API docs (auto-generated)
|
|
83
|
+
├── docusaurus.config.ts # Main configuration
|
|
84
|
+
└── sidebars.ts # Navigation structure
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 🔄 Workflow Overview
|
|
88
|
+
|
|
89
|
+
The GitHub Actions workflow:
|
|
90
|
+
|
|
91
|
+
1. **Checkout** repository code
|
|
92
|
+
2. **Setup Node.js** for Docusaurus
|
|
93
|
+
3. **Install Doxygen** for API documentation
|
|
94
|
+
4. **Generate API docs** using existing Doxygen config
|
|
95
|
+
5. **Install dependencies** for Docusaurus
|
|
96
|
+
6. **Integrate Doxygen** output with Docusaurus
|
|
97
|
+
7. **Build site** for production
|
|
98
|
+
8. **Deploy** to GitHub Pages
|
|
99
|
+
|
|
100
|
+
## 🎯 Benefits Over Previous System
|
|
101
|
+
|
|
102
|
+
| Feature | Old System | **New Docusaurus** |
|
|
103
|
+
|---------|------------|-------------------|
|
|
104
|
+
| **Search** | ❌ None | ✅ Built-in Algolia search |
|
|
105
|
+
| **Mobile** | ❌ Poor responsive | ✅ Perfect mobile experience |
|
|
106
|
+
| **Navigation** | ❌ Manual links | ✅ Auto-generated sidebar |
|
|
107
|
+
| **Performance** | ❌ Slow page loads | ✅ Single-page app speed |
|
|
108
|
+
| **Maintenance** | ❌ Manual HTML generation | ✅ Pure Markdown workflow |
|
|
109
|
+
| **Link validation** | ❌ Broken links undetected | ✅ Automatic validation |
|
|
110
|
+
| **Versioning** | ❌ Not supported | ✅ Multiple library versions |
|
|
111
|
+
| **API integration** | ❌ Separate Doxygen site | ✅ Seamless integration |
|
|
112
|
+
|
|
113
|
+
## 🔧 Customization
|
|
114
|
+
|
|
115
|
+
### Adding New Pages
|
|
116
|
+
|
|
117
|
+
1. Create `.md` files in appropriate `docs/` subdirectory
|
|
118
|
+
2. Update `sidebars.ts` to include in navigation
|
|
119
|
+
3. Commit and push - automatic deployment
|
|
120
|
+
|
|
121
|
+
### Modifying Branding
|
|
122
|
+
|
|
123
|
+
Edit `docusaurus.config.ts`:
|
|
124
|
+
- `title`: Site title
|
|
125
|
+
- `tagline`: Site description
|
|
126
|
+
- `favicon`: Icon file
|
|
127
|
+
- `themeConfig.navbar`: Navigation menu
|
|
128
|
+
- `themeConfig.footer`: Footer content
|
|
129
|
+
|
|
130
|
+
### Custom Styling
|
|
131
|
+
|
|
132
|
+
Edit `src/css/custom.css` for custom styles and branding.
|
|
133
|
+
|
|
134
|
+
## 🚨 Troubleshooting
|
|
135
|
+
|
|
136
|
+
### Build Fails
|
|
137
|
+
|
|
138
|
+
1. Check **Actions** tab for error details
|
|
139
|
+
2. Verify all referenced files exist in sidebars
|
|
140
|
+
3. Ensure Markdown syntax is valid
|
|
141
|
+
|
|
142
|
+
### Pages Not Deploying
|
|
143
|
+
|
|
144
|
+
1. Verify **GitHub Pages** is set to **GitHub Actions**
|
|
145
|
+
2. Check repository permissions
|
|
146
|
+
3. Ensure workflow has **Pages write** permission
|
|
147
|
+
|
|
148
|
+
### Links Broken
|
|
149
|
+
|
|
150
|
+
1. Use relative paths: `../other-page`
|
|
151
|
+
2. Verify file extensions: `.md` files become `.html`
|
|
152
|
+
3. Check sidebar configuration matches file structure
|
|
153
|
+
|
|
154
|
+
## 📞 Support
|
|
155
|
+
|
|
156
|
+
For issues with:
|
|
157
|
+
- **Docusaurus**: See [Docusaurus docs](https://docusaurus.io/)
|
|
158
|
+
- **GitHub Actions**: Check workflow logs in Actions tab
|
|
159
|
+
- **Content**: Create issues in repository
|
|
160
|
+
|
|
161
|
+
## 🎉 Next Steps
|
|
162
|
+
|
|
163
|
+
1. **Enable search**: Configure Algolia search index
|
|
164
|
+
2. **Add analytics**: Integrate Google Analytics
|
|
165
|
+
3. **Custom domain**: Set up custom domain if desired
|
|
166
|
+
4. **Content migration**: Move remaining docs from `/docs` folder
|