@alteriom/painlessmesh 1.8.15 → 1.9.1
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 +101 -1
- package/CONTRIBUTING.md +79 -0
- package/README.md +69 -144
- package/docs/README.md +1 -0
- package/docs/api/shared-gateway.md +1207 -0
- package/examples/bridge_failover/README.md +113 -0
- package/examples/bridge_failover/bridge_failover.ino +38 -4
- 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 -6
- package/src/arduino/wifi.hpp +504 -4
- 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/RELEASE_NOTES_1.8.15.md +0 -160
- package/RELEASE_READINESS_PLAN.md +0 -323
- package/TESTING_WITH_SIMULATOR.md +0 -259
- 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/BRIDGE_INITIALIZATION_FALLBACK.md +0 -357
- 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/SIMULATOR_TESTING.md +0 -408
- 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/common-architecture-mistakes.md +0 -438
- package/docs/troubleshooting/internet-access-faq.md +0 -299
- 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 -108
- package/examples/multi_bridge/regular_node.ino +0 -141
- package/examples/multi_bridge/secondary_bridge.ino +0 -123
- 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,221 +0,0 @@
|
|
|
1
|
-
# Bridge Status Self-Registration Fix
|
|
2
|
-
|
|
3
|
-
## Issue Reported by @woodlist
|
|
4
|
-
|
|
5
|
-
**Problem**: After successfully promoting to bridge via election, the node reports:
|
|
6
|
-
```
|
|
7
|
-
I am bridge: YES
|
|
8
|
-
Internet available: NO
|
|
9
|
-
Known bridges: 0
|
|
10
|
-
No primary bridge available! ❌
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Root Cause
|
|
14
|
-
|
|
15
|
-
When a node becomes a bridge (either via `initAsBridge()` or election promotion), it broadcasts bridge status messages to the mesh network, but **it does not add itself to its own `knownBridges` list**.
|
|
16
|
-
|
|
17
|
-
### Why This Happens
|
|
18
|
-
|
|
19
|
-
1. Node wins election and promotes to bridge ✅
|
|
20
|
-
2. Node calls `initBridgeStatusBroadcast()` ✅
|
|
21
|
-
3. Node sends bridge status broadcasts ✅
|
|
22
|
-
4. **Other nodes receive broadcasts and update their `knownBridges` ✅**
|
|
23
|
-
5. **Bridge node itself never receives its own broadcast ❌**
|
|
24
|
-
6. Bridge node's `knownBridges` remains empty ❌
|
|
25
|
-
7. `getPrimaryBridge()` returns `nullptr` because list is empty ❌
|
|
26
|
-
|
|
27
|
-
### Code Flow
|
|
28
|
-
|
|
29
|
-
```cpp
|
|
30
|
-
// When bridge promotes
|
|
31
|
-
promoteToBridge()
|
|
32
|
-
→ initAsBridge()
|
|
33
|
-
→ initBridgeStatusBroadcast()
|
|
34
|
-
→ sendBridgeStatus() // Broadcasts to network
|
|
35
|
-
→ sendBroadcast(msg) // Bridge doesn't receive its own broadcasts
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## The Fix
|
|
39
|
-
|
|
40
|
-
### Changes to `src/arduino/wifi.hpp`
|
|
41
|
-
|
|
42
|
-
#### 1. Modified `initBridgeStatusBroadcast()`
|
|
43
|
-
|
|
44
|
-
Added self-registration during bridge initialization:
|
|
45
|
-
|
|
46
|
-
```cpp
|
|
47
|
-
void initBridgeStatusBroadcast() {
|
|
48
|
-
using namespace logger;
|
|
49
|
-
|
|
50
|
-
if (!this->isBridge() || !this->bridgeStatusBroadcastEnabled) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
Log(STARTUP, "initBridgeStatusBroadcast(): Setting up bridge status broadcast\n");
|
|
55
|
-
|
|
56
|
-
// NEW: Register ourselves as a bridge in the knownBridges list
|
|
57
|
-
// This ensures the bridge knows about itself and reports correct status
|
|
58
|
-
this->addTask([this]() {
|
|
59
|
-
bool hasInternet = (WiFi.status() == WL_CONNECTED) &&
|
|
60
|
-
(WiFi.localIP() != IPAddress(0, 0, 0, 0));
|
|
61
|
-
|
|
62
|
-
this->updateBridgeStatus(
|
|
63
|
-
this->nodeId, // bridgeNodeId
|
|
64
|
-
hasInternet, // internetConnected
|
|
65
|
-
WiFi.RSSI(), // routerRSSI
|
|
66
|
-
WiFi.channel(), // routerChannel
|
|
67
|
-
millis(), // uptime
|
|
68
|
-
WiFi.gatewayIP().toString(),// gatewayIP
|
|
69
|
-
this->getNodeTime() // timestamp
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
Log(STARTUP, "initBridgeStatusBroadcast(): Registered self as bridge (nodeId: %u)\n",
|
|
73
|
-
this->nodeId);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// ... rest of method unchanged
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
#### 2. Modified `sendBridgeStatus()`
|
|
81
|
-
|
|
82
|
-
Added self-update before broadcasting:
|
|
83
|
-
|
|
84
|
-
```cpp
|
|
85
|
-
void sendBridgeStatus() {
|
|
86
|
-
using namespace logger;
|
|
87
|
-
|
|
88
|
-
if (!this->bridgeStatusBroadcastEnabled) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// ... create JSON message ...
|
|
93
|
-
|
|
94
|
-
bool hasInternet = (WiFi.status() == WL_CONNECTED) &&
|
|
95
|
-
(WiFi.localIP() != IPAddress(0, 0, 0, 0));
|
|
96
|
-
|
|
97
|
-
int8_t rssi = WiFi.RSSI();
|
|
98
|
-
uint8_t channel = WiFi.channel();
|
|
99
|
-
uint32_t uptime = millis();
|
|
100
|
-
TSTRING gatewayIP = WiFi.gatewayIP().toString();
|
|
101
|
-
|
|
102
|
-
// ... add to JSON ...
|
|
103
|
-
|
|
104
|
-
Log(GENERAL, "sendBridgeStatus(): Broadcasting status (Internet: %s)\n",
|
|
105
|
-
hasInternet ? "Connected" : "Disconnected");
|
|
106
|
-
Log(GENERAL, "sendBridgeStatus(): WiFi status=%d, localIP=%s, gatewayIP=%s\n",
|
|
107
|
-
WiFi.status(), WiFi.localIP().toString().c_str(), WiFi.gatewayIP().toString().c_str());
|
|
108
|
-
|
|
109
|
-
// NEW: Update our own bridge status in knownBridges list
|
|
110
|
-
// This ensures the bridge reports itself correctly when queried
|
|
111
|
-
this->updateBridgeStatus(this->nodeId, hasInternet, rssi, channel,
|
|
112
|
-
uptime, gatewayIP, this->getNodeTime());
|
|
113
|
-
|
|
114
|
-
this->sendBroadcast(msg);
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Expected Behavior After Fix
|
|
119
|
-
|
|
120
|
-
### Before Fix
|
|
121
|
-
```
|
|
122
|
-
--- Bridge Status ---
|
|
123
|
-
I am bridge: YES
|
|
124
|
-
Internet available: NO
|
|
125
|
-
Known bridges: 0
|
|
126
|
-
No primary bridge available! ❌
|
|
127
|
-
--------------------
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### After Fix
|
|
131
|
-
```
|
|
132
|
-
--- Bridge Status ---
|
|
133
|
-
I am bridge: YES
|
|
134
|
-
Internet available: NO ⚠️ (May be YES if router has internet)
|
|
135
|
-
Known bridges: 1
|
|
136
|
-
Primary bridge: 3394043125 (RSSI: -36 dBm) ✅
|
|
137
|
-
--------------------
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Technical Details
|
|
141
|
-
|
|
142
|
-
### Why Two Registration Points?
|
|
143
|
-
|
|
144
|
-
1. **`initBridgeStatusBroadcast()`** - Initial registration when bridge first starts
|
|
145
|
-
- Ensures bridge is in `knownBridges` immediately after promotion
|
|
146
|
-
- Provides accurate status for early queries
|
|
147
|
-
|
|
148
|
-
2. **`sendBridgeStatus()`** - Periodic updates
|
|
149
|
-
- Keeps bridge info current in `knownBridges`
|
|
150
|
-
- Updates RSSI, uptime, internet connectivity dynamically
|
|
151
|
-
- Ensures consistency between broadcast and local state
|
|
152
|
-
|
|
153
|
-
### Internet Connectivity
|
|
154
|
-
|
|
155
|
-
The "Internet available: NO" in @woodlist's log may be accurate depending on:
|
|
156
|
-
- Router has active internet connection
|
|
157
|
-
- DHCP has assigned valid IP address (not 0.0.0.0)
|
|
158
|
-
- `WiFi.localIP()` returns valid address
|
|
159
|
-
|
|
160
|
-
Check with:
|
|
161
|
-
```cpp
|
|
162
|
-
Log(GENERAL, "sendBridgeStatus(): WiFi status=%d, localIP=%s, gatewayIP=%s\n",
|
|
163
|
-
WiFi.status(), WiFi.localIP().toString().c_str(), WiFi.gatewayIP().toString().c_str());
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
This log line was present in the code but not visible in the serial output @woodlist provided.
|
|
167
|
-
|
|
168
|
-
## Impact
|
|
169
|
-
|
|
170
|
-
### Fixed Issues
|
|
171
|
-
✅ Bridge nodes now correctly report themselves in `knownBridges`
|
|
172
|
-
✅ `getPrimaryBridge()` returns valid bridge pointer for bridge nodes
|
|
173
|
-
✅ Bridge status displays accurately show "Known bridges: 1" minimum
|
|
174
|
-
✅ Regular nodes can immediately discover newly promoted bridges
|
|
175
|
-
|
|
176
|
-
### Backward Compatibility
|
|
177
|
-
✅ No breaking changes to existing API
|
|
178
|
-
✅ Compatible with existing bridge setups
|
|
179
|
-
✅ Works with both manual `initAsBridge()` and election-based promotion
|
|
180
|
-
✅ Multi-bridge configurations continue to function normally
|
|
181
|
-
|
|
182
|
-
## Testing
|
|
183
|
-
|
|
184
|
-
### Manual Test Procedure
|
|
185
|
-
1. Flash bridge_failover example to ESP32/ESP8266
|
|
186
|
-
2. Start all nodes without pre-configured bridge
|
|
187
|
-
3. Wait for 60-second grace period
|
|
188
|
-
4. Observe election and promotion
|
|
189
|
-
5. Check bridge status output
|
|
190
|
-
|
|
191
|
-
Expected to see:
|
|
192
|
-
- "Known bridges: 1" or more
|
|
193
|
-
- Valid primary bridge with node ID and RSSI
|
|
194
|
-
- No "No primary bridge available!" error
|
|
195
|
-
|
|
196
|
-
### Unit Tests
|
|
197
|
-
Existing tests in `test/catch/catch_diagnostics_api.cpp` verify:
|
|
198
|
-
- `updateBridgeStatus()` adds bridges correctly
|
|
199
|
-
- `getPrimaryBridge()` returns correct bridge based on RSSI/health
|
|
200
|
-
- Bridge tracking and health monitoring work as expected
|
|
201
|
-
|
|
202
|
-
## Files Modified
|
|
203
|
-
- `src/arduino/wifi.hpp`
|
|
204
|
-
- `initBridgeStatusBroadcast()` - Added self-registration
|
|
205
|
-
- `sendBridgeStatus()` - Added periodic self-update
|
|
206
|
-
|
|
207
|
-
## Related Issues
|
|
208
|
-
- Fixes "No primary bridge available" on bridge nodes
|
|
209
|
-
- Related to bridge election feature (v1.8.6)
|
|
210
|
-
- Complements bridge failover implementation
|
|
211
|
-
|
|
212
|
-
## Credits
|
|
213
|
-
**Reported by**: @woodlist
|
|
214
|
-
**Analysis**: GitHub Copilot
|
|
215
|
-
**Fix**: Self-registration pattern for bridge tracking
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
**Version**: To be included in v1.8.7+
|
|
220
|
-
**Date**: November 12, 2025
|
|
221
|
-
**Status**: Implementation complete, pending testing
|