@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
package/CHANGELOG.md
CHANGED
|
@@ -1,144 +1,381 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
|
|
12
|
-
- TBD
|
|
13
|
-
|
|
14
|
-
### Changed
|
|
15
|
-
|
|
16
|
-
- TBD
|
|
17
|
-
|
|
18
|
-
### Fixed
|
|
19
|
-
|
|
20
|
-
- TBD
|
|
21
|
-
|
|
22
|
-
## [1.
|
|
23
|
-
|
|
24
|
-
###
|
|
25
|
-
|
|
26
|
-
- **
|
|
27
|
-
- **
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- **
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- **
|
|
68
|
-
- **
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
- **
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
- Fixed
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
- **
|
|
141
|
-
- **
|
|
142
|
-
- **
|
|
143
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- TBD
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- TBD
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- TBD
|
|
21
|
+
|
|
22
|
+
## [1.7.2] - 2025-10-15
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **NPM Configuration**: Updated `.npmrc` to use public NPM registry instead of GitHub Packages
|
|
27
|
+
- **Dependencies**: Moved `@alteriom/mqtt-schema` back to `devDependencies` now that it's publicly available
|
|
28
|
+
- **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
|
|
30
|
+
|
|
31
|
+
## [1.7.1] - 2025-10-15
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- **mqttStatusBridge**: Fixed scheduler access by using external `Scheduler` reference instead of protected `mScheduler` member
|
|
36
|
+
- **mqttStatusBridge**: Corrected Task handling - `publishTask` is an object, not a pointer
|
|
37
|
+
- **mqttStatusBridge**: Fixed node list iteration using proper iterators instead of array-style indexing
|
|
38
|
+
- **alteriomSensorNode**: Updated to ArduinoJson v7 API - replaced deprecated `DynamicJsonDocument` with `JsonDocument`
|
|
39
|
+
- **alteriomSensorNode**: Removed usage of deprecated `jsonObjectSize()` method
|
|
40
|
+
- Resolved compilation errors preventing ESP32/ESP8266 builds
|
|
41
|
+
|
|
42
|
+
### Technical Details
|
|
43
|
+
|
|
44
|
+
- `mesh.getNodeList()` returns `std::list<uint32_t>` which doesn't support `operator[]` indexing
|
|
45
|
+
- Changed from `mesh.mScheduler.addTask()` to `scheduler.addTask()` with external scheduler
|
|
46
|
+
- Changed from `DynamicJsonDocument doc(size)` to `JsonDocument doc` for ArduinoJson v7 compatibility
|
|
47
|
+
|
|
48
|
+
## [1.7.0] - 2025-10-15
|
|
49
|
+
|
|
50
|
+
### 🚀 Major Features
|
|
51
|
+
|
|
52
|
+
#### Phase 2: Broadcast OTA & MQTT Status Bridge
|
|
53
|
+
|
|
54
|
+
**Broadcast OTA Distribution**
|
|
55
|
+
- ✨ **Broadcast Mode OTA**: True mesh-wide firmware distribution with ~98% network traffic reduction for 50+ node meshes
|
|
56
|
+
- 📡 **Parallel Updates**: All nodes receive firmware chunks simultaneously instead of sequential unicast
|
|
57
|
+
- ⚡ **Performance**: ~50x faster for 50-node mesh, ~100x faster for 100-node mesh
|
|
58
|
+
- 🔧 **Simple API**: Single parameter change: `mesh.offerOTA(..., true)` enables broadcast mode
|
|
59
|
+
- 🔄 **Backward Compatible**: Defaults to unicast mode (Phase 1), no breaking changes
|
|
60
|
+
- 📊 **Scalability**: Efficiently handles 50-100+ node meshes with minimal overhead
|
|
61
|
+
|
|
62
|
+
**MQTT Status Bridge**
|
|
63
|
+
- 🌉 **Professional Monitoring**: Complete MQTT bridge for publishing mesh status to monitoring tools
|
|
64
|
+
- 📈 **Multiple Topics**: Publishes topology, metrics, alerts, and per-node status
|
|
65
|
+
- 🔗 **Tool Integration**: Ready for Grafana, InfluxDB, Prometheus, Home Assistant, Node-RED
|
|
66
|
+
- ⚙️ **Configurable**: Adjustable publish intervals, enable/disable features per need
|
|
67
|
+
- 🎯 **Production Ready**: Designed for enterprise IoT and commercial deployments
|
|
68
|
+
- 📋 **Schema Compliant**: Uses @alteriom/mqtt-schema v0.5.0 for standardized messaging
|
|
69
|
+
|
|
70
|
+
#### Mesh Topology Visualization
|
|
71
|
+
|
|
72
|
+
- 📊 **Visualization Guide**: Comprehensive 980-line guide for building web dashboards (docs/MESH_TOPOLOGY_GUIDE.md)
|
|
73
|
+
- 🎨 **D3.js Examples**: Complete force-directed graph visualization (200+ lines)
|
|
74
|
+
- 🕸️ **Cytoscape.js Examples**: Network topology view (150+ lines)
|
|
75
|
+
- 🔴 **Node.js Dashboard**: Real-time dashboard with Express + Socket.IO
|
|
76
|
+
- 🐍 **Python Monitor**: Console monitoring with Rich library
|
|
77
|
+
- 🔄 **Node-RED Flows**: Ready-to-import flow JSON for rapid development
|
|
78
|
+
- 🛠️ **Troubleshooting Guide**: Common issues and performance tuning
|
|
79
|
+
|
|
80
|
+
### 🐛 Critical Bug Fixes
|
|
81
|
+
|
|
82
|
+
#### Compilation & Build Fixes
|
|
83
|
+
|
|
84
|
+
- 🔧 **Fixed Missing `#include <vector>`**: Added missing C++ standard library header to `src/painlessmesh/mesh.hpp`
|
|
85
|
+
- **Impact**: Fixes compilation errors: "'vector' in namespace 'std' does not name a template type"
|
|
86
|
+
- **Affected**: All projects using getConnectionDetails() or latencySamples
|
|
87
|
+
- **File**: src/painlessmesh/mesh.hpp (line 4)
|
|
88
|
+
- **Documentation**: VECTOR_INCLUDE_FIX.md
|
|
89
|
+
|
|
90
|
+
- 📦 **PlatformIO Library Structure**: Fixed SCons build errors for external projects
|
|
91
|
+
- Added explicit `srcDir` and `includeDir` to library.json
|
|
92
|
+
- Removed conflicting `export.include` section
|
|
93
|
+
- Fixed header references in library.properties (painlessMesh.h)
|
|
94
|
+
- **Impact**: Fixes "cannot resolve directory for painlessMeshSTA.cpp" errors
|
|
95
|
+
- **Documentation**: LIBRARY_STRUCTURE_FIX.md, PLATFORMIO_USAGE.md, SCONS_BUILD_FIX.md
|
|
96
|
+
|
|
97
|
+
- 📝 **npm Build Scripts**: Fixed UnboundLocalError during `npm link`
|
|
98
|
+
- Renamed `build` → `dev:build` and `prebuild` → `dev:prebuild`
|
|
99
|
+
- Prevents automatic build execution during package installation
|
|
100
|
+
- **Impact**: Fixes Python errors when using library as npm dependency
|
|
101
|
+
|
|
102
|
+
### 📚 Documentation
|
|
103
|
+
|
|
104
|
+
#### New Documentation Files (7 files)
|
|
105
|
+
|
|
106
|
+
1. **docs/MESH_TOPOLOGY_GUIDE.md** (980 lines)
|
|
107
|
+
- Complete visualization guide with 5 working examples
|
|
108
|
+
- D3.js, Cytoscape.js, Python, Node-RED implementations
|
|
109
|
+
- Performance considerations and troubleshooting
|
|
110
|
+
|
|
111
|
+
2. **docs/PHASE2_GUIDE.md** (~500 lines)
|
|
112
|
+
- Complete API reference for Phase 2 features
|
|
113
|
+
- Usage examples and performance benchmarks
|
|
114
|
+
- Integration guides for monitoring tools
|
|
115
|
+
- Migration guide from Phase 1
|
|
116
|
+
|
|
117
|
+
3. **docs/improvements/PHASE2_IMPLEMENTATION.md** (~600 lines)
|
|
118
|
+
- Technical architecture and implementation details
|
|
119
|
+
- MQTT topic schema documentation
|
|
120
|
+
- Performance analysis and testing strategy
|
|
121
|
+
|
|
122
|
+
4. **LIBRARY_STRUCTURE_FIX.md**
|
|
123
|
+
- PlatformIO library structure improvements
|
|
124
|
+
- Validation checklist and testing guide
|
|
125
|
+
|
|
126
|
+
5. **PLATFORMIO_USAGE.md**
|
|
127
|
+
- Quick start guide for PlatformIO users
|
|
128
|
+
- Common issues and solutions
|
|
129
|
+
|
|
130
|
+
6. **SCONS_BUILD_FIX.md**
|
|
131
|
+
- Comprehensive troubleshooting for PlatformIO builds
|
|
132
|
+
- Step-by-step diagnostic procedures
|
|
133
|
+
|
|
134
|
+
7. **VECTOR_INCLUDE_FIX.md**
|
|
135
|
+
- Documentation of missing C++ header fix
|
|
136
|
+
- Testing and verification instructions
|
|
137
|
+
|
|
138
|
+
#### Updated Documentation
|
|
139
|
+
|
|
140
|
+
- **README.md**: Enhanced with Phase 2 features and schema v0.5.0
|
|
141
|
+
- **docs/MQTT_BRIDGE_COMMANDS.md**: Updated version references
|
|
142
|
+
- **examples/**: New Phase 2 examples added
|
|
143
|
+
|
|
144
|
+
### 🛠️ New Tools & Scripts
|
|
145
|
+
|
|
146
|
+
- **scripts/validate_library_structure.py** (250+ lines)
|
|
147
|
+
- Automated validation of PlatformIO library structure
|
|
148
|
+
- 8 comprehensive checks (all passing)
|
|
149
|
+
- Detects common configuration issues
|
|
150
|
+
|
|
151
|
+
### 🔄 Enhanced Examples
|
|
152
|
+
|
|
153
|
+
- **examples/alteriom/phase2_features.ino**: Demonstrates broadcast OTA
|
|
154
|
+
- **examples/bridge/mqtt_status_bridge.hpp**: Complete MQTT bridge implementation
|
|
155
|
+
- **examples/bridge/mqtt_status_bridge_example.ino**: Full working bridge example
|
|
156
|
+
|
|
157
|
+
### ⚙️ Configuration Changes
|
|
158
|
+
|
|
159
|
+
**library.json**
|
|
160
|
+
- Added `"srcDir": "src"` for explicit source directory
|
|
161
|
+
- Added `"includeDir": "src"` for explicit include directory
|
|
162
|
+
- Removed conflicting `"export": {"include": "src"}` section
|
|
163
|
+
|
|
164
|
+
**library.properties**
|
|
165
|
+
- Updated `includes=painlessMesh.h` (was AlteriomPainlessMesh.h)
|
|
166
|
+
|
|
167
|
+
**package.json**
|
|
168
|
+
- Renamed `build` → `dev:build` (prevents auto-execution)
|
|
169
|
+
- Renamed `prebuild` → `dev:prebuild` (prevents auto-execution)
|
|
170
|
+
- Updated to @alteriom/mqtt-schema v0.5.0
|
|
171
|
+
|
|
172
|
+
### 📊 Performance Improvements
|
|
173
|
+
|
|
174
|
+
**Broadcast OTA Performance**
|
|
175
|
+
- **Network Traffic**: 90% reduction (10 nodes), 98% reduction (50 nodes), 99% reduction (100 nodes)
|
|
176
|
+
- **Update Speed**: ~N times faster (parallel vs sequential)
|
|
177
|
+
- **Example**: 150-chunk firmware to 50 nodes
|
|
178
|
+
- Unicast: 7,500 transmissions
|
|
179
|
+
- Broadcast: 150 transmissions
|
|
180
|
+
- **Savings: 98% (7,350 transmissions)**
|
|
181
|
+
|
|
182
|
+
**Memory Impact**
|
|
183
|
+
- Broadcast OTA: +2-5KB per node (chunk tracking)
|
|
184
|
+
- MQTT Bridge: +5-8KB (root node only)
|
|
185
|
+
- Minimal overhead for ESP32, acceptable for ESP8266
|
|
186
|
+
|
|
187
|
+
### 🔐 Schema Compliance
|
|
188
|
+
|
|
189
|
+
- ✅ Fully compliant with @alteriom/mqtt-schema v0.5.0
|
|
190
|
+
- ✅ Topology messages include all required envelope fields
|
|
191
|
+
- ✅ Node objects include firmware_version, uptime_seconds, connection_count
|
|
192
|
+
- ✅ Schema versioning for forward compatibility
|
|
193
|
+
|
|
194
|
+
### ⚠️ Breaking Changes
|
|
195
|
+
|
|
196
|
+
**None** - This release is 100% backward compatible with v1.6.x
|
|
197
|
+
|
|
198
|
+
- Broadcast OTA defaults to `false` (unicast mode preserved)
|
|
199
|
+
- MQTT bridge is optional add-on
|
|
200
|
+
- All Phase 1 APIs unchanged
|
|
201
|
+
- Existing sketches work without modification
|
|
202
|
+
|
|
203
|
+
### 🔄 Migration Guide
|
|
204
|
+
|
|
205
|
+
**No migration required** for existing code. To adopt new features:
|
|
206
|
+
|
|
207
|
+
**Enable Broadcast OTA:**
|
|
208
|
+
```cpp
|
|
209
|
+
// Before (v1.6.x)
|
|
210
|
+
mesh.offerOTA(role, hw, md5, parts, false, false, true);
|
|
211
|
+
|
|
212
|
+
// After (v1.7.0) - add broadcast parameter
|
|
213
|
+
mesh.offerOTA(role, hw, md5, parts, false, true, true);
|
|
214
|
+
// ^^^^ broadcast
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Add MQTT Status Bridge:**
|
|
218
|
+
```cpp
|
|
219
|
+
#include "examples/bridge/mqtt_status_bridge.hpp"
|
|
220
|
+
|
|
221
|
+
MqttStatusBridge bridge(mesh, mqttClient);
|
|
222
|
+
bridge.setPublishInterval(30000);
|
|
223
|
+
bridge.begin();
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 🎯 Recommended For
|
|
227
|
+
|
|
228
|
+
- ✅ Production IoT deployments with 10-100+ nodes
|
|
229
|
+
- ✅ Commercial systems requiring professional monitoring
|
|
230
|
+
- ✅ Enterprise environments needing Grafana/Prometheus integration
|
|
231
|
+
- ✅ Projects with limited network bandwidth
|
|
232
|
+
- ✅ Systems requiring rapid firmware distribution
|
|
233
|
+
|
|
234
|
+
### 📖 Complete Documentation
|
|
235
|
+
|
|
236
|
+
- [Phase 2 User Guide](docs/PHASE2_GUIDE.md) - API reference and usage
|
|
237
|
+
- [Phase 2 Implementation](docs/improvements/PHASE2_IMPLEMENTATION.md) - Technical details
|
|
238
|
+
- [Mesh Topology Guide](docs/MESH_TOPOLOGY_GUIDE.md) - Visualization examples
|
|
239
|
+
- [MQTT Bridge Commands](docs/MQTT_BRIDGE_COMMANDS.md) - Command reference
|
|
240
|
+
- [Library Structure Fix](LIBRARY_STRUCTURE_FIX.md) - Build system improvements
|
|
241
|
+
- [Vector Include Fix](VECTOR_INCLUDE_FIX.md) - Compilation fix details
|
|
242
|
+
|
|
243
|
+
### 🧪 Testing
|
|
244
|
+
|
|
245
|
+
- ✅ All Phase 1 tests passing (80 assertions in 7 test cases)
|
|
246
|
+
- ✅ Backward compatibility verified
|
|
247
|
+
- ✅ No regressions introduced
|
|
248
|
+
- ✅ Library structure validation: 8/8 checks passing
|
|
249
|
+
- ✅ Compilation successful on ESP32 and ESP8266
|
|
250
|
+
|
|
251
|
+
### 🙏 Acknowledgments
|
|
252
|
+
|
|
253
|
+
This release includes contributions from Phase 2 implementation, bug fixes discovered by the community, and comprehensive documentation improvements based on user feedback.
|
|
254
|
+
|
|
255
|
+
**Next**: Phase 3 features (progressive rollout OTA, real-time telemetry streams) as outlined in FEATURE_PROPOSALS.md
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## [1.6.1] - 2025-09-29
|
|
260
|
+
|
|
261
|
+
### Added
|
|
262
|
+
|
|
263
|
+
- **Arduino Library Manager Support**: Updated library name to "Alteriom PainlessMesh" for better discoverability
|
|
264
|
+
- **NPM Package Publishing**: Complete NPM publication setup with dual registry support
|
|
265
|
+
- Public NPM registry: `@alteriom/painlessmesh`
|
|
266
|
+
- GitHub Packages registry: `@alteriom/painlessmesh` (scoped)
|
|
267
|
+
- Automated version consistency across library.properties, library.json, and package.json
|
|
268
|
+
- **GitHub Wiki Automation**: Automatic wiki synchronization on releases
|
|
269
|
+
- Home page generated from README.md
|
|
270
|
+
- API Reference with auto-generated documentation
|
|
271
|
+
- Examples page with links to repository examples
|
|
272
|
+
- Installation guide for multiple platforms
|
|
273
|
+
- **Enhanced Release Workflow**: Comprehensive publication automation
|
|
274
|
+
- NPM publishing to both public and GitHub Packages registries
|
|
275
|
+
- GitHub Wiki updates with structured documentation
|
|
276
|
+
- Arduino Library Manager submission instructions
|
|
277
|
+
- Release validation with multi-file version consistency
|
|
278
|
+
- **Arduino IDE Support**: Added keywords.txt for syntax highlighting
|
|
279
|
+
- **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
|
|
282
|
+
- Enhanced RELEASE_GUIDE.md with comprehensive publication workflow
|
|
283
|
+
- **Version Management**: Enhanced bump-version script
|
|
284
|
+
- Updates all three version files simultaneously (library.properties, library.json, package.json)
|
|
285
|
+
- Comprehensive version consistency validation
|
|
286
|
+
- Clear instructions for NPM and GitHub Packages publication
|
|
287
|
+
|
|
288
|
+
### Changed
|
|
289
|
+
- **Library Name**: Updated from "Painless Mesh" to "Alteriom PainlessMesh" for Arduino Library Manager
|
|
290
|
+
- **Release Process**: Streamlined to support multiple package managers
|
|
291
|
+
- Single commit with "release:" prefix triggers full publication pipeline
|
|
292
|
+
- Automated testing, building, and publishing across all channels
|
|
293
|
+
- Wiki documentation automatically synchronized
|
|
294
|
+
- **CI/CD Pipeline**: Enhanced with NPM publication capabilities
|
|
295
|
+
- Dual NPM registry publishing (public + GitHub Packages)
|
|
296
|
+
- Automated wiki updates with generated content
|
|
297
|
+
- Comprehensive pre-release validation
|
|
298
|
+
- **Documentation Structure**: Reorganized for multi-channel distribution
|
|
299
|
+
- Clear separation between automatic and manual processes
|
|
300
|
+
- Platform-specific installation instructions
|
|
301
|
+
- Troubleshooting guides for each distribution channel
|
|
302
|
+
|
|
303
|
+
### Fixed
|
|
304
|
+
- **NPM Publishing**: Fixed registry configuration issues that prevented NPM publication
|
|
305
|
+
- **GitHub Pages**: Improved workflow to handle cases where Pages is not configured
|
|
306
|
+
- **PlatformIO Build**: Fixed include paths in improved_sensor_node.ino example
|
|
307
|
+
- **Package Configuration**: Consistent version management across all package files
|
|
308
|
+
- **Release Documentation**: Complete coverage of all distribution channels
|
|
309
|
+
- **Version Validation**: Prevents releases with inconsistent version numbers
|
|
310
|
+
|
|
311
|
+
## [1.6.0] - 2025-09-29
|
|
312
|
+
|
|
313
|
+
### Added
|
|
314
|
+
- Enhanced Alteriom-specific package documentation and examples
|
|
315
|
+
- Updated repository URLs and metadata for Alteriom fork
|
|
316
|
+
- Improved release process documentation
|
|
317
|
+
- Fixed deprecated GitHub Actions in release workflow
|
|
318
|
+
- Added concurrency controls to prevent duplicate workflow runs
|
|
319
|
+
- Comprehensive Alteriom package documentation and quick start guide
|
|
320
|
+
|
|
321
|
+
### Changed
|
|
322
|
+
- Migrated from deprecated `actions/create-release@v1` to GitHub CLI for releases
|
|
323
|
+
- Updated library.properties and library.json to reflect Alteriom ownership
|
|
324
|
+
- Enhanced package descriptions to highlight Alteriom extensions
|
|
325
|
+
|
|
326
|
+
### Fixed
|
|
327
|
+
- Fixed deprecated GitHub Actions in release workflow
|
|
328
|
+
- Corrected undefined variable references in upload workflow steps
|
|
329
|
+
- Updated repository URLs from GitLab to GitHub in library files
|
|
330
|
+
|
|
331
|
+
## [1.5.6] - Current Release
|
|
332
|
+
|
|
333
|
+
### Features
|
|
334
|
+
- painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices
|
|
335
|
+
- Automatic routing and network management
|
|
336
|
+
- JSON-based messaging system
|
|
337
|
+
- Time synchronization across all nodes
|
|
338
|
+
- Support for coordinated behaviors like synchronized displays
|
|
339
|
+
- Sensor network patterns for IoT applications
|
|
340
|
+
|
|
341
|
+
### Platforms Supported
|
|
342
|
+
- ESP32 (espressif32)
|
|
343
|
+
- ESP8266 (espressif8266)
|
|
344
|
+
|
|
345
|
+
### Dependencies
|
|
346
|
+
- ArduinoJson ^7.4.2
|
|
347
|
+
- TaskScheduler ^3.8.5
|
|
348
|
+
- AsyncTCP ^3.4.7 (ESP32)
|
|
349
|
+
- ESPAsyncTCP ^2.0.0 (ESP8266)
|
|
350
|
+
|
|
351
|
+
### Alteriom Extensions
|
|
352
|
+
- SensorPackage for environmental monitoring
|
|
353
|
+
- CommandPackage for device control
|
|
354
|
+
- StatusPackage for health monitoring
|
|
355
|
+
- Type-safe message handling
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Release Notes
|
|
360
|
+
|
|
361
|
+
### How to Release
|
|
362
|
+
|
|
363
|
+
1. Update version in both `library.properties` and `library.json`
|
|
364
|
+
2. Add changes to this CHANGELOG.md under the new version
|
|
365
|
+
3. Commit with message starting with `release:` (e.g., `release: v1.6.0`)
|
|
366
|
+
4. Push to main branch
|
|
367
|
+
5. GitHub Actions will automatically:
|
|
368
|
+
- Create a git tag
|
|
369
|
+
- Generate GitHub release
|
|
370
|
+
- Package library for distribution
|
|
371
|
+
- Update documentation
|
|
372
|
+
|
|
373
|
+
### Version Numbering
|
|
374
|
+
|
|
375
|
+
This project follows [Semantic Versioning](https://semver.org/):
|
|
376
|
+
|
|
377
|
+
- **MAJOR** version when you make incompatible API changes
|
|
378
|
+
- **MINOR** version when you add functionality in a backwards compatible manner
|
|
379
|
+
- **PATCH** version when you make backwards compatible bug fixes
|
|
380
|
+
|
|
144
381
|
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
|