@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.
Files changed (129) hide show
  1. package/CHANGELOG.md +380 -143
  2. package/LICENSE +674 -674
  3. package/README.md +477 -434
  4. package/RELEASE_GUIDE.md +504 -418
  5. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +175 -175
  6. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +1062 -0
  7. package/docs/MESH_TOPOLOGY_GUIDE.md +992 -0
  8. package/docs/MESH_TOPOLOGY_PROGRESS.md +422 -0
  9. package/docs/MQTT_BRIDGE_COMMANDS.md +894 -0
  10. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +324 -0
  11. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +576 -0
  12. package/docs/MQTT_SCHEMA_COMPLIANCE.md +285 -0
  13. package/docs/MQTT_SCHEMA_PROPOSALS.md +446 -0
  14. package/docs/MQTT_SCHEMA_REVIEW.md +690 -0
  15. package/docs/OTA_COMMANDS_REFERENCE.md +554 -0
  16. package/docs/PHASE1_GUIDE.md +349 -0
  17. package/docs/PHASE2_GUIDE.md +543 -0
  18. package/docs/README.md +77 -70
  19. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +222 -0
  20. package/docs/alteriom/overview.md +507 -507
  21. package/docs/api/core-api.md +606 -606
  22. package/docs/architecture/mesh-architecture.md +378 -378
  23. package/docs/architecture/plugin-system.md +516 -516
  24. package/docs/getting-started/first-mesh.md +409 -409
  25. package/docs/getting-started/installation.md +274 -274
  26. package/docs/getting-started/quickstart.md +157 -157
  27. package/docs/improvements/FEATURE_PROPOSALS.md +337 -0
  28. package/docs/improvements/PHASE1_IMPLEMENTATION.md +325 -0
  29. package/docs/improvements/PHASE2_IMPLEMENTATION.md +567 -0
  30. package/docs/improvements/README.md +86 -68
  31. package/docs/improvements/ota-and-status-enhancements.md +911 -0
  32. package/docs/improvements/ota-status-architecture-diagrams.md +658 -0
  33. package/docs/improvements/ota-status-quick-reference.md +284 -0
  34. package/docs/platformio-publishing.md +255 -0
  35. package/docs/platformio-setup-summary.md +121 -0
  36. package/docs/troubleshooting/common-issues.md +520 -520
  37. package/docs/troubleshooting/faq.md +472 -472
  38. package/docs/tutorials/basic-examples.md +717 -717
  39. package/docs/wiki/API-Reference.md +245 -245
  40. package/docs/wiki/Complete-Documentation.md +122 -122
  41. package/examples/alteriom/README.md +139 -81
  42. package/examples/alteriom/alteriom.ino +186 -185
  43. package/examples/alteriom/alteriom_sensor_package.hpp +240 -127
  44. package/examples/alteriom/platformio.ini +24 -24
  45. package/examples/alteriomImproved/alteriom_sensor_package.hpp +224 -0
  46. package/examples/{alteriom → alteriomImproved}/improved_sensor_node.ino +245 -245
  47. package/examples/alteriomImproved/platformio.ini +25 -0
  48. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +224 -0
  49. package/examples/alteriomPhase1/phase1_features.ino +242 -0
  50. package/examples/alteriomPhase1/platformio.ini +25 -0
  51. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +224 -0
  52. package/examples/alteriomPhase2/phase2_features.ino +186 -0
  53. package/examples/alteriomPhase2/platformio.ini +25 -0
  54. package/examples/{alteriom → alteriomSensorNode}/alteriom_sensor_node.ino +183 -183
  55. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +224 -0
  56. package/examples/alteriomSensorNode/platformio.ini +25 -0
  57. package/examples/basic/basic.ino +66 -66
  58. package/examples/basic/platformio.ini +25 -25
  59. package/examples/bridge/bridge.ino +51 -51
  60. package/examples/bridge/mesh_event_publisher.hpp +253 -0
  61. package/examples/bridge/mesh_topology_reporter.hpp +303 -0
  62. package/examples/bridge/mqtt_command_bridge.hpp +459 -0
  63. package/examples/bridge/mqtt_status_bridge.hpp +519 -0
  64. package/examples/bridge/platformio.ini +25 -25
  65. package/examples/echoNode/echoNode.ino +33 -33
  66. package/examples/echoNode/platformio.ini +25 -25
  67. package/examples/logClient/logClient.ino +109 -109
  68. package/examples/logClient/platformio.ini +25 -25
  69. package/examples/logServer/logServer.ino +81 -81
  70. package/examples/logServer/platformio.ini +25 -25
  71. package/examples/meshCommandNode/alteriom_sensor_package.hpp +235 -0
  72. package/examples/meshCommandNode/meshCommandNode.ino +263 -0
  73. package/examples/meshCommandNode/platformio.ini +25 -0
  74. package/examples/mqttBridge/mqttBridge.ino +118 -118
  75. package/examples/mqttBridge/platformio.ini +26 -26
  76. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +235 -0
  77. package/examples/mqttCommandBridge/mesh_event_publisher.hpp +253 -0
  78. package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +303 -0
  79. package/examples/mqttCommandBridge/mqttCommandBridge.ino +252 -0
  80. package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +459 -0
  81. package/examples/mqttCommandBridge/platformio.ini +26 -0
  82. package/examples/mqttStatusBridge/mqttStatusBridge.ino +216 -0
  83. package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +522 -0
  84. package/examples/mqttStatusBridge/platformio.ini +26 -0
  85. package/examples/mqttTopologyTest/README.md +467 -0
  86. package/examples/mqttTopologyTest/mqttTopologyTest.ino +748 -0
  87. package/examples/mqttTopologyTest/platformio.ini +26 -0
  88. package/examples/namedMesh/namedMesh.ino +97 -97
  89. package/examples/namedMesh/platformio.ini +25 -25
  90. package/examples/otaReceiver/otaReceiver.ino +79 -79
  91. package/examples/otaReceiver/platformio.ini +25 -25
  92. package/examples/otaSender/otaSender.ino +160 -151
  93. package/examples/otaSender/platformio.ini +25 -25
  94. package/examples/startHere/platformio.ini +25 -25
  95. package/examples/startHere/startHere.ino +159 -159
  96. package/examples/webServer/platformio.ini +27 -27
  97. package/examples/webServer/webServer.ino +89 -89
  98. package/keywords.txt +48 -48
  99. package/library.json +55 -34
  100. package/library.properties +10 -10
  101. package/package.json +86 -78
  102. package/src/AlteriomPainlessMesh.h +97 -97
  103. package/src/arduino/wifi.hpp +365 -365
  104. package/src/boost/asynctcp.hpp +279 -279
  105. package/src/painlessMesh.h +70 -70
  106. package/src/painlessMeshSTA.cpp +236 -236
  107. package/src/painlessMeshSTA.h +58 -58
  108. package/src/painlessTaskOptions.h +4 -4
  109. package/src/painlessmesh/base64.hpp +111 -111
  110. package/src/painlessmesh/buffer.hpp +229 -229
  111. package/src/painlessmesh/callback.hpp +91 -91
  112. package/src/painlessmesh/configuration.hpp +77 -77
  113. package/src/painlessmesh/connection.hpp +192 -192
  114. package/src/painlessmesh/layout.hpp +188 -188
  115. package/src/painlessmesh/logger.hpp +158 -158
  116. package/src/painlessmesh/memory.hpp +119 -119
  117. package/src/painlessmesh/mesh.hpp +761 -560
  118. package/src/painlessmesh/metrics.hpp +322 -322
  119. package/src/painlessmesh/ntp.hpp +263 -263
  120. package/src/painlessmesh/ota.hpp +582 -553
  121. package/src/painlessmesh/plugin.hpp +188 -188
  122. package/src/painlessmesh/protocol.hpp +813 -813
  123. package/src/painlessmesh/router.hpp +322 -322
  124. package/src/painlessmesh/tcp.hpp +71 -71
  125. package/src/painlessmesh/validation.hpp +238 -238
  126. package/src/plugin/performance.hpp +214 -214
  127. package/src/plugin/remote.hpp +64 -64
  128. package/src/scheduler.cpp +10 -10
  129. 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.