{% extends "base.html" %} {% block css %} .reach-page { max-width: 1200px; margin: 0 auto; padding: 0 16px; } .reach-header { margin-bottom: 10px; } .reach-header h1 { font-size: 1.35rem; margin-bottom: 2px; } .reach-panel { border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 8px; padding: 12px; background: rgba(255, 255, 255, 0.04); } .reach-controls { display: flex; gap: 8px; margin-top: 8px; } .reach-search { min-width: 0; flex: 0 1 420px; } .reach-search-label, .reach-limit-label { align-self: center; white-space: nowrap; color: rgba(255, 255, 255, 0.72); font-size: 0.9rem; } .reach-limit-label { margin-left: auto; } .reach-node-link { align-self: center; white-space: nowrap; } @media (max-width: 600px) { .reach-controls { flex-direction: column; } } .reach-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin-top: 10px; } .reach-metric { border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; padding: 8px 10px; background: rgba(0, 0, 0, 0.18); } .reach-metric-value { font-size: 1.2rem; line-height: 1.2; } .reach-table-wrap { overflow-x: auto; margin-top: 10px; } .reach-table { width: 100%; min-width: 760px; font-size: 0.9rem; } .reach-map { width: 100%; height: 520px; margin-top: 10px; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 8px; overflow: hidden; background: rgba(0, 0, 0, 0.18); } .reach-map-marker { width: 34px; height: 34px; border: 2px solid #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 0.65rem; font-weight: 800; line-height: 1; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45); } .reach-map-marker-source { background: #111827; font-size: 0.95rem; } .reach-gateway-panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 10px; } .reach-gateway-panel { overflow-x: auto; } .reach-gateway-table { min-width: 0; } .reach-table th, .reach-table td { vertical-align: top; padding: 0.35rem 0.5rem; } .reach-count-bar-cell { min-width: 180px; } .reach-count-bar-track { position: relative; height: 20px; border-radius: 999px; background: rgba(255, 255, 255, 0.12); overflow: hidden; } .reach-count-bar-fill { height: 100%; min-width: 24px; border-radius: inherit; background: var(--reach-bar-color, #4ade80); } .reach-count-bar-value { position: absolute; inset: 0; display: flex; align-items: center; justify-content: flex-start; padding-left: 8px; font-family: monospace; font-size: 0.85rem; color: #fff; font-weight: 700; } .reach-muted { color: rgba(255, 255, 255, 0.62); } .reach-heard-link { padding: 0; border: 0; background: transparent; color: #8ab4f8; text-decoration: underline; cursor: pointer; } .port-tag { display: inline-block; padding: 1px 6px; border-radius: 6px; font-size: 0.75rem; font-weight: 500; color: #fff; } .reliability-modal { display: none; position: fixed; inset: 0; z-index: 5000; align-items: center; justify-content: center; padding: 16px; background: rgba(0, 0, 0, 0.72); } .reliability-modal.open { display: flex; } .reliability-modal-panel { width: min(760px, 100%); max-height: min(720px, 92vh); overflow: auto; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 8px; background: #111827; padding: 12px; box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5); } .reliability-modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .reliability-modal-title { font-size: 1rem; font-weight: 600; } .reliability-status-heard { color: #4ade80 !important; font-weight: 700; } .reliability-status-missed { color: #f87171 !important; font-weight: 700; } .reliability-status-skipped { color: #cbd5e1 !important; font-weight: 700; } .reliability-row-skipped td { text-decoration: line-through; text-decoration-thickness: 1px; color: rgba(255, 255, 255, 0.58) !important; } @media (max-width: 600px) { .reach-gateway-panels { grid-template-columns: 1fr; } } {% endblock %} {% block body %}

Reliability

Review how often each gateway hears packets from a selected node. The report uses the latest selected packet sample and calculates reliability as heard packets divided by packets reviewed. The range table groups gateways by reliability bands, while the gateway list shows each gateway's heard count and percentage for the same sample. Reliability is calculated only from Text, Position, Node Info, and Telemetry packets; other packet types are shown in packet details but skipped from the calculation.

Back to Node
Reliability Bands Gateway Count
Loading statistics...
Latest Packets
...
Unique Gateways
...
Gateway Heard Avg Hops Reliability
Loading packets...
Gateway Heard Avg Hops Reliability
Loading packets...
{% endblock %}