@alteriom/painlessmesh 1.8.15 → 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 +61 -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 +81 -0
- package/examples/bridge_failover/bridge_failover.ino +35 -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 +342 -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,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bridge Health Monitoring Example
|
|
3
|
-
*
|
|
4
|
-
* Demonstrates the new bridge health metrics API for monitoring
|
|
5
|
-
* bridge connectivity, signal quality, traffic, and performance.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Periodic metrics collection and logging
|
|
9
|
-
* - MQTT integration for publishing metrics
|
|
10
|
-
* - Prometheus-style metrics export
|
|
11
|
-
* - Manual metrics reset and JSON export
|
|
12
|
-
*
|
|
13
|
-
* Hardware: ESP32 or ESP8266
|
|
14
|
-
*
|
|
15
|
-
* Based on painlessMesh v1.7.7+ bridge health monitoring feature
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
#include "painlessMesh.h"
|
|
19
|
-
|
|
20
|
-
// Mesh network configuration
|
|
21
|
-
#define MESH_PREFIX "BridgeMesh"
|
|
22
|
-
#define MESH_PASSWORD "somethingSneaky"
|
|
23
|
-
#define MESH_PORT 5555
|
|
24
|
-
|
|
25
|
-
// Bridge node configuration
|
|
26
|
-
#define STATION_SSID "YourWiFiSSID"
|
|
27
|
-
#define STATION_PASSWORD "YourWiFiPassword"
|
|
28
|
-
|
|
29
|
-
// Metrics reporting interval (60 seconds)
|
|
30
|
-
#define METRICS_INTERVAL 60000
|
|
31
|
-
|
|
32
|
-
Scheduler userScheduler;
|
|
33
|
-
painlessMesh mesh;
|
|
34
|
-
|
|
35
|
-
// MQTT client (if using MQTT integration)
|
|
36
|
-
// #include <PubSubClient.h>
|
|
37
|
-
// WiFiClient espClient;
|
|
38
|
-
// PubSubClient mqttClient(espClient);
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Metrics callback - called periodically with current metrics
|
|
42
|
-
* This is where you'd publish to MQTT, send to logging service, etc.
|
|
43
|
-
*/
|
|
44
|
-
void metricsCallback(painlessmesh::BridgeHealthMetrics metrics) {
|
|
45
|
-
Serial.println("\n========== Bridge Health Metrics ==========");
|
|
46
|
-
|
|
47
|
-
// Connectivity
|
|
48
|
-
Serial.println("Connectivity:");
|
|
49
|
-
Serial.printf(" Uptime: %u seconds\n", metrics.uptimeSeconds);
|
|
50
|
-
Serial.printf(" Internet Uptime: %u seconds\n", metrics.internetUptimeSeconds);
|
|
51
|
-
Serial.printf(" Total Disconnects: %u\n", metrics.totalDisconnects);
|
|
52
|
-
|
|
53
|
-
// Signal Quality
|
|
54
|
-
Serial.println("\nSignal Quality:");
|
|
55
|
-
Serial.printf(" Current RSSI: %d dBm\n", metrics.currentRSSI);
|
|
56
|
-
Serial.printf(" Average RSSI: %d dBm\n", metrics.avgRSSI);
|
|
57
|
-
Serial.printf(" Min RSSI: %d dBm\n", metrics.minRSSI);
|
|
58
|
-
Serial.printf(" Max RSSI: %d dBm\n", metrics.maxRSSI);
|
|
59
|
-
|
|
60
|
-
// Traffic
|
|
61
|
-
Serial.println("\nTraffic:");
|
|
62
|
-
Serial.printf(" Bytes RX: %llu\n", metrics.bytesRx);
|
|
63
|
-
Serial.printf(" Bytes TX: %llu\n", metrics.bytesTx);
|
|
64
|
-
Serial.printf(" Messages RX: %u\n", metrics.messagesRx);
|
|
65
|
-
Serial.printf(" Messages TX: %u\n", metrics.messagesTx);
|
|
66
|
-
Serial.printf(" Messages Dropped: %u\n", metrics.messagesDropped);
|
|
67
|
-
|
|
68
|
-
// Performance
|
|
69
|
-
Serial.println("\nPerformance:");
|
|
70
|
-
Serial.printf(" Avg Latency: %u ms\n", metrics.avgLatencyMs);
|
|
71
|
-
Serial.printf(" Packet Loss: %u%%\n", metrics.packetLossPercent);
|
|
72
|
-
Serial.printf(" Mesh Nodes: %u\n", metrics.meshNodeCount);
|
|
73
|
-
|
|
74
|
-
Serial.println("==========================================\n");
|
|
75
|
-
|
|
76
|
-
// MQTT Integration Example
|
|
77
|
-
// Uncomment if using MQTT
|
|
78
|
-
/*
|
|
79
|
-
if (mqttClient.connected()) {
|
|
80
|
-
String json = mesh.getHealthMetricsJSON();
|
|
81
|
-
mqttClient.publish("bridge/metrics", json.c_str());
|
|
82
|
-
Serial.println("Metrics published to MQTT");
|
|
83
|
-
}
|
|
84
|
-
*/
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Export metrics in Prometheus format
|
|
89
|
-
* Call this from a web server endpoint for Prometheus scraping
|
|
90
|
-
*/
|
|
91
|
-
String exportPrometheus() {
|
|
92
|
-
auto metrics = mesh.getBridgeHealthMetrics();
|
|
93
|
-
|
|
94
|
-
String output = "";
|
|
95
|
-
|
|
96
|
-
// Connectivity metrics
|
|
97
|
-
output += "# HELP bridge_uptime_seconds Bridge uptime in seconds\n";
|
|
98
|
-
output += "# TYPE bridge_uptime_seconds counter\n";
|
|
99
|
-
output += "bridge_uptime_seconds " + String(metrics.uptimeSeconds) + "\n";
|
|
100
|
-
|
|
101
|
-
output += "# HELP bridge_internet_uptime_seconds Internet connectivity uptime\n";
|
|
102
|
-
output += "# TYPE bridge_internet_uptime_seconds counter\n";
|
|
103
|
-
output += "bridge_internet_uptime_seconds " + String(metrics.internetUptimeSeconds) + "\n";
|
|
104
|
-
|
|
105
|
-
output += "# HELP bridge_disconnects_total Total number of disconnections\n";
|
|
106
|
-
output += "# TYPE bridge_disconnects_total counter\n";
|
|
107
|
-
output += "bridge_disconnects_total " + String(metrics.totalDisconnects) + "\n";
|
|
108
|
-
|
|
109
|
-
// Signal quality metrics
|
|
110
|
-
output += "# HELP bridge_rssi_dbm WiFi signal strength in dBm\n";
|
|
111
|
-
output += "# TYPE bridge_rssi_dbm gauge\n";
|
|
112
|
-
output += "bridge_rssi_dbm{type=\"current\"} " + String(metrics.currentRSSI) + "\n";
|
|
113
|
-
output += "bridge_rssi_dbm{type=\"average\"} " + String(metrics.avgRSSI) + "\n";
|
|
114
|
-
output += "bridge_rssi_dbm{type=\"min\"} " + String(metrics.minRSSI) + "\n";
|
|
115
|
-
output += "bridge_rssi_dbm{type=\"max\"} " + String(metrics.maxRSSI) + "\n";
|
|
116
|
-
|
|
117
|
-
// Traffic metrics
|
|
118
|
-
output += "# HELP bridge_bytes_total Total bytes transferred\n";
|
|
119
|
-
output += "# TYPE bridge_bytes_total counter\n";
|
|
120
|
-
output += "bridge_bytes_total{direction=\"rx\"} " + String((unsigned long)metrics.bytesRx) + "\n";
|
|
121
|
-
output += "bridge_bytes_total{direction=\"tx\"} " + String((unsigned long)metrics.bytesTx) + "\n";
|
|
122
|
-
|
|
123
|
-
output += "# HELP bridge_messages_total Total messages processed\n";
|
|
124
|
-
output += "# TYPE bridge_messages_total counter\n";
|
|
125
|
-
output += "bridge_messages_total{direction=\"rx\"} " + String(metrics.messagesRx) + "\n";
|
|
126
|
-
output += "bridge_messages_total{direction=\"tx\"} " + String(metrics.messagesTx) + "\n";
|
|
127
|
-
output += "bridge_messages_total{status=\"dropped\"} " + String(metrics.messagesDropped) + "\n";
|
|
128
|
-
|
|
129
|
-
// Performance metrics
|
|
130
|
-
output += "# HELP bridge_latency_ms Average message latency in milliseconds\n";
|
|
131
|
-
output += "# TYPE bridge_latency_ms gauge\n";
|
|
132
|
-
output += "bridge_latency_ms " + String(metrics.avgLatencyMs) + "\n";
|
|
133
|
-
|
|
134
|
-
output += "# HELP bridge_packet_loss_percent Packet loss percentage\n";
|
|
135
|
-
output += "# TYPE bridge_packet_loss_percent gauge\n";
|
|
136
|
-
output += "bridge_packet_loss_percent " + String(metrics.packetLossPercent) + "\n";
|
|
137
|
-
|
|
138
|
-
output += "# HELP bridge_mesh_nodes Total nodes in mesh network\n";
|
|
139
|
-
output += "# TYPE bridge_mesh_nodes gauge\n";
|
|
140
|
-
output += "bridge_mesh_nodes " + String(metrics.meshNodeCount) + "\n";
|
|
141
|
-
|
|
142
|
-
return output;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Manual metrics check task
|
|
147
|
-
* Demonstrates how to manually get metrics on demand
|
|
148
|
-
*/
|
|
149
|
-
Task taskManualMetricsCheck(10000, TASK_FOREVER, [](){
|
|
150
|
-
// Get metrics JSON for logging or transmission
|
|
151
|
-
String json = mesh.getHealthMetricsJSON();
|
|
152
|
-
Serial.println("JSON Metrics: " + json);
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
void setup() {
|
|
156
|
-
Serial.begin(115200);
|
|
157
|
-
|
|
158
|
-
// Mesh initialization
|
|
159
|
-
mesh.setDebugMsgTypes(ERROR | STARTUP | CONNECTION);
|
|
160
|
-
mesh.init(MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT);
|
|
161
|
-
|
|
162
|
-
// Configure as a bridge (root) node
|
|
163
|
-
mesh.setRoot(true);
|
|
164
|
-
mesh.setContainsRoot(true);
|
|
165
|
-
|
|
166
|
-
// Connect to WiFi station for Internet access
|
|
167
|
-
mesh.stationManual(STATION_SSID, STATION_PASSWORD);
|
|
168
|
-
mesh.setHostname("BridgeNode");
|
|
169
|
-
|
|
170
|
-
// Set up periodic health metrics callback (every 60 seconds)
|
|
171
|
-
mesh.onHealthMetricsUpdate(metricsCallback, METRICS_INTERVAL);
|
|
172
|
-
|
|
173
|
-
// Optional: Add manual metrics check task
|
|
174
|
-
// userScheduler.addTask(taskManualMetricsCheck);
|
|
175
|
-
// taskManualMetricsCheck.enable();
|
|
176
|
-
|
|
177
|
-
Serial.println("Bridge with health monitoring started");
|
|
178
|
-
Serial.println("Metrics will be reported every 60 seconds");
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
void loop() {
|
|
182
|
-
mesh.update();
|
|
183
|
-
|
|
184
|
-
// If you have a web server for Prometheus endpoint:
|
|
185
|
-
// server.on("/metrics", HTTP_GET, [](){
|
|
186
|
-
// server.send(200, "text/plain", exportPrometheus());
|
|
187
|
-
// });
|
|
188
|
-
}
|