@alteriom/painlessmesh 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -4
- package/README.md +17 -3
- package/docs/README.md +62 -10
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +166 -0
- package/docs/archive/LIBRARY_JSON_FIX.md +98 -0
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -0
- package/docs/archive/RELEASE_SUMMARY.md +173 -0
- package/docs/archive/SCONS_BUILD_FIX.md +313 -0
- package/docs/archive/TRIGGER_RELEASE.md +280 -0
- package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -0
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +71 -0
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -0
- package/docs/development/DOCKER_TESTING.md +196 -0
- package/docs/development/PLATFORMIO_USAGE.md +180 -0
- package/docs/development/TESTING_SUMMARY.md +126 -0
- package/docs/development/contributing.md +301 -0
- package/docs/development/documentation.md +583 -0
- package/docs/improvements/FUTURE_PROPOSALS.md +1016 -0
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -0
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -0
- package/docs/improvements/README.md +171 -46
- package/docs/releases/FEATURE_HISTORY.md +543 -0
- package/docs/releases/PATCH_v1.7.3.md +262 -0
- package/docs/releases/PHASE1_SUMMARY.md +246 -0
- package/docs/releases/PHASE2_SUMMARY.md +499 -0
- package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -0
- package/docs/troubleshooting/debugging.md +455 -0
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/painlessmesh/router.hpp +35 -19
- /package/docs/{improvements → archive}/FEATURE_PROPOSALS.md +0 -0
- /package/docs/{improvements → archive}/PHASE1_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/PHASE2_IMPLEMENTATION.md +0 -0
- /package/docs/{improvements → archive}/ota-and-status-enhancements.md +0 -0
- /package/docs/{improvements → archive}/ota-status-architecture-diagrams.md +0 -0
- /package/docs/{improvements → archive}/ota-status-quick-reference.md +0 -0
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
# AlteriomPainlessMesh v1.7.0 Release Notes
|
|
2
|
+
|
|
3
|
+
**Release Date:** October 15, 2025
|
|
4
|
+
**Schema Version:** @alteriom/mqtt-schema v0.5.0
|
|
5
|
+
**GitHub Release:** https://github.com/Alteriom/painlessMesh/releases/tag/v1.7.0
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🎉 What's New in v1.7.0
|
|
10
|
+
|
|
11
|
+
Version 1.7.0 brings **Phase 2 features** to AlteriomPainlessMesh with a focus on scalability, professional monitoring, and production-ready stability. This release is 100% backward compatible with v1.6.x while adding powerful new capabilities for enterprise IoT deployments.
|
|
12
|
+
|
|
13
|
+
### 🚀 Major Features
|
|
14
|
+
|
|
15
|
+
#### 1. Broadcast OTA Distribution
|
|
16
|
+
|
|
17
|
+
The most significant feature in v1.7.0 is **Broadcast OTA mode**, which enables efficient firmware updates for large mesh networks (50-100+ nodes).
|
|
18
|
+
|
|
19
|
+
**Key Benefits:**
|
|
20
|
+
- **98% Network Traffic Reduction** for 50-node mesh
|
|
21
|
+
- **Parallel Distribution** - All nodes receive chunks simultaneously
|
|
22
|
+
- **Scales to 100+ Nodes** efficiently
|
|
23
|
+
- **Simple API** - One parameter enables broadcast mode
|
|
24
|
+
|
|
25
|
+
**Example:**
|
|
26
|
+
```cpp
|
|
27
|
+
// Enable broadcast mode for efficient large-mesh updates
|
|
28
|
+
mesh.offerOTA("sensor", "ESP32", md5, parts, false, true, true);
|
|
29
|
+
// ^^^^ ^^^^
|
|
30
|
+
// broadcast compress
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Performance Comparison:**
|
|
34
|
+
- **10 nodes:** 90% traffic reduction, ~10x faster
|
|
35
|
+
- **50 nodes:** 98% traffic reduction, ~50x faster
|
|
36
|
+
- **100 nodes:** 99% traffic reduction, ~100x faster
|
|
37
|
+
|
|
38
|
+
**Memory Impact:** +2-5KB per node (chunk tracking buffer)
|
|
39
|
+
|
|
40
|
+
📖 **Documentation:** [docs/PHASE2_GUIDE.md](docs/PHASE2_GUIDE.md)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
#### 2. MQTT Status Bridge
|
|
45
|
+
|
|
46
|
+
Professional monitoring solution that publishes comprehensive mesh status to MQTT topics, enabling integration with enterprise monitoring tools.
|
|
47
|
+
|
|
48
|
+
**Key Features:**
|
|
49
|
+
- **5 MQTT Topic Streams:**
|
|
50
|
+
- `mesh/status/topology` - Complete mesh structure JSON
|
|
51
|
+
- `mesh/status/metrics` - Performance statistics
|
|
52
|
+
- `mesh/status/nodes` - Node list with count
|
|
53
|
+
- `mesh/status/alerts` - Active alert conditions
|
|
54
|
+
- `mesh/status/node/{id}` - Per-node detailed status
|
|
55
|
+
|
|
56
|
+
**Tool Integration Ready:**
|
|
57
|
+
- ✅ Grafana - Dashboard visualization
|
|
58
|
+
- ✅ InfluxDB - Time-series storage
|
|
59
|
+
- ✅ Prometheus - Metrics collection
|
|
60
|
+
- ✅ Home Assistant - Home automation
|
|
61
|
+
- ✅ Node-RED - Custom flows
|
|
62
|
+
|
|
63
|
+
**Example:**
|
|
64
|
+
```cpp
|
|
65
|
+
#include "examples/bridge/mqtt_status_bridge.hpp"
|
|
66
|
+
|
|
67
|
+
MqttStatusBridge bridge(mesh, mqttClient);
|
|
68
|
+
bridge.setPublishInterval(30000); // 30 seconds
|
|
69
|
+
bridge.enableTopology(true);
|
|
70
|
+
bridge.enableMetrics(true);
|
|
71
|
+
bridge.enableAlerts(true);
|
|
72
|
+
bridge.begin();
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Memory Impact:** +5-8KB (root node only)
|
|
76
|
+
|
|
77
|
+
📖 **Documentation:** [docs/PHASE2_GUIDE.md](docs/PHASE2_GUIDE.md)
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
#### 3. Mesh Topology Visualization Guide
|
|
82
|
+
|
|
83
|
+
Complete 980-line guide with working examples for building web dashboards to visualize mesh topology in real-time.
|
|
84
|
+
|
|
85
|
+
**Includes:**
|
|
86
|
+
- 🎨 **D3.js Force-Directed Graph** (200+ lines) - Interactive network visualization
|
|
87
|
+
- 🕸️ **Cytoscape.js Network View** (150+ lines) - Advanced graph rendering
|
|
88
|
+
- 🔴 **Node.js + Express + Socket.IO Dashboard** - Real-time updates
|
|
89
|
+
- 🐍 **Python Console Monitor** - Rich library for terminal visualization
|
|
90
|
+
- 🔄 **Node-RED Flow JSON** - Drag-and-drop flow programming
|
|
91
|
+
- 🛠️ **Troubleshooting Guide** - Common issues and performance tuning
|
|
92
|
+
|
|
93
|
+
All examples are **copy-paste ready** and production-tested.
|
|
94
|
+
|
|
95
|
+
📊 **Documentation:** [docs/MESH_TOPOLOGY_GUIDE.md](docs/MESH_TOPOLOGY_GUIDE.md)
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### 🐛 Critical Bug Fixes
|
|
100
|
+
|
|
101
|
+
#### Fixed: Missing `#include <vector>` Compilation Error
|
|
102
|
+
|
|
103
|
+
**Impact:** HIGH - All users including painlessMesh.h
|
|
104
|
+
|
|
105
|
+
**Symptom:**
|
|
106
|
+
```
|
|
107
|
+
error: 'vector' in namespace 'std' does not name a template type
|
|
108
|
+
std::vector<ConnectionInfo> getConnectionDetails()
|
|
109
|
+
^~~~~~
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Fix:** Added `#include <vector>` to `src/painlessmesh/mesh.hpp` (line 4)
|
|
113
|
+
|
|
114
|
+
**Affected Code:**
|
|
115
|
+
- `getConnectionDetails()` function (line 386)
|
|
116
|
+
- `latencySamples` member variable (line 594)
|
|
117
|
+
|
|
118
|
+
**Documentation:** [VECTOR_INCLUDE_FIX.md](VECTOR_INCLUDE_FIX.md)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
#### Fixed: PlatformIO SCons Build Errors
|
|
123
|
+
|
|
124
|
+
**Impact:** HIGH - All PlatformIO users
|
|
125
|
+
|
|
126
|
+
**Symptom:**
|
|
127
|
+
```
|
|
128
|
+
Error: Cannot resolve directory for painlessMeshSTA.cpp
|
|
129
|
+
UnboundLocalError: cannot access local variable 'dir'
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Fixes Applied:**
|
|
133
|
+
1. Added explicit `"srcDir": "src"` to library.json
|
|
134
|
+
2. Added explicit `"includeDir": "src"` to library.json
|
|
135
|
+
3. Removed conflicting `"export": {"include": "src"}` section
|
|
136
|
+
4. Fixed header reference in library.properties (painlessMesh.h)
|
|
137
|
+
|
|
138
|
+
**Validation:** Created automated validation script with 8 checks (100% passing)
|
|
139
|
+
|
|
140
|
+
**Documentation:**
|
|
141
|
+
- [LIBRARY_STRUCTURE_FIX.md](LIBRARY_STRUCTURE_FIX.md)
|
|
142
|
+
- [PLATFORMIO_USAGE.md](PLATFORMIO_USAGE.md)
|
|
143
|
+
- [SCONS_BUILD_FIX.md](SCONS_BUILD_FIX.md)
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
#### Fixed: npm Link Errors
|
|
148
|
+
|
|
149
|
+
**Impact:** MEDIUM - Users consuming library via npm
|
|
150
|
+
|
|
151
|
+
**Symptom:**
|
|
152
|
+
```
|
|
153
|
+
UnboundLocalError: cannot access local variable 'dir' (Python error during npm link)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Fix:** Renamed npm scripts to prevent auto-execution:
|
|
157
|
+
- `"build"` → `"dev:build"`
|
|
158
|
+
- `"prebuild"` → `"dev:prebuild"`
|
|
159
|
+
|
|
160
|
+
**Reason:** npm automatically runs `build` and `prebuild` scripts during `npm link`, which triggered cmake/ninja builds causing Python errors.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### 📚 New Documentation (7 Files)
|
|
165
|
+
|
|
166
|
+
1. **[docs/MESH_TOPOLOGY_GUIDE.md](docs/MESH_TOPOLOGY_GUIDE.md)** (980 lines)
|
|
167
|
+
- Complete visualization guide with 5 working examples
|
|
168
|
+
- D3.js, Cytoscape.js, Node.js, Python, Node-RED
|
|
169
|
+
- Performance considerations and troubleshooting
|
|
170
|
+
|
|
171
|
+
2. **[docs/PHASE2_GUIDE.md](docs/PHASE2_GUIDE.md)** (~500 lines)
|
|
172
|
+
- Complete Phase 2 API reference
|
|
173
|
+
- Usage examples and performance benchmarks
|
|
174
|
+
- Integration guides for Grafana, InfluxDB, Prometheus
|
|
175
|
+
- Migration guide from Phase 1
|
|
176
|
+
|
|
177
|
+
3. **[docs/improvements/PHASE2_IMPLEMENTATION.md](docs/improvements/PHASE2_IMPLEMENTATION.md)** (~600 lines)
|
|
178
|
+
- Technical architecture and implementation details
|
|
179
|
+
- MQTT topic schema documentation
|
|
180
|
+
- Performance analysis and testing strategy
|
|
181
|
+
|
|
182
|
+
4. **[LIBRARY_STRUCTURE_FIX.md](LIBRARY_STRUCTURE_FIX.md)**
|
|
183
|
+
- PlatformIO library structure improvements
|
|
184
|
+
- Validation checklist and testing guide
|
|
185
|
+
- Root cause analysis and solutions
|
|
186
|
+
|
|
187
|
+
5. **[PLATFORMIO_USAGE.md](PLATFORMIO_USAGE.md)**
|
|
188
|
+
- Quick start guide for PlatformIO users
|
|
189
|
+
- Common issues and solutions
|
|
190
|
+
- Example platformio.ini configurations
|
|
191
|
+
|
|
192
|
+
6. **[SCONS_BUILD_FIX.md](SCONS_BUILD_FIX.md)**
|
|
193
|
+
- Comprehensive troubleshooting for PlatformIO builds
|
|
194
|
+
- Step-by-step diagnostic procedures
|
|
195
|
+
- Fix verification instructions
|
|
196
|
+
|
|
197
|
+
7. **[VECTOR_INCLUDE_FIX.md](VECTOR_INCLUDE_FIX.md)**
|
|
198
|
+
- Documentation of missing C++ header fix
|
|
199
|
+
- Testing and verification instructions
|
|
200
|
+
- Impact analysis
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### 🛠️ New Tools
|
|
205
|
+
|
|
206
|
+
#### Library Structure Validation Script
|
|
207
|
+
|
|
208
|
+
**File:** `scripts/validate_library_structure.py` (250+ lines)
|
|
209
|
+
|
|
210
|
+
**Features:**
|
|
211
|
+
- 8 comprehensive validation checks
|
|
212
|
+
- Automated PlatformIO compliance verification
|
|
213
|
+
- Detects common configuration issues
|
|
214
|
+
- Provides actionable recommendations
|
|
215
|
+
|
|
216
|
+
**Usage:**
|
|
217
|
+
```bash
|
|
218
|
+
python scripts/validate_library_structure.py
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Output:**
|
|
222
|
+
```
|
|
223
|
+
✓ Library JSON Exists (srcDir: src | includeDir: src)
|
|
224
|
+
✓ Library Properties Valid (Primary header: painlessMesh.h)
|
|
225
|
+
✓ Source Directory Structure (3 .cpp, 4 .h, 0 .hpp files)
|
|
226
|
+
✓ No Root Source Files (No .cpp files in root)
|
|
227
|
+
✓ No Duplicate Metadata (Single library.json at: library.json)
|
|
228
|
+
✓ Header Files Present (Found: painlessMesh.h, AlteriomPainlessMesh.h)
|
|
229
|
+
✓ Examples Directory (Found 20 example sketches)
|
|
230
|
+
✓ PlatformIO Compliance (All 5 structure checks passed)
|
|
231
|
+
|
|
232
|
+
════════════════════════════════════════════════════
|
|
233
|
+
VALIDATION SUMMARY: ✅ ALL CHECKS PASSED (8/8)
|
|
234
|
+
════════════════════════════════════════════════════
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
### 📊 Performance Improvements
|
|
240
|
+
|
|
241
|
+
#### Broadcast OTA Performance
|
|
242
|
+
|
|
243
|
+
| Mesh Size | Unicast Transmissions | Broadcast Transmissions | Traffic Reduction | Speed Improvement |
|
|
244
|
+
|-----------|----------------------|------------------------|-------------------|-------------------|
|
|
245
|
+
| 10 nodes | 1,500 | 150 | 90% | ~10x faster |
|
|
246
|
+
| 50 nodes | 7,500 | 150 | 98% | ~50x faster |
|
|
247
|
+
| 100 nodes | 15,000 | 150 | 99% | ~100x faster |
|
|
248
|
+
|
|
249
|
+
**Example:** 150-chunk firmware update (typical 512KB firmware)
|
|
250
|
+
- **Unicast:** Sequential per node = O(N × F) = 50 × 150 = 7,500 transmissions
|
|
251
|
+
- **Broadcast:** Parallel to all = O(F) = 150 transmissions
|
|
252
|
+
- **Savings:** 98% reduction (7,350 fewer transmissions)
|
|
253
|
+
|
|
254
|
+
#### Memory Impact
|
|
255
|
+
|
|
256
|
+
| Feature | Memory Usage | Impact |
|
|
257
|
+
|---------|-------------|--------|
|
|
258
|
+
| Broadcast OTA | +2-5KB per node | Chunk tracking buffer |
|
|
259
|
+
| MQTT Bridge | +5-8KB (root only) | Bridge state and buffers |
|
|
260
|
+
| Total (both features) | +7-13KB | Acceptable for ESP32, tight on ESP8266 |
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### ⚠️ Breaking Changes
|
|
265
|
+
|
|
266
|
+
**NONE** - This release is 100% backward compatible with v1.6.x
|
|
267
|
+
|
|
268
|
+
- All Phase 1 APIs unchanged
|
|
269
|
+
- Broadcast OTA defaults to `false` (unicast mode)
|
|
270
|
+
- MQTT bridge is optional add-on
|
|
271
|
+
- Existing sketches work without modification
|
|
272
|
+
- No recompilation required unless adopting new features
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### 🔄 Migration Guide
|
|
277
|
+
|
|
278
|
+
#### No Migration Required
|
|
279
|
+
|
|
280
|
+
Existing v1.6.x code works without changes. To adopt new features:
|
|
281
|
+
|
|
282
|
+
#### Option 1: Enable Broadcast OTA
|
|
283
|
+
|
|
284
|
+
```cpp
|
|
285
|
+
// v1.6.x code (continues to work)
|
|
286
|
+
mesh.offerOTA(role, hw, md5, parts, false, false, true);
|
|
287
|
+
|
|
288
|
+
// v1.7.0 - add broadcast parameter
|
|
289
|
+
mesh.offerOTA(role, hw, md5, parts, false, true, true);
|
|
290
|
+
// ^^^^ enable broadcast
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
#### Option 2: Add MQTT Status Bridge
|
|
294
|
+
|
|
295
|
+
```cpp
|
|
296
|
+
// Include the bridge header
|
|
297
|
+
#include "examples/bridge/mqtt_status_bridge.hpp"
|
|
298
|
+
|
|
299
|
+
// In your setup(), create and configure bridge
|
|
300
|
+
MqttStatusBridge bridge(mesh, mqttClient);
|
|
301
|
+
bridge.setPublishInterval(30000); // 30 seconds
|
|
302
|
+
bridge.enableTopology(true);
|
|
303
|
+
bridge.enableMetrics(true);
|
|
304
|
+
bridge.enableAlerts(true);
|
|
305
|
+
bridge.begin();
|
|
306
|
+
|
|
307
|
+
// In your loop(), keep mesh and MQTT alive
|
|
308
|
+
void loop() {
|
|
309
|
+
mesh.update();
|
|
310
|
+
mqttClient.loop();
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### Option 3: Use Both Features
|
|
315
|
+
|
|
316
|
+
```cpp
|
|
317
|
+
// Phase 1: Compressed OTA
|
|
318
|
+
// Phase 2: Broadcast distribution
|
|
319
|
+
mesh.offerOTA(role, hw, md5, parts, false, true, true);
|
|
320
|
+
|
|
321
|
+
// Phase 2: MQTT Status Bridge
|
|
322
|
+
MqttStatusBridge bridge(mesh, mqttClient);
|
|
323
|
+
bridge.begin();
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 🎯 When to Use Each Feature
|
|
329
|
+
|
|
330
|
+
#### Broadcast OTA
|
|
331
|
+
|
|
332
|
+
✅ **Use when:**
|
|
333
|
+
- Mesh has 10+ nodes
|
|
334
|
+
- All nodes need same firmware
|
|
335
|
+
- Network bandwidth is limited
|
|
336
|
+
- Fast distribution is critical
|
|
337
|
+
- Large-scale deployments (50+ nodes)
|
|
338
|
+
|
|
339
|
+
❌ **Skip when:**
|
|
340
|
+
- Small meshes (<5 nodes) - unicast is sufficient
|
|
341
|
+
- Different firmware per node - use unicast with role filtering
|
|
342
|
+
- Highly unstable networks - unicast is more reliable
|
|
343
|
+
|
|
344
|
+
#### MQTT Status Bridge
|
|
345
|
+
|
|
346
|
+
✅ **Use when:**
|
|
347
|
+
- Production deployments
|
|
348
|
+
- Remote monitoring requirements
|
|
349
|
+
- Integration with existing tools (Grafana, InfluxDB)
|
|
350
|
+
- Cloud-connected systems
|
|
351
|
+
- Enterprise environments
|
|
352
|
+
- Automated alerting needs
|
|
353
|
+
|
|
354
|
+
❌ **Skip when:**
|
|
355
|
+
- Development/testing (use Serial monitor)
|
|
356
|
+
- Pure offline meshes (no external network)
|
|
357
|
+
- Resource-constrained root nodes
|
|
358
|
+
- No MQTT infrastructure available
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
### 🔐 Security Considerations
|
|
363
|
+
|
|
364
|
+
#### MQTT Bridge Security
|
|
365
|
+
|
|
366
|
+
- **Recommendation:** Use TLS/SSL for MQTT connections in production
|
|
367
|
+
- **Authentication:** Enable MQTT broker authentication (username/password)
|
|
368
|
+
- **Network Isolation:** Consider VLANs or firewall rules for MQTT traffic
|
|
369
|
+
- **Topic ACLs:** Configure topic access control lists on broker
|
|
370
|
+
|
|
371
|
+
**Example (secure MQTT):**
|
|
372
|
+
```cpp
|
|
373
|
+
wifiClient.setCACert(ca_cert); // TLS certificate
|
|
374
|
+
mqttClient.setServer(broker, 8883); // Secure port
|
|
375
|
+
mqttClient.connect("bridge", mqtt_user, mqtt_pass);
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### OTA Security
|
|
379
|
+
|
|
380
|
+
- **Firmware Signing:** MD5 verification included (consider SHA256 for higher security)
|
|
381
|
+
- **Role-Based Updates:** Use role filtering to target specific device types
|
|
382
|
+
- **Test First:** Always test OTA on small subset before full mesh rollout
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
### 📋 Compatibility Matrix
|
|
387
|
+
|
|
388
|
+
| Component | v1.6.x | v1.7.0 | Compatible |
|
|
389
|
+
|-----------|--------|--------|------------|
|
|
390
|
+
| Basic OTA | ✅ | ✅ | ✅ Yes |
|
|
391
|
+
| Compressed OTA | ✅ | ✅ | ✅ Yes |
|
|
392
|
+
| Broadcast OTA | ❌ | ✅ | ✅ Yes (new) |
|
|
393
|
+
| Basic Status Packages | ✅ | ✅ | ✅ Yes |
|
|
394
|
+
| Enhanced Status Packages | ✅ | ✅ | ✅ Yes |
|
|
395
|
+
| MQTT Bridge | ❌ | ✅ | ✅ Yes (new) |
|
|
396
|
+
| Custom Packages (200-203) | ✅ | ✅ | ✅ Yes |
|
|
397
|
+
| Mesh Topology | ❌ | ✅ | ✅ Yes (new) |
|
|
398
|
+
|
|
399
|
+
**Platform Support:**
|
|
400
|
+
- ✅ ESP32 (all variants)
|
|
401
|
+
- ✅ ESP8266 (with memory considerations)
|
|
402
|
+
- ✅ Arduino IDE 2.x
|
|
403
|
+
- ✅ PlatformIO 6.x
|
|
404
|
+
- ✅ espressif32 platform
|
|
405
|
+
- ✅ espressif8266 platform
|
|
406
|
+
|
|
407
|
+
**Dependencies:**
|
|
408
|
+
- ArduinoJson ^7.4.2
|
|
409
|
+
- TaskScheduler ^4.0.0
|
|
410
|
+
- AsyncTCP ^3.4.7 (ESP32)
|
|
411
|
+
- ESPAsyncTCP ^2.0.0 (ESP8266)
|
|
412
|
+
- @alteriom/mqtt-schema v0.5.0 (dev)
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
### 🧪 Testing Recommendations
|
|
417
|
+
|
|
418
|
+
#### Before Upgrading
|
|
419
|
+
|
|
420
|
+
1. **Backup Current Firmware**
|
|
421
|
+
- Keep v1.6.x binaries for rollback
|
|
422
|
+
- Document current mesh configuration
|
|
423
|
+
|
|
424
|
+
2. **Review Changes**
|
|
425
|
+
- Read [CHANGELOG.md](CHANGELOG.md)
|
|
426
|
+
- Review [PHASE2_GUIDE.md](docs/PHASE2_GUIDE.md)
|
|
427
|
+
- Check [LIBRARY_STRUCTURE_FIX.md](LIBRARY_STRUCTURE_FIX.md)
|
|
428
|
+
|
|
429
|
+
3. **Test in Development**
|
|
430
|
+
- Deploy to test mesh (2-5 nodes)
|
|
431
|
+
- Verify compilation succeeds
|
|
432
|
+
- Test existing functionality
|
|
433
|
+
|
|
434
|
+
#### After Upgrading
|
|
435
|
+
|
|
436
|
+
1. **Verify Compilation**
|
|
437
|
+
```bash
|
|
438
|
+
pio run --target clean
|
|
439
|
+
pio run
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
2. **Test Basic Mesh**
|
|
443
|
+
- Nodes connect successfully
|
|
444
|
+
- Messages route correctly
|
|
445
|
+
- Time sync works
|
|
446
|
+
|
|
447
|
+
3. **Test New Features (Optional)**
|
|
448
|
+
- Broadcast OTA on small mesh (2-3 nodes)
|
|
449
|
+
- MQTT bridge with local broker
|
|
450
|
+
- Topology visualization
|
|
451
|
+
|
|
452
|
+
#### Production Rollout
|
|
453
|
+
|
|
454
|
+
1. **Pilot Phase**
|
|
455
|
+
- Deploy to 10% of mesh (5-10 nodes)
|
|
456
|
+
- Monitor for 24-48 hours
|
|
457
|
+
- Check logs for errors
|
|
458
|
+
|
|
459
|
+
2. **Gradual Rollout**
|
|
460
|
+
- Expand to 50% of mesh
|
|
461
|
+
- Monitor performance metrics
|
|
462
|
+
- Verify stability
|
|
463
|
+
|
|
464
|
+
3. **Full Deployment**
|
|
465
|
+
- Complete mesh upgrade
|
|
466
|
+
- Enable advanced features as needed
|
|
467
|
+
- Document configuration
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
### 🐛 Known Issues
|
|
472
|
+
|
|
473
|
+
#### None Currently Identified
|
|
474
|
+
|
|
475
|
+
All known issues from v1.6.x have been resolved in v1.7.0. If you encounter any problems:
|
|
476
|
+
|
|
477
|
+
1. Check [SCONS_BUILD_FIX.md](SCONS_BUILD_FIX.md) for compilation issues
|
|
478
|
+
2. Review [docs/troubleshooting/common-issues.md](docs/troubleshooting/common-issues.md)
|
|
479
|
+
3. Run validation: `python scripts/validate_library_structure.py`
|
|
480
|
+
4. Open issue: https://github.com/Alteriom/painlessMesh/issues
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
### 📖 Complete Documentation
|
|
485
|
+
|
|
486
|
+
| Topic | Document | Description |
|
|
487
|
+
|-------|----------|-------------|
|
|
488
|
+
| **Release Overview** | RELEASE_NOTES_1.7.0.md | This document |
|
|
489
|
+
| **Changelog** | [CHANGELOG.md](CHANGELOG.md) | Detailed change history |
|
|
490
|
+
| **Phase 2 Features** | [docs/PHASE2_GUIDE.md](docs/PHASE2_GUIDE.md) | Complete API and usage guide |
|
|
491
|
+
| **Implementation Details** | [docs/improvements/PHASE2_IMPLEMENTATION.md](docs/improvements/PHASE2_IMPLEMENTATION.md) | Technical architecture |
|
|
492
|
+
| **Visualization Guide** | [docs/MESH_TOPOLOGY_GUIDE.md](docs/MESH_TOPOLOGY_GUIDE.md) | Dashboard examples |
|
|
493
|
+
| **Bug Fixes** | [VECTOR_INCLUDE_FIX.md](VECTOR_INCLUDE_FIX.md) | Compilation fix details |
|
|
494
|
+
| **Library Structure** | [LIBRARY_STRUCTURE_FIX.md](LIBRARY_STRUCTURE_FIX.md) | PlatformIO fixes |
|
|
495
|
+
| **Build Troubleshooting** | [SCONS_BUILD_FIX.md](SCONS_BUILD_FIX.md) | Comprehensive diagnostics |
|
|
496
|
+
| **PlatformIO Usage** | [PLATFORMIO_USAGE.md](PLATFORMIO_USAGE.md) | Quick start guide |
|
|
497
|
+
| **MQTT Commands** | [docs/MQTT_BRIDGE_COMMANDS.md](docs/MQTT_BRIDGE_COMMANDS.md) | Command reference |
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
### 🙏 Acknowledgments
|
|
502
|
+
|
|
503
|
+
This release includes contributions from:
|
|
504
|
+
- **Phase 2 Implementation Team** - Broadcast OTA and MQTT bridge design
|
|
505
|
+
- **Community Bug Reports** - Compilation and build system issues
|
|
506
|
+
- **Documentation Contributors** - Comprehensive guides and examples
|
|
507
|
+
- **Testing Team** - Validation and quality assurance
|
|
508
|
+
|
|
509
|
+
Special thanks to all users who reported issues and provided feedback during development.
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
### 🚀 What's Next: Phase 3
|
|
514
|
+
|
|
515
|
+
According to [docs/improvements/FEATURE_PROPOSALS.md](docs/improvements/FEATURE_PROPOSALS.md), Phase 3 will include:
|
|
516
|
+
|
|
517
|
+
- **Progressive Rollout OTA (Option 1B)** - Phased deployment with health checks
|
|
518
|
+
- **Real-time Telemetry Streams (Option 2C)** - Continuous metrics streaming
|
|
519
|
+
- **Proactive Alerting System** - Automated anomaly detection
|
|
520
|
+
- **Large-Scale Optimization** - Support for 200+ node meshes
|
|
521
|
+
|
|
522
|
+
Follow development: https://github.com/Alteriom/painlessMesh/projects
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
### 📞 Support
|
|
527
|
+
|
|
528
|
+
**Documentation:** https://alteriom.github.io/painlessMesh/
|
|
529
|
+
**Issues:** https://github.com/Alteriom/painlessMesh/issues
|
|
530
|
+
**Discussions:** https://github.com/Alteriom/painlessMesh/discussions
|
|
531
|
+
**Email:** support@alteriom.com
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
**Released:** October 15, 2025
|
|
536
|
+
**Version:** 1.7.0
|
|
537
|
+
**Schema:** @alteriom/mqtt-schema v0.5.0
|
|
538
|
+
**Status:** ✅ Production Ready
|
|
539
|
+
**Compatibility:** 100% backward compatible with v1.6.x
|