@alteriom/painlessmesh 1.8.14 → 1.9.0
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/BRIDGE_TO_INTERNET.md +229 -0
- package/CHANGELOG.md +89 -1
- package/CONTRIBUTING.md +79 -0
- package/README.md +70 -143
- package/docs/README.md +1 -0
- package/docs/api/shared-gateway.md +1207 -0
- package/docs/troubleshooting/common-issues.md +28 -0
- package/docs/troubleshooting/faq.md +113 -12
- package/examples/basic/test/simulator/CMakeLists.txt +40 -0
- package/examples/basic/test/simulator/README.md +149 -0
- package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
- package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
- package/examples/bridge/bridge.ino +17 -4
- package/examples/bridge_failover/README.md +81 -0
- package/examples/bridge_failover/bridge_failover.ino +51 -6
- package/examples/sharedGateway/README.md +235 -0
- package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
- package/examples/sharedGateway/sharedGateway.ino +303 -0
- package/library.json +3 -22
- package/library.properties +1 -1
- package/package.json +3 -3
- package/src/arduino/wifi.hpp +380 -13
- package/src/painlessmesh/gateway.hpp +2120 -0
- package/src/painlessmesh/mesh.hpp +1034 -6
- package/src/painlessmesh/message_tracker.hpp +311 -0
- package/src/painlessmesh/protocol.hpp +6 -0
- package/DOCUMENTATION_INDEX.md +0 -146
- package/docs/API_DESIGN_GUIDELINES.md +0 -414
- package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
- package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
- package/docs/BRIDGE_FAILOVER.md +0 -512
- package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
- package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
- package/docs/CREATE_MISSING_RELEASES.md +0 -321
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
- package/docs/FAQ_VERSION_NUMBERS.md +0 -152
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
- package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
- package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
- package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
- package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
- package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
- package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
- package/docs/PHASE1_GUIDE.md +0 -349
- package/docs/PHASE2_GUIDE.md +0 -543
- package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
- package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
- package/docs/VERSION_MANAGEMENT.md +0 -213
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
- package/docs/archive/FEATURE_PROPOSALS.md +0 -337
- package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
- package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
- package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
- package/docs/archive/RELEASE_SUMMARY.md +0 -173
- package/docs/archive/SCONS_BUILD_FIX.md +0 -313
- package/docs/archive/TRIGGER_RELEASE.md +0 -280
- package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
- package/docs/archive/ota-and-status-enhancements.md +0 -911
- package/docs/archive/ota-status-architecture-diagrams.md +0 -658
- package/docs/archive/ota-status-quick-reference.md +0 -284
- package/docs/design/.gitkeep +0 -1
- package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
- package/docs/development/DOCKER_TESTING.md +0 -196
- package/docs/development/PLATFORMIO_USAGE.md +0 -180
- package/docs/development/TESTING_SUMMARY.md +0 -126
- package/docs/development/contributing.md +0 -301
- package/docs/development/documentation.md +0 -583
- package/docs/features/DIAGNOSTICS_API.md +0 -534
- package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
- package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
- package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
- package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
- package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
- package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
- package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
- package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
- package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
- package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
- package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
- package/docs/improvements/README.md +0 -212
- package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
- package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
- package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
- package/docs/internal/ISSUE_66_STATUS.md +0 -316
- package/docs/internal/PR_SUMMARY.md +0 -315
- package/docs/internal/REVIEW_SUMMARY.md +0 -332
- package/docs/multi-bridge-setup.md +0 -1025
- package/docs/platformio-publishing.md +0 -255
- package/docs/platformio-setup-summary.md +0 -121
- package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
- package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
- package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
- package/docs/releases/FEATURE_HISTORY.md +0 -543
- package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
- package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
- package/docs/releases/PATCH_v1.7.2.md +0 -262
- package/docs/releases/PATCH_v1.7.3.md +0 -262
- package/docs/releases/PATCH_v1.7.4.md +0 -219
- package/docs/releases/PHASE1_SUMMARY.md +0 -246
- package/docs/releases/PHASE2_SUMMARY.md +0 -499
- package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
- package/docs/releases/QUICK_START_RELEASES.md +0 -113
- package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
- package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
- package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
- package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
- package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
- package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
- package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
- package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
- package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
- package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
- package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
- package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
- package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
- package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
- package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
- package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
- package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
- package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
- package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
- package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
- package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
- package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
- package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
- package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
- package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
- package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
- package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
- package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
- package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
- package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
- package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
- package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
- package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
- package/docs/troubleshooting/station-reconnection-issues.md +0 -172
- package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
- package/docs/wiki/API-Reference.md +0 -246
- package/docs/wiki/Complete-Documentation.md +0 -123
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
- package/examples/alteriomImproved/platformio.ini +0 -32
- package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
- package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
- package/examples/alteriomMetricsHealth/platformio.ini +0 -26
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase1/phase1_features.ino +0 -242
- package/examples/alteriomPhase1/platformio.ini +0 -26
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase2/phase2_features.ino +0 -186
- package/examples/alteriomPhase2/platformio.ini +0 -26
- package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/alteriomSensorNode/platformio.ini +0 -26
- package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
- package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
- package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
- package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
- package/examples/bridge/mesh_event_publisher.hpp +0 -253
- package/examples/bridge/mesh_topology_reporter.hpp +0 -303
- package/examples/bridge/mqtt_command_bridge.hpp +0 -459
- package/examples/bridge/mqtt_status_bridge.hpp +0 -519
- package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
- package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
- package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
- package/examples/diagnosticsExample/platformio.ini +0 -26
- package/examples/echoNode/echoNode.ino +0 -33
- package/examples/echoNode/platformio.ini +0 -26
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
- package/examples/meshCommandNode/meshCommandNode.ino +0 -265
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
- package/examples/mqttCommandBridge/platformio.ini +0 -27
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
- package/examples/mqttStatusBridge/platformio.ini +0 -27
- package/examples/mqttTopologyTest/README.md +0 -467
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
- package/examples/mqttTopologyTest/platformio.ini +0 -27
- package/examples/multi_bridge/README.md +0 -346
- package/examples/multi_bridge/primary_bridge.ino +0 -96
- package/examples/multi_bridge/regular_node.ino +0 -141
- package/examples/multi_bridge/secondary_bridge.ino +0 -111
- package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
- package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
- package/examples/queued_alarms/README.md +0 -390
- package/examples/queued_alarms/queued_alarms.ino +0 -265
- package/examples/routing_demo/README.md +0 -172
- package/examples/routing_demo/routing_demo.ino +0 -102
- package/examples/rtcIntegration/README.md +0 -294
- package/examples/rtcIntegration/rtcIntegration.ino +0 -210
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
# painlessMesh v1.8.6 Release Notes
|
|
2
|
-
|
|
3
|
-
**Release Date:** November 12, 2025
|
|
4
|
-
**Type:** Patch Release
|
|
5
|
-
**Breaking Changes:** None - 100% Backward Compatible
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 🎯 Executive Summary
|
|
10
|
-
|
|
11
|
-
Version 1.8.6 fixes a critical issue in the bridge failover mechanism where mesh networks would remain bridgeless indefinitely when all nodes started without a designated initial bridge. This release introduces automatic bridge election monitoring that ensures meshes always establish internet connectivity when configured for bridge failover.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 🐛 Bug Fixes
|
|
16
|
-
|
|
17
|
-
### Bridge Failover Auto-Election (Issue #117)
|
|
18
|
-
|
|
19
|
-
**Problem:** The bridge failover example didn't work when all nodes had `INITIAL_BRIDGE=false`. The mesh would start but never elect a bridge, leaving the network without internet connectivity indefinitely.
|
|
20
|
-
|
|
21
|
-
**Symptoms:**
|
|
22
|
-
```
|
|
23
|
-
--- Bridge Status ---
|
|
24
|
-
I am bridge: NO
|
|
25
|
-
Internet available: NO
|
|
26
|
-
Known bridges: 0
|
|
27
|
-
No primary bridge available!
|
|
28
|
-
--------------------
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
**Root Cause:** Bridge elections only triggered when an *existing* bridge lost connectivity. When the mesh had no bridge from startup, no election was ever initiated.
|
|
32
|
-
|
|
33
|
-
**Solution:** Added periodic monitoring task (30-second interval) that:
|
|
34
|
-
- Detects absence of healthy bridges in the mesh
|
|
35
|
-
- Triggers bridge election after 60-second startup grace period
|
|
36
|
-
- Uses randomized election delay (1-3 seconds) to prevent thundering herd
|
|
37
|
-
- Respects all existing safeguards (election state, cooldown, router visibility)
|
|
38
|
-
|
|
39
|
-
**Behavior Changes:**
|
|
40
|
-
|
|
41
|
-
| Scenario | Before v1.8.6 | After v1.8.6 |
|
|
42
|
-
|----------|---------------|--------------|
|
|
43
|
-
| No initial bridge | Mesh stays bridgeless forever | Election triggered after 60s, best RSSI node becomes bridge |
|
|
44
|
-
| Pre-designated bridge | Works normally | Works normally (unchanged) |
|
|
45
|
-
| Bridge failure | Election triggered | Election triggered (unchanged) |
|
|
46
|
-
|
|
47
|
-
**Backward Compatibility:** Fully backward compatible. Pre-designated bridge mode continues to work exactly as before.
|
|
48
|
-
|
|
49
|
-
**Core Changes:** `src/arduino/wifi.hpp`
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 📝 Documentation Improvements
|
|
54
|
-
|
|
55
|
-
### Bridge Failover Example Clarification
|
|
56
|
-
|
|
57
|
-
Enhanced documentation for `examples/bridge_failover/` to clearly explain two deployment modes:
|
|
58
|
-
|
|
59
|
-
**Auto-Election Mode** (New Documentation)
|
|
60
|
-
- All nodes start with `INITIAL_BRIDGE=false`
|
|
61
|
-
- After 60-second startup grace period, monitoring begins
|
|
62
|
-
- Best RSSI node automatically elected as bridge
|
|
63
|
-
- Ideal for dynamic deployments where optimal bridge selection matters
|
|
64
|
-
|
|
65
|
-
**Pre-Designated Mode** (Existing)
|
|
66
|
-
- One node starts with `INITIAL_BRIDGE=true`
|
|
67
|
-
- Traditional setup with guaranteed initial bridge
|
|
68
|
-
- Ideal for fixed deployments with known bridge location
|
|
69
|
-
|
|
70
|
-
Updated files:
|
|
71
|
-
- `examples/bridge_failover/bridge_failover.ino` - Enhanced header comments
|
|
72
|
-
- `examples/bridge_failover/README.md` - Comprehensive mode documentation
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 🔧 Housekeeping
|
|
77
|
-
|
|
78
|
-
- Synchronized `package-lock.json` version to 1.8.5
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## 🔄 Upgrade Guide
|
|
83
|
-
|
|
84
|
-
### From v1.8.5 to v1.8.6
|
|
85
|
-
|
|
86
|
-
This is a seamless upgrade with no breaking changes:
|
|
87
|
-
|
|
88
|
-
1. **Update Package Version:**
|
|
89
|
-
```bash
|
|
90
|
-
# PlatformIO
|
|
91
|
-
pio pkg update alteriom/AlteriomPainlessMesh@^1.8.6
|
|
92
|
-
|
|
93
|
-
# NPM
|
|
94
|
-
npm update @alteriom/painlessmesh
|
|
95
|
-
|
|
96
|
-
# Arduino Library Manager
|
|
97
|
-
# Update through IDE's Library Manager
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
2. **No Code Changes Required** - All existing code works without modification
|
|
101
|
-
|
|
102
|
-
3. **Optional: Enable Auto-Election Mode**
|
|
103
|
-
```cpp
|
|
104
|
-
// For auto-election mode, set all nodes to:
|
|
105
|
-
#define INITIAL_BRIDGE false
|
|
106
|
-
|
|
107
|
-
// Network will automatically elect bridge after 60s startup
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## 🎯 Use Cases
|
|
113
|
-
|
|
114
|
-
This release is particularly valuable for:
|
|
115
|
-
|
|
116
|
-
### 1. Dynamic Mesh Networks
|
|
117
|
-
- Mobile or portable mesh deployments
|
|
118
|
-
- Networks where node positions change
|
|
119
|
-
- Optimal bridge selection based on WiFi signal strength
|
|
120
|
-
|
|
121
|
-
### 2. Fault-Tolerant Deployments
|
|
122
|
-
- Meshes that must establish connectivity without manual intervention
|
|
123
|
-
- Systems requiring automatic bridge recovery
|
|
124
|
-
- IoT deployments with minimal human oversight
|
|
125
|
-
|
|
126
|
-
### 3. Development & Testing
|
|
127
|
-
- Quick prototyping without pre-configuring bridge nodes
|
|
128
|
-
- Testing scenarios with varying network topologies
|
|
129
|
-
- Validation of bridge election algorithms
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## 📊 Technical Details
|
|
134
|
-
|
|
135
|
-
### Monitoring Task Implementation
|
|
136
|
-
|
|
137
|
-
```cpp
|
|
138
|
-
// Periodic check every 30 seconds
|
|
139
|
-
this->addTask(30000, TASK_FOREVER, [this]() {
|
|
140
|
-
// Skip if: not enabled, already bridge, or in startup grace period
|
|
141
|
-
if (!bridgeFailoverEnabled || !routerCredentialsConfigured) return;
|
|
142
|
-
if (this->isBridge() || millis() < 60000) return;
|
|
143
|
-
|
|
144
|
-
// Check for healthy bridge
|
|
145
|
-
bool hasHealthyBridge = false;
|
|
146
|
-
for (const auto& bridge : this->getBridges()) {
|
|
147
|
-
if (bridge.isHealthy(bridgeTimeoutMs) && bridge.internetConnected) {
|
|
148
|
-
hasHealthyBridge = true;
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Trigger election with randomized delay if no bridge found
|
|
154
|
-
if (!hasHealthyBridge) {
|
|
155
|
-
uint32_t delay = random(1000, 3000);
|
|
156
|
-
this->addTask(delay, TASK_ONCE, [this]() {
|
|
157
|
-
this->startBridgeElection();
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Safeguards
|
|
164
|
-
|
|
165
|
-
1. **60-second startup grace period** - Allows network to stabilize
|
|
166
|
-
2. **Randomized election delay** - Prevents simultaneous elections
|
|
167
|
-
3. **Respects election state** - Won't trigger if election already in progress
|
|
168
|
-
4. **Cooldown period** - Enforces 60-second minimum between elections
|
|
169
|
-
5. **Router visibility check** - Only nodes that can see router participate
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 🙏 Credits
|
|
174
|
-
|
|
175
|
-
Special thanks to @woodlist for reporting Issue #117 and providing detailed logs that helped identify the root cause.
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## 📦 Distribution
|
|
180
|
-
|
|
181
|
-
This release is available through:
|
|
182
|
-
- **GitHub Releases**: [v1.8.6](https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.6)
|
|
183
|
-
- **NPM**: `npm install @alteriom/painlessmesh@1.8.6`
|
|
184
|
-
- **PlatformIO**: `alteriom/AlteriomPainlessMesh@^1.8.6`
|
|
185
|
-
- **Arduino Library Manager**: Search for "AlteriomPainlessMesh"
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## 📚 Additional Resources
|
|
190
|
-
|
|
191
|
-
- [Bridge Failover Example](https://github.com/Alteriom/painlessMesh/tree/main/examples/bridge_failover)
|
|
192
|
-
- [Bridge Failover Documentation](https://github.com/Alteriom/painlessMesh/blob/main/examples/bridge_failover/README.md)
|
|
193
|
-
- [Issue #117 - Bug Report](https://github.com/Alteriom/painlessMesh/issues/117)
|
|
194
|
-
- [Pull Request #118 - Implementation](https://github.com/Alteriom/painlessMesh/pull/118)
|
|
195
|
-
- [Full Changelog](https://github.com/Alteriom/painlessMesh/blob/main/CHANGELOG.md)
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## 🐛 Found a Bug?
|
|
200
|
-
|
|
201
|
-
Please report issues at: https://github.com/Alteriom/painlessMesh/issues
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
**Full Changelog**: [v1.8.5...v1.8.6](https://github.com/Alteriom/painlessMesh/compare/v1.8.5...v1.8.6)
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
# Release Notes - Version 1.8.7
|
|
2
|
-
|
|
3
|
-
**Release Date:** November 12, 2025
|
|
4
|
-
**Release Type:** Patch Release
|
|
5
|
-
**Focus:** Bug fixes and documentation improvements
|
|
6
|
-
|
|
7
|
-
## 🐛 Bug Fixes
|
|
8
|
-
|
|
9
|
-
### Bridge Internet Connectivity Detection
|
|
10
|
-
|
|
11
|
-
**Issue:** Bridge nodes were incorrectly reporting internet connectivity status.
|
|
12
|
-
|
|
13
|
-
**Problem:**
|
|
14
|
-
- Bridge connected to router would report "Internet: NO" even when the router had internet
|
|
15
|
-
- The `hasInternetConnection()` function was returning false positives on regular nodes
|
|
16
|
-
- Only checked WiFi connection status, not actual internet connectivity
|
|
17
|
-
|
|
18
|
-
**Solution:**
|
|
19
|
-
- Enhanced connectivity check to verify both WiFi status AND valid gateway IP
|
|
20
|
-
- Check now verifies `WiFi.status() == WL_CONNECTED` AND gateway IP is not 0.0.0.0
|
|
21
|
-
- Regular nodes without WiFi connection correctly report no internet
|
|
22
|
-
|
|
23
|
-
**Impact:**
|
|
24
|
-
- Bridge failover logic now works correctly
|
|
25
|
-
- Internet connectivity status is accurate
|
|
26
|
-
- Better network topology awareness
|
|
27
|
-
|
|
28
|
-
**Files Modified:**
|
|
29
|
-
- `src/arduino/wifi.hpp` (lines 1188-1192)
|
|
30
|
-
- `examples/bridge_failover/README.md` (added troubleshooting)
|
|
31
|
-
|
|
32
|
-
**Before:**
|
|
33
|
-
```
|
|
34
|
-
Bridge → Router (with Internet) → Reports: "Internet: NO" ❌
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**After:**
|
|
38
|
-
```
|
|
39
|
-
Bridge → Router (with Internet) → Reports: "Internet: YES" ✅
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Version Documentation Consistency
|
|
43
|
-
|
|
44
|
-
**Issue:** Header file version comments were out of sync with library version, causing user confusion.
|
|
45
|
-
|
|
46
|
-
**Problem:**
|
|
47
|
-
- `painlessMesh.h` showed version 1.8.4 in header comment
|
|
48
|
-
- `AlteriomPainlessMesh.h` showed version 1.6.1 in version defines
|
|
49
|
-
- Library files showed version 1.8.6
|
|
50
|
-
- Users were confused about whether files had been modified since those versions
|
|
51
|
-
|
|
52
|
-
**Solution:**
|
|
53
|
-
- Updated `painlessMesh.h` header comment to version 1.8.7
|
|
54
|
-
- Updated `AlteriomPainlessMesh.h` version defines to 1.8.7
|
|
55
|
-
- Created comprehensive VERSION_MANAGEMENT.md documentation
|
|
56
|
-
- Clarified that header versions reflect library version, not file-specific versioning
|
|
57
|
-
- Added version management guidance to RELEASE_GUIDE.md
|
|
58
|
-
|
|
59
|
-
**Impact:**
|
|
60
|
-
- Clear documentation about version management
|
|
61
|
-
- No more confusion about header file versions
|
|
62
|
-
- Established best practices for version comments
|
|
63
|
-
|
|
64
|
-
**Files Modified:**
|
|
65
|
-
- `src/painlessMesh.h`
|
|
66
|
-
- `src/AlteriomPainlessMesh.h`
|
|
67
|
-
- `docs/VERSION_MANAGEMENT.md` (new)
|
|
68
|
-
- `RELEASE_GUIDE.md` (enhanced)
|
|
69
|
-
|
|
70
|
-
**Documentation Added:**
|
|
71
|
-
- Explains version comment purpose and meaning
|
|
72
|
-
- Clarifies difference between library version and file modification history
|
|
73
|
-
- Provides best practices for version management
|
|
74
|
-
- Documents the complete version update process
|
|
75
|
-
|
|
76
|
-
## 📚 Documentation Improvements
|
|
77
|
-
|
|
78
|
-
### New Documentation
|
|
79
|
-
|
|
80
|
-
1. **VERSION_MANAGEMENT.md**
|
|
81
|
-
- Comprehensive guide to version management
|
|
82
|
-
- Explains version comment purpose
|
|
83
|
-
- Clarifies common questions
|
|
84
|
-
- Documents version update workflow
|
|
85
|
-
- Best practices for version comments
|
|
86
|
-
|
|
87
|
-
### Enhanced Documentation
|
|
88
|
-
|
|
89
|
-
1. **RELEASE_GUIDE.md**
|
|
90
|
-
- Added reference to VERSION_MANAGEMENT.md
|
|
91
|
-
- Updated release process to include header version updates
|
|
92
|
-
- Clarified version management workflow
|
|
93
|
-
|
|
94
|
-
2. **bridge_failover/README.md**
|
|
95
|
-
- Added troubleshooting for internet connectivity issues
|
|
96
|
-
- Explained the enhanced connectivity detection
|
|
97
|
-
|
|
98
|
-
## 🔄 Migration Guide
|
|
99
|
-
|
|
100
|
-
No breaking changes. This release is fully backward compatible with version 1.8.6.
|
|
101
|
-
|
|
102
|
-
### For Users
|
|
103
|
-
|
|
104
|
-
**No action required.** Simply update to version 1.8.7:
|
|
105
|
-
|
|
106
|
-
**Arduino Library Manager:**
|
|
107
|
-
```
|
|
108
|
-
Sketch → Include Library → Manage Libraries → Search "AlteriomPainlessMesh" → Update
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**PlatformIO:**
|
|
112
|
-
```ini
|
|
113
|
-
[env:myenv]
|
|
114
|
-
lib_deps =
|
|
115
|
-
alteriom/AlteriomPainlessMesh@^1.8.7
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**NPM:**
|
|
119
|
-
```bash
|
|
120
|
-
npm update @alteriom/painlessmesh
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### For Contributors
|
|
124
|
-
|
|
125
|
-
**When releasing future versions:**
|
|
126
|
-
1. Update header file version comments to match library version
|
|
127
|
-
2. Follow the VERSION_MANAGEMENT.md guidelines
|
|
128
|
-
3. Use the enhanced release process in RELEASE_GUIDE.md
|
|
129
|
-
|
|
130
|
-
## 📊 Technical Details
|
|
131
|
-
|
|
132
|
-
### Files Changed
|
|
133
|
-
- `src/painlessMesh.h` - Version comment updated
|
|
134
|
-
- `src/AlteriomPainlessMesh.h` - Version defines updated
|
|
135
|
-
- `src/arduino/wifi.hpp` - Internet connectivity detection fixed
|
|
136
|
-
- `examples/bridge_failover/README.md` - Troubleshooting added
|
|
137
|
-
- `docs/VERSION_MANAGEMENT.md` - New documentation
|
|
138
|
-
- `RELEASE_GUIDE.md` - Version management guidance added
|
|
139
|
-
- `CHANGELOG.md` - Release notes added
|
|
140
|
-
- `library.properties` - Version 1.8.7
|
|
141
|
-
- `library.json` - Version 1.8.7
|
|
142
|
-
- `package.json` - Version 1.8.7
|
|
143
|
-
|
|
144
|
-
### Testing
|
|
145
|
-
|
|
146
|
-
All existing tests pass. No new tests required as changes are:
|
|
147
|
-
- Documentation updates
|
|
148
|
-
- Bug fixes to existing functionality
|
|
149
|
-
- Version comment updates
|
|
150
|
-
|
|
151
|
-
### Compatibility
|
|
152
|
-
|
|
153
|
-
- ✅ **ESP32**: All variants supported
|
|
154
|
-
- ✅ **ESP8266**: All variants supported
|
|
155
|
-
- ✅ **Arduino Core 2.x**: Fully compatible
|
|
156
|
-
- ✅ **Arduino Core 3.x**: Fully compatible
|
|
157
|
-
- ✅ **PlatformIO**: All platforms supported
|
|
158
|
-
|
|
159
|
-
## 🙏 Acknowledgments
|
|
160
|
-
|
|
161
|
-
**Issue Reporter:**
|
|
162
|
-
- User question about version comments in painlessMesh.h
|
|
163
|
-
|
|
164
|
-
**Contributors:**
|
|
165
|
-
- @Alteriom - Bug fixes and documentation
|
|
166
|
-
|
|
167
|
-
## 📖 Related Resources
|
|
168
|
-
|
|
169
|
-
- **VERSION_MANAGEMENT.md** - Complete version management guide
|
|
170
|
-
- **RELEASE_GUIDE.md** - Release process documentation
|
|
171
|
-
- **CHANGELOG.md** - Complete version history
|
|
172
|
-
- **GitHub Issues** - [Report issues](https://github.com/Alteriom/painlessMesh/issues)
|
|
173
|
-
|
|
174
|
-
## 🔗 Links
|
|
175
|
-
|
|
176
|
-
- **GitHub Release:** https://github.com/Alteriom/painlessMesh/releases/tag/v1.8.7
|
|
177
|
-
- **NPM Package:** https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
178
|
-
- **PlatformIO:** https://registry.platformio.org/libraries/alteriom/AlteriomPainlessMesh
|
|
179
|
-
- **Documentation:** https://alteriom.github.io/painlessMesh/
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
**Previous Release:** [v1.8.6](RELEASE_NOTES_v1.8.6.md) - November 12, 2025
|
|
184
|
-
**Next Release:** TBD
|