@alteriom/painlessmesh 1.6.1 → 1.7.2
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 +380 -143
- package/LICENSE +674 -674
- package/README.md +477 -434
- package/RELEASE_GUIDE.md +504 -418
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +175 -175
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +1062 -0
- package/docs/MESH_TOPOLOGY_GUIDE.md +992 -0
- package/docs/MESH_TOPOLOGY_PROGRESS.md +422 -0
- package/docs/MQTT_BRIDGE_COMMANDS.md +894 -0
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +324 -0
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +576 -0
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +285 -0
- package/docs/MQTT_SCHEMA_PROPOSALS.md +446 -0
- package/docs/MQTT_SCHEMA_REVIEW.md +690 -0
- package/docs/OTA_COMMANDS_REFERENCE.md +554 -0
- package/docs/PHASE1_GUIDE.md +349 -0
- package/docs/PHASE2_GUIDE.md +543 -0
- package/docs/README.md +77 -70
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +222 -0
- package/docs/alteriom/overview.md +507 -507
- package/docs/api/core-api.md +606 -606
- package/docs/architecture/mesh-architecture.md +378 -378
- package/docs/architecture/plugin-system.md +516 -516
- package/docs/getting-started/first-mesh.md +409 -409
- package/docs/getting-started/installation.md +274 -274
- package/docs/getting-started/quickstart.md +157 -157
- package/docs/improvements/FEATURE_PROPOSALS.md +337 -0
- package/docs/improvements/PHASE1_IMPLEMENTATION.md +325 -0
- package/docs/improvements/PHASE2_IMPLEMENTATION.md +567 -0
- package/docs/improvements/README.md +86 -68
- package/docs/improvements/ota-and-status-enhancements.md +911 -0
- package/docs/improvements/ota-status-architecture-diagrams.md +658 -0
- package/docs/improvements/ota-status-quick-reference.md +284 -0
- package/docs/platformio-publishing.md +255 -0
- package/docs/platformio-setup-summary.md +121 -0
- package/docs/troubleshooting/common-issues.md +520 -520
- package/docs/troubleshooting/faq.md +472 -472
- package/docs/tutorials/basic-examples.md +717 -717
- package/docs/wiki/API-Reference.md +245 -245
- package/docs/wiki/Complete-Documentation.md +122 -122
- package/examples/alteriom/README.md +139 -81
- package/examples/alteriom/alteriom.ino +186 -185
- package/examples/alteriom/alteriom_sensor_package.hpp +240 -127
- package/examples/alteriom/platformio.ini +24 -24
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +224 -0
- package/examples/{alteriom → alteriomImproved}/improved_sensor_node.ino +245 -245
- package/examples/alteriomImproved/platformio.ini +25 -0
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomPhase1/phase1_features.ino +242 -0
- package/examples/alteriomPhase1/platformio.ini +25 -0
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomPhase2/phase2_features.ino +186 -0
- package/examples/alteriomPhase2/platformio.ini +25 -0
- package/examples/{alteriom → alteriomSensorNode}/alteriom_sensor_node.ino +183 -183
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomSensorNode/platformio.ini +25 -0
- package/examples/basic/basic.ino +66 -66
- package/examples/basic/platformio.ini +25 -25
- package/examples/bridge/bridge.ino +51 -51
- package/examples/bridge/mesh_event_publisher.hpp +253 -0
- package/examples/bridge/mesh_topology_reporter.hpp +303 -0
- package/examples/bridge/mqtt_command_bridge.hpp +459 -0
- package/examples/bridge/mqtt_status_bridge.hpp +519 -0
- package/examples/bridge/platformio.ini +25 -25
- package/examples/echoNode/echoNode.ino +33 -33
- package/examples/echoNode/platformio.ini +25 -25
- package/examples/logClient/logClient.ino +109 -109
- package/examples/logClient/platformio.ini +25 -25
- package/examples/logServer/logServer.ino +81 -81
- package/examples/logServer/platformio.ini +25 -25
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +235 -0
- package/examples/meshCommandNode/meshCommandNode.ino +263 -0
- package/examples/meshCommandNode/platformio.ini +25 -0
- package/examples/mqttBridge/mqttBridge.ino +118 -118
- package/examples/mqttBridge/platformio.ini +26 -26
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +235 -0
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +253 -0
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +303 -0
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +252 -0
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +459 -0
- package/examples/mqttCommandBridge/platformio.ini +26 -0
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +216 -0
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +522 -0
- package/examples/mqttStatusBridge/platformio.ini +26 -0
- package/examples/mqttTopologyTest/README.md +467 -0
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +748 -0
- package/examples/mqttTopologyTest/platformio.ini +26 -0
- package/examples/namedMesh/namedMesh.ino +97 -97
- package/examples/namedMesh/platformio.ini +25 -25
- package/examples/otaReceiver/otaReceiver.ino +79 -79
- package/examples/otaReceiver/platformio.ini +25 -25
- package/examples/otaSender/otaSender.ino +160 -151
- package/examples/otaSender/platformio.ini +25 -25
- package/examples/startHere/platformio.ini +25 -25
- package/examples/startHere/startHere.ino +159 -159
- package/examples/webServer/platformio.ini +27 -27
- package/examples/webServer/webServer.ino +89 -89
- package/keywords.txt +48 -48
- package/library.json +55 -34
- package/library.properties +10 -10
- package/package.json +86 -78
- package/src/AlteriomPainlessMesh.h +97 -97
- package/src/arduino/wifi.hpp +365 -365
- package/src/boost/asynctcp.hpp +279 -279
- package/src/painlessMesh.h +70 -70
- package/src/painlessMeshSTA.cpp +236 -236
- package/src/painlessMeshSTA.h +58 -58
- package/src/painlessTaskOptions.h +4 -4
- package/src/painlessmesh/base64.hpp +111 -111
- package/src/painlessmesh/buffer.hpp +229 -229
- package/src/painlessmesh/callback.hpp +91 -91
- package/src/painlessmesh/configuration.hpp +77 -77
- package/src/painlessmesh/connection.hpp +192 -192
- package/src/painlessmesh/layout.hpp +188 -188
- package/src/painlessmesh/logger.hpp +158 -158
- package/src/painlessmesh/memory.hpp +119 -119
- package/src/painlessmesh/mesh.hpp +761 -560
- package/src/painlessmesh/metrics.hpp +322 -322
- package/src/painlessmesh/ntp.hpp +263 -263
- package/src/painlessmesh/ota.hpp +582 -553
- package/src/painlessmesh/plugin.hpp +188 -188
- package/src/painlessmesh/protocol.hpp +813 -813
- package/src/painlessmesh/router.hpp +322 -322
- package/src/painlessmesh/tcp.hpp +71 -71
- package/src/painlessmesh/validation.hpp +238 -238
- package/src/plugin/performance.hpp +214 -214
- package/src/plugin/remote.hpp +64 -64
- package/src/scheduler.cpp +10 -10
- package/src/wifi.cpp +2 -2
|
@@ -1,69 +1,87 @@
|
|
|
1
|
-
# painlessMesh Library Improvements
|
|
2
|
-
|
|
3
|
-
This document outlines the comprehensive improvements made to the painlessMesh library to enhance performance, security, and maintainability.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The improvements focus on four key areas:
|
|
8
|
-
1. **Performance Optimization** - Memory management and processing efficiency
|
|
9
|
-
2. **Security & Robustness** - Input validation and attack prevention
|
|
10
|
-
3. **Monitoring & Diagnostics** - Performance metrics and health monitoring
|
|
11
|
-
4. **Code Quality** - Bug fixes and maintainability improvements
|
|
12
|
-
|
|
13
|
-
## New Features
|
|
14
|
-
|
|
15
|
-
### 1. Input Validation & Security (`validation.hpp`)
|
|
16
|
-
|
|
17
|
-
Comprehensive security framework to protect against malicious or malformed messages.
|
|
18
|
-
|
|
19
|
-
- **Message Validation**: JSON schema validation, field type checking, size limits
|
|
20
|
-
- **Rate Limiting**: Per-node message rate limiting to prevent spam
|
|
21
|
-
- **Secure Random**: Hardware-based random number generation
|
|
22
|
-
- **Node ID Validation**: Verify node IDs are within valid ranges
|
|
23
|
-
|
|
24
|
-
### 2. Performance Metrics & Monitoring (`metrics.hpp`)
|
|
25
|
-
|
|
26
|
-
Advanced monitoring capabilities for performance optimization and diagnostics.
|
|
27
|
-
|
|
28
|
-
- **Message Statistics**: Throughput, latency, error tracking, loss rate calculation
|
|
29
|
-
- **Memory Monitoring**: Heap tracking, peak usage, critical alerts
|
|
30
|
-
- **Network Topology**: Connection stability, node count tracking, hop analysis
|
|
31
|
-
- **JSON Reports**: Detailed status reports for integration with monitoring systems
|
|
32
|
-
|
|
33
|
-
### 3. Memory Management Optimization (`memory.hpp`)
|
|
34
|
-
|
|
35
|
-
Efficient memory management to reduce fragmentation and improve performance.
|
|
36
|
-
|
|
37
|
-
- **Object Pooling**: Reuse objects to minimize allocation overhead
|
|
38
|
-
- **String Buffers**: Pre-allocated buffers to avoid frequent reallocations
|
|
39
|
-
- **Memory Statistics**: Track allocations and detect leaks
|
|
40
|
-
|
|
41
|
-
### 4. Protocol Improvements
|
|
42
|
-
|
|
43
|
-
Fixed critical issues and enhanced performance of core protocol handling.
|
|
44
|
-
|
|
45
|
-
- **Issue #521 Resolution**: Fixed crashes in protocol::Variant copy operations
|
|
46
|
-
- **Move Semantics**: Efficient move constructors and assignment operators
|
|
47
|
-
- **Buffer Optimization**: Enhanced zero-copy operations in buffer handling
|
|
48
|
-
|
|
49
|
-
## Performance Impact
|
|
50
|
-
|
|
51
|
-
- **Memory Usage**: 10-20% reduction in memory fragmentation
|
|
52
|
-
- **Message Processing**: 5-15% faster validation and processing
|
|
53
|
-
- **Network Efficiency**: Reduced retransmissions due to better error handling
|
|
54
|
-
- **CPU Usage**: More efficient algorithms reduce processing overhead
|
|
55
|
-
|
|
56
|
-
## Testing & Quality
|
|
57
|
-
|
|
58
|
-
- **100% Test Pass Rate**: All existing and new tests pass
|
|
59
|
-
- **New Test Suites**: Comprehensive tests for validation and metrics
|
|
60
|
-
- **Static Analysis**: Code passes all static analysis checks
|
|
61
|
-
- **Memory Testing**: No memory leaks detected
|
|
62
|
-
|
|
63
|
-
## Examples
|
|
64
|
-
|
|
65
|
-
See `examples/alteriom/improved_sensor_node.ino` for a complete demonstration of the new features.
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
1
|
+
# painlessMesh Library Improvements
|
|
2
|
+
|
|
3
|
+
This document outlines the comprehensive improvements made to the painlessMesh library to enhance performance, security, and maintainability.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The improvements focus on four key areas:
|
|
8
|
+
1. **Performance Optimization** - Memory management and processing efficiency
|
|
9
|
+
2. **Security & Robustness** - Input validation and attack prevention
|
|
10
|
+
3. **Monitoring & Diagnostics** - Performance metrics and health monitoring
|
|
11
|
+
4. **Code Quality** - Bug fixes and maintainability improvements
|
|
12
|
+
|
|
13
|
+
## New Features
|
|
14
|
+
|
|
15
|
+
### 1. Input Validation & Security (`validation.hpp`)
|
|
16
|
+
|
|
17
|
+
Comprehensive security framework to protect against malicious or malformed messages.
|
|
18
|
+
|
|
19
|
+
- **Message Validation**: JSON schema validation, field type checking, size limits
|
|
20
|
+
- **Rate Limiting**: Per-node message rate limiting to prevent spam
|
|
21
|
+
- **Secure Random**: Hardware-based random number generation
|
|
22
|
+
- **Node ID Validation**: Verify node IDs are within valid ranges
|
|
23
|
+
|
|
24
|
+
### 2. Performance Metrics & Monitoring (`metrics.hpp`)
|
|
25
|
+
|
|
26
|
+
Advanced monitoring capabilities for performance optimization and diagnostics.
|
|
27
|
+
|
|
28
|
+
- **Message Statistics**: Throughput, latency, error tracking, loss rate calculation
|
|
29
|
+
- **Memory Monitoring**: Heap tracking, peak usage, critical alerts
|
|
30
|
+
- **Network Topology**: Connection stability, node count tracking, hop analysis
|
|
31
|
+
- **JSON Reports**: Detailed status reports for integration with monitoring systems
|
|
32
|
+
|
|
33
|
+
### 3. Memory Management Optimization (`memory.hpp`)
|
|
34
|
+
|
|
35
|
+
Efficient memory management to reduce fragmentation and improve performance.
|
|
36
|
+
|
|
37
|
+
- **Object Pooling**: Reuse objects to minimize allocation overhead
|
|
38
|
+
- **String Buffers**: Pre-allocated buffers to avoid frequent reallocations
|
|
39
|
+
- **Memory Statistics**: Track allocations and detect leaks
|
|
40
|
+
|
|
41
|
+
### 4. Protocol Improvements
|
|
42
|
+
|
|
43
|
+
Fixed critical issues and enhanced performance of core protocol handling.
|
|
44
|
+
|
|
45
|
+
- **Issue #521 Resolution**: Fixed crashes in protocol::Variant copy operations
|
|
46
|
+
- **Move Semantics**: Efficient move constructors and assignment operators
|
|
47
|
+
- **Buffer Optimization**: Enhanced zero-copy operations in buffer handling
|
|
48
|
+
|
|
49
|
+
## Performance Impact
|
|
50
|
+
|
|
51
|
+
- **Memory Usage**: 10-20% reduction in memory fragmentation
|
|
52
|
+
- **Message Processing**: 5-15% faster validation and processing
|
|
53
|
+
- **Network Efficiency**: Reduced retransmissions due to better error handling
|
|
54
|
+
- **CPU Usage**: More efficient algorithms reduce processing overhead
|
|
55
|
+
|
|
56
|
+
## Testing & Quality
|
|
57
|
+
|
|
58
|
+
- **100% Test Pass Rate**: All existing and new tests pass
|
|
59
|
+
- **New Test Suites**: Comprehensive tests for validation and metrics
|
|
60
|
+
- **Static Analysis**: Code passes all static analysis checks
|
|
61
|
+
- **Memory Testing**: No memory leaks detected
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
See `examples/alteriom/improved_sensor_node.ino` for a complete demonstration of the new features.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Future Enhancements
|
|
70
|
+
|
|
71
|
+
### OTA Distribution and Mesh Status Monitoring
|
|
72
|
+
|
|
73
|
+
Comprehensive proposals for enhancing painlessMesh's OTA and status monitoring capabilities:
|
|
74
|
+
|
|
75
|
+
- **[OTA and Status Enhancements - Full Proposal](ota-and-status-enhancements.md)** - Detailed analysis of five OTA distribution options and five mesh status monitoring options, with pros/cons, implementation details, and phased rollout recommendations.
|
|
76
|
+
|
|
77
|
+
- **[Quick Reference Guide](ota-status-quick-reference.md)** - TL;DR summary with decision matrices, implementation examples, and performance expectations.
|
|
78
|
+
|
|
79
|
+
**Highlights:**
|
|
80
|
+
- Multiple OTA options: Broadcast distribution, progressive rollout, peer-to-peer, MQTT integration, and compression
|
|
81
|
+
- Multiple status options: Enhanced packages, status service, telemetry streams, dashboards, and MQTT bridges
|
|
82
|
+
- Phased implementation strategy starting with quick wins
|
|
83
|
+
- Production-ready recommendations for enterprise deployments
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
69
87
|
For detailed API documentation and usage examples, see the individual header files.
|