mirror of
https://github.com/Roslund/sthlm-mesh.git
synced 2026-08-07 01:13:09 +02:00
deploy: 4082158fd0
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
function getHopsColor(maxHops) {
|
||||
switch(maxHops){
|
||||
case 0: return 'rgb(41, 156, 70)';
|
||||
case 1: return 'rgb(41, 156, 70)';
|
||||
case 2: return 'rgb(79, 170, 77)';
|
||||
case 3: return 'rgb(118, 182, 84)';
|
||||
case 4: return 'rgb(157, 195, 91)';
|
||||
case 5: return 'rgb(195, 208, 98)';
|
||||
case 6: return 'rgb(229, 189, 82)';
|
||||
case 7: return 'rgb(242, 161, 67)';
|
||||
}
|
||||
return 'rgb(200, 200, 200)';
|
||||
}
|
||||
|
||||
async function maxHopsGraph() {
|
||||
const canvas = document.getElementById('maxHopsChart');
|
||||
const ctx = canvas.getContext('2d');
|
||||
|
||||
// Loading message
|
||||
ctx.font = '16px Arial';
|
||||
ctx.fillStyle = 'gray';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.fillText('Loading data...', canvas.width / 2, canvas.height / 2);
|
||||
|
||||
try {
|
||||
await fetchNodes();
|
||||
|
||||
// Initialize buckets
|
||||
const countsByHops = {};
|
||||
for (let i = 0; i <= 7; i++) countsByHops[i] = 0;
|
||||
|
||||
const nodesWithMaxHops = nodes.filter(n => n.max_hops !== null && n.max_hops !== undefined);
|
||||
|
||||
for (const node of nodesWithMaxHops) {
|
||||
const val = Number(node.max_hops);
|
||||
countsByHops[val] += 1;
|
||||
}
|
||||
|
||||
const labels = [0, 1, 2, 3, 4, 5, 6, 7];
|
||||
const counts = labels.map(n => countsByHops[n]);
|
||||
const backgroundColors = labels.map(n => getHopsColor(n));
|
||||
|
||||
const chartContainer = document.getElementById('maxHopsContainer');
|
||||
if (chartContainer) chartContainer.style.height = `${labels.length * 35 + 50}px`;
|
||||
|
||||
new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels,
|
||||
datasets: [{
|
||||
label: 'Antal',
|
||||
data: counts,
|
||||
backgroundColor: backgroundColors,
|
||||
}],
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
indexAxis: 'y',
|
||||
scales: {
|
||||
y: { ticks: { autoSkip: false, font: { size: 12 } } },
|
||||
x: { beginAtZero: true },
|
||||
},
|
||||
plugins: { legend: { display: false } },
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error building max_hops chart:', error);
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
ctx.fillStyle = 'red';
|
||||
ctx.fillText('Error loading data', canvas.width / 2, canvas.height / 2);
|
||||
}
|
||||
}
|
||||
|
||||
maxHopsGraph();
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://sthlm-mesh.se/docs/settings/</loc><lastmod>2025-02-26T18:39:36+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/device_role/</loc><lastmod>2025-02-26T18:42:15+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/position/</loc><lastmod>2025-02-22T09:11:26+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/mqtt/</loc><lastmod>2025-03-31T19:16:34+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/neighbor_info/</loc><lastmod>2025-02-23T20:48:06+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/kartor/</loc><lastmod>2025-03-08T20:11:28+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/hardware/</loc><lastmod>2025-04-21T12:00:04+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/solar_nodes/</loc><lastmod>2025-04-21T01:54:22+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/communities/</loc><lastmod>2025-02-23T20:48:06+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/categories/</loc></url><url><loc>https://sthlm-mesh.se/docs/</loc><lastmod>2025-03-03T22:48:04+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/messages/</loc><lastmod>2025-07-13T10:01:31+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/meetups/</loc><lastmod>2025-04-10T07:31:33+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/about/</loc><lastmod>2025-02-23T18:02:23+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/status/</loc><lastmod>2025-08-09T12:20:54+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/</loc><lastmod>2025-06-10T01:31:45+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/tags/</loc></url></urlset>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://sthlm-mesh.se/docs/settings/</loc><lastmod>2025-02-26T18:39:36+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/device_role/</loc><lastmod>2025-02-26T18:42:15+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/position/</loc><lastmod>2025-02-22T09:11:26+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/mqtt/</loc><lastmod>2025-03-31T19:16:34+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/neighbor_info/</loc><lastmod>2025-02-23T20:48:06+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/kartor/</loc><lastmod>2025-03-08T20:11:28+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/hardware/</loc><lastmod>2025-04-21T12:00:04+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/solar_nodes/</loc><lastmod>2025-04-21T01:54:22+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/communities/</loc><lastmod>2025-02-23T20:48:06+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/categories/</loc></url><url><loc>https://sthlm-mesh.se/docs/</loc><lastmod>2025-03-03T22:48:04+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/messages/</loc><lastmod>2025-07-13T10:01:31+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/meetups/</loc><lastmod>2025-04-10T07:31:33+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/about/</loc><lastmod>2025-02-23T18:02:23+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/status/</loc><lastmod>2025-08-10T11:53:58+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/</loc><lastmod>2025-06-10T01:31:45+02:00</lastmod></url><url><loc>https://sthlm-mesh.se/tags/</loc></url></urlset>
|
||||
+4
-4
@@ -7,11 +7,11 @@ Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket
|
||||
– Senaste 7 dagarna
|
||||
– Senaste 30 dagarna
|
||||
Text Meddelanden Antalet meddelanden per timme senaste 7 dygnen. Grafen visar meddelanden som skickats på LongFast kanalen, men även okrypterade meddelanden mellan noder. De meddelanden som skickas går att se här.
|
||||
Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Graferna bygger på MQTT-data från ett begränsat antal noder. Eftersom vi har begränsad bandbredd är det viktigt att hålla nere trafiken. En sändningsvolym på max 100 paket per dygn är önskvärd."><meta property="og:locale" content="sv"><meta property="og:type" content="article"><meta property="article:modified_time" content="2025-08-09T12:20:54+02:00"><meta itemprop=name content="Mesh Status"><meta itemprop=description content="Antal Enheter – Hörts idag
|
||||
Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Graferna bygger på MQTT-data från ett begränsat antal noder. Eftersom vi har begränsad bandbredd är det viktigt att hålla nere trafiken. En sändningsvolym på max 100 paket per dygn är önskvärd."><meta property="og:locale" content="sv"><meta property="og:type" content="article"><meta property="article:modified_time" content="2025-08-10T11:53:58+02:00"><meta itemprop=name content="Mesh Status"><meta itemprop=description content="Antal Enheter – Hörts idag
|
||||
– Senaste 7 dagarna
|
||||
– Senaste 30 dagarna
|
||||
Text Meddelanden Antalet meddelanden per timme senaste 7 dygnen. Grafen visar meddelanden som skickats på LongFast kanalen, men även okrypterade meddelanden mellan noder. De meddelanden som skickas går att se här.
|
||||
Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Graferna bygger på MQTT-data från ett begränsat antal noder. Eftersom vi har begränsad bandbredd är det viktigt att hålla nere trafiken. En sändningsvolym på max 100 paket per dygn är önskvärd."><meta itemprop=dateModified content="2025-08-09T12:20:54+02:00"><meta itemprop=wordCount content="547"><meta name=twitter:card content="summary"><meta name=twitter:title content="Mesh Status"><meta name=twitter:description content="Antal Enheter – Hörts idag
|
||||
Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Graferna bygger på MQTT-data från ett begränsat antal noder. Eftersom vi har begränsad bandbredd är det viktigt att hålla nere trafiken. En sändningsvolym på max 100 paket per dygn är önskvärd."><meta itemprop=dateModified content="2025-08-10T11:53:58+02:00"><meta itemprop=wordCount content="597"><meta name=twitter:card content="summary"><meta name=twitter:title content="Mesh Status"><meta name=twitter:description content="Antal Enheter – Hörts idag
|
||||
– Senaste 7 dagarna
|
||||
– Senaste 30 dagarna
|
||||
Text Meddelanden Antalet meddelanden per timme senaste 7 dygnen. Grafen visar meddelanden som skickats på LongFast kanalen, men även okrypterade meddelanden mellan noder. De meddelanden som skickas går att se här.
|
||||
@@ -20,7 +20,7 @@ Graferna bygger på MQTT-data från ett begränsat antal noder.
|
||||
Eftersom vi har begränsad bandbredd är det viktigt att hålla nere trafiken. En sändningsvolym på max 100 paket per dygn är önskvärd.</p><div id=mostActiveNodesContainer class=stats-chart-container><canvas id=mostActiveNodes></canvas></div><h2 id=packet-typer>Packet typer<a class=td-heading-self-link href=#packet-typer aria-label="Heading self-link"></a></h2><p>Fördelningen av olika pakettyper i nätverket under de senaste dygnet. Diagrammet visar hur nätverket används, inklusive meddelanden, positionstelemetri och andra systempaket. Sökrutan till höger kan användas för att visa antalet paket av respektive typ för en given nod.</p><div class="d-flex justify-content-end m-0 p-0" style=max-width:1000px><div class=dropdown style=width:40%;min-width:300px><div class="input-group pe-3"><input id=nodeSearch type=text class=form-control placeholder="Node Name" autocomplete=off>
|
||||
<button id=clearFilterBtn class="btn btn-outline-info" type=button>✕</button></div><ul id=suggestions class="dropdown-menu w-100" style=display:none;max-height:300px;overflow-y:auto;position:absolute;z-index:1000></ul></div></div><div id=portnumDistributionContainer class=stats-chart-container><canvas id=portnumDistribution></canvas></div><h2 id=enhetsroll>Enhetsroll<a class=td-heading-self-link href=#enhetsroll aria-label="Heading self-link"></a></h2><p>Antalet enheter av respektive Enhetsroll som synts i meshet de senaste 30 dagarna. I större mesh så som Stockholm bör i princip all noder vara <code>Client</code> eller <code>Client Mute</code>. Enbart ett fåtal <code>Router</code> eller <code>Repeater</code> behövs. Dessa måste vara placerade extremt strategiskt, till exempel högst upp i en skidbacke. <code>Router Client</code> är en avvecklad roll som inte finns längre, men i meshen lever det kvar några noder som inte blivit uppdaterade. För mer info see vår <a href=https://sthlm-mesh.se/docs/device_role/>dokumentation</a>.</p><div id=deviceRolesContainer class=stats-chart-container><canvas id=deviceRoles></canvas></div><h2 id=position-precision>Position Precision<a class=td-heading-self-link href=#position-precision aria-label="Heading self-link"></a></h2><p>Grafen visar position precision, eller noggrannhet, på de noder som rapporterat sin position de senaste 30 dagarna.
|
||||
Vi ser gärna att man använder en noggrannhet på ±182m eller noggrannare. Detta är dock inte möjligt att ställa in i iPhone Appen.
|
||||
För mer info se vår <a href=https://sthlm-mesh.se/docs/position/#position-precision>dokumentation</a>.</p><div id=positionPrecisionContainer class=stats-chart-container><canvas id=positionPrecisionChart></canvas></div><h2 id=firmware-versioner>Firmware versioner<a class=td-heading-self-link href=#firmware-versioner aria-label="Heading self-link"></a></h2><p>Antalet enheter av firmware version som synts i meshet de senaste 30 dagarna. Information om firmware information skickas inte över meshet. Men det går att härleda till viss del utifrån vilken information de paket som skickas innehåller.</p><div id=firmwareVersionContainer class=stats-chart-container><canvas id=firmwareVersionChart></canvas></div><h2 id=unmessagable>Unmessagable<a class=td-heading-self-link href=#unmessagable aria-label="Heading self-link"></a></h2><p>Visar antalet noder som är markerade som “unmessagable” respektive “messagable” baserat på de senaste 30 dagarnas aktivitet. Inställningen “unmessagable” används för att identifiera oövervakade infrastrukturnoder så att meddelanden inte skickas till noder som aldrig kommer att svara. Noder som inte har denna inställning definierad räknas som “messagable” eftersom denna egenskap infördes i version 2.6.8.</p><div id=isUnmessagableContainer class=stats-chart-container><canvas id=isUnmessagableChart></canvas></div><h2 id=ok-to-mqtt>OK to MQTT<a class=td-heading-self-link href=#ok-to-mqtt aria-label="Heading self-link"></a></h2><p>Visar antalet noder som har “ok_to_mqtt” aktiverad eller avstängd under de senaste 30 dagarna. Flaggan är en begäran om att paket inte ska vidarebefordras till MQTT-servrar och karttjänster som sthlm-mesh. Begäran behöver dock inte respekteras. För att undvika exponering på karttjänster bör man använda krypterade kanaler istället för att dela information publikt.
|
||||
Äldre firmware skickar inte denna flagga och behandlas som falskt värde.</p><div id=isOkToMqttContainer class=stats-chart-container><canvas id=isOkToMqttChart></canvas></div><h2 id=batteri>Batteri<a class=td-heading-self-link href=#batteri aria-label="Heading self-link"></a></h2><p>Visar genomsnittlig batterinivå av de noder som rapporterat batteri nivå och inte har fast strömförsörjning.</p><div id=batteryContainer class=stats-chart-container style=min-height:300px><canvas id=batteryChart></canvas></div><h2 id=channel-utilization>Channel Utilization<a class=td-heading-self-link href=#channel-utilization aria-label="Heading self-link"></a></h2><p>Visar den genomsnittliga Channel Utilization, det vill säga hur mycket radiofrekvensen används, baserat på rapporter från enheter i meshen. Eftersom enheter inte skickar telemetri när kanalutnyttjandet är högt kan siffran bli missvisande. Detsamma gäller för portabla enheter eller enheter som är placerade inomhus. Förhoppningsvis ger grafen ändå ett värdefullt underlag för att förstå hur meshen mår.</p><div id=channelUtilizationContainer class=stats-chart-container style=min-height:300px><canvas id=channelUtilizationChart></canvas></div><h2 id=hårdvarumodeller>Hårdvarumodeller<a class=td-heading-self-link href=#h%c3%a5rdvarumodeller aria-label="Heading self-link"></a></h2><p>Antalet enheter av respektive hårdvarutyp som synts i meshet de senaste 30 dagarna.</p><div id=hardwareChartContainer class=stats-chart-container><canvas id=hardwareChart></canvas></div></div></div></section><div><a id=td-block-1 class=td-offset-anchor></a></div><section class="row td-box td-box--info td-box--height-auto"><div class=col><div class=container><h2 id=om>OM<a class=td-heading-self-link href=#om aria-label="Heading self-link"></a></h2><p>Graferna baseras på data från <a href=https://map.sthlm-mesh.se>map.sthlm-mesh.se</a>, där data samlas in från ett par noder i Stockholmsområdet. Data hämtas från API’t, som vi dessutom har utökat med fler funktioner för att möjliggöra mer analys. Visualisering sker genom biblioteket <a href=https://www.chartjs.org/>chartjs.org</a>.</p></div></div></section><script src=https://cdn.jsdelivr.net/npm/chart.js></script><script src=https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation></script><script src=https://cdn.jsdelivr.net/npm/luxon></script><script src=https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon></script><script src=/js/status/shared.js></script><script src=/js/status/messagesChart.js></script><script src=/js/status/most-active-nodes.js></script><script src=/js/status/hardwareChart.js></script><script src=/js/status/position-precision-chart.js></script><script src=/js/status/portnum-distribution-chart.js></script><script src=/js/status/device-roles.js></script><script src=/js/status/nodes-seen.js></script><script src=/js/status/firmware-versions.js></script><script src=/js/status/battery-stats.js></script><script src=/js/status/channel-utilization.js></script><script src=/js/status/is-unmessagable-chart.js></script><script src=/js/status/is-ok-to-mqtt-chart.js></script></main><footer class="td-footer row d-print-none"><div class=container-fluid><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1"></div><div class="td-footer__right col-6 col-sm-4 order-sm-3"></div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><span class=td-footer__copyright>©
|
||||
För mer info se vår <a href=https://sthlm-mesh.se/docs/position/#position-precision>dokumentation</a>.</p><div id=positionPrecisionContainer class=stats-chart-container><canvas id=positionPrecisionChart></canvas></div><h2 id=firmware-versioner>Firmware versioner<a class=td-heading-self-link href=#firmware-versioner aria-label="Heading self-link"></a></h2><p>Antalet enheter av firmware version som synts i meshet de senaste 30 dagarna. Information om firmware information skickas inte över meshet. Men det går att härleda till viss del utifrån vilken information de paket som skickas innehåller.</p><div id=firmwareVersionContainer class=stats-chart-container><canvas id=firmwareVersionChart></canvas></div><h2 id=max-antal-hopp>Max antal hopp<a class=td-heading-self-link href=#max-antal-hopp aria-label="Heading self-link"></a></h2><p>Visar fördelningen av konfigurerade max-hopp för noder som synts de senaste 30 dagarna. För att värna om meshens stabilitet bör man använda ett så lågt antal max hops som möjlig. Används traceroute funktionen för att se hur många hops det krävs för dig att nå olika noder.</p><div id=maxHopsContainer class=stats-chart-container><canvas id=maxHopsChart></canvas></div><h2 id=unmessagable>Unmessagable<a class=td-heading-self-link href=#unmessagable aria-label="Heading self-link"></a></h2><p>Visar antalet noder som är markerade som “unmessagable” respektive “messagable” baserat på de senaste 30 dagarnas aktivitet. Inställningen “unmessagable” används för att identifiera oövervakade infrastrukturnoder så att meddelanden inte skickas till noder som aldrig kommer att svara. Noder som inte har denna inställning definierad räknas som “messagable” eftersom denna egenskap infördes i version 2.6.8.</p><div id=isUnmessagableContainer class=stats-chart-container><canvas id=isUnmessagableChart></canvas></div><h2 id=ok-to-mqtt>OK to MQTT<a class=td-heading-self-link href=#ok-to-mqtt aria-label="Heading self-link"></a></h2><p>Visar antalet noder som har “ok_to_mqtt” aktiverad eller avstängd under de senaste 30 dagarna. Flaggan är en begäran om att paket inte ska vidarebefordras till MQTT-servrar och karttjänster som sthlm-mesh. Begäran behöver dock inte respekteras. För att undvika exponering på karttjänster bör man använda krypterade kanaler istället för att dela information publikt.
|
||||
Äldre firmware skickar inte denna flagga och behandlas som falskt värde.</p><div id=isOkToMqttContainer class=stats-chart-container><canvas id=isOkToMqttChart></canvas></div><h2 id=batteri>Batteri<a class=td-heading-self-link href=#batteri aria-label="Heading self-link"></a></h2><p>Visar genomsnittlig batterinivå av de noder som rapporterat batteri nivå och inte har fast strömförsörjning.</p><div id=batteryContainer class=stats-chart-container style=min-height:300px><canvas id=batteryChart></canvas></div><h2 id=channel-utilization>Channel Utilization<a class=td-heading-self-link href=#channel-utilization aria-label="Heading self-link"></a></h2><p>Visar den genomsnittliga Channel Utilization, det vill säga hur mycket radiofrekvensen används, baserat på rapporter från enheter i meshen. Eftersom enheter inte skickar telemetri när kanalutnyttjandet är högt kan siffran bli missvisande. Detsamma gäller för portabla enheter eller enheter som är placerade inomhus. Förhoppningsvis ger grafen ändå ett värdefullt underlag för att förstå hur meshen mår.</p><div id=channelUtilizationContainer class=stats-chart-container style=min-height:300px><canvas id=channelUtilizationChart></canvas></div><h2 id=hårdvarumodeller>Hårdvarumodeller<a class=td-heading-self-link href=#h%c3%a5rdvarumodeller aria-label="Heading self-link"></a></h2><p>Antalet enheter av respektive hårdvarutyp som synts i meshet de senaste 30 dagarna.</p><div id=hardwareChartContainer class=stats-chart-container><canvas id=hardwareChart></canvas></div></div></div></section><div><a id=td-block-1 class=td-offset-anchor></a></div><section class="row td-box td-box--info td-box--height-auto"><div class=col><div class=container><h2 id=om>OM<a class=td-heading-self-link href=#om aria-label="Heading self-link"></a></h2><p>Graferna baseras på data från <a href=https://map.sthlm-mesh.se>map.sthlm-mesh.se</a>, där data samlas in från ett par noder i Stockholmsområdet. Data hämtas från API’t, som vi dessutom har utökat med fler funktioner för att möjliggöra mer analys. Visualisering sker genom biblioteket <a href=https://www.chartjs.org/>chartjs.org</a>.</p></div></div></section><script src=https://cdn.jsdelivr.net/npm/chart.js></script><script src=https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation></script><script src=https://cdn.jsdelivr.net/npm/luxon></script><script src=https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon></script><script src=/js/status/shared.js></script><script src=/js/status/messagesChart.js></script><script src=/js/status/most-active-nodes.js></script><script src=/js/status/hardwareChart.js></script><script src=/js/status/position-precision-chart.js></script><script src=/js/status/portnum-distribution-chart.js></script><script src=/js/status/device-roles.js></script><script src=/js/status/nodes-seen.js></script><script src=/js/status/firmware-versions.js></script><script src=/js/status/battery-stats.js></script><script src=/js/status/channel-utilization.js></script><script src=/js/status/is-unmessagable-chart.js></script><script src=/js/status/is-ok-to-mqtt-chart.js></script><script src=/js/status/max-hops-chart.js></script></main><footer class="td-footer row d-print-none"><div class=container-fluid><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1"></div><div class="td-footer__right col-6 col-sm-4 order-sm-3"></div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><span class=td-footer__copyright>©
|
||||
2025–2025
|
||||
<span class=td-footer__authors>STHLM-MESH Authors | <a href=https://creativecommons.org/licenses/by/4.0>CC BY 4.0</a> |</span></span><span class=td-footer__all_rights_reserved>Alla rättigheter förbehållna</span><span class=ms-2><a href=https://policies.google.com/privacy target=_blank rel=noopener>Integritetspolicy</a></span></div></div></div></footer></div><script src=/js/main.min.7759f7107045cd01303fdfbe5620c99ad1a8a8a09e0938b93e036ca546ea64ec.js integrity="sha256-d1n3EHBFzQEwP9++ViDJmtGoqKCeCTi5PgNspUbqZOw=" crossorigin=anonymous></script><script defer src=/js/click-to-copy.min.73478a7d4807698aed7e355eb23f9890ca18fea3158604c8471746d046702bad.js integrity="sha256-c0eKfUgHaYrtfjVesj+YkMoY/qMVhgTIRxdG0EZwK60=" crossorigin=anonymous></script><script src=/js/tabpane-persist.js></script></body></html>
|
||||
Reference in New Issue
Block a user