diff --git a/js/status/channel-utilization.js b/js/status/channel-utilization.js new file mode 100644 index 0000000..1d43657 --- /dev/null +++ b/js/status/channel-utilization.js @@ -0,0 +1,87 @@ +async function channelUtilizationHourlyAverage() { + const canvas = document.getElementById('channelUtilizationChart'); + const ctx = canvas.getContext('2d'); + + // show loading + ctx.font = '16px Arial'; + ctx.fillStyle = 'gray'; + ctx.textAlign = 'center'; + ctx.fillText('Loading...', canvas.width/2, canvas.height/2); + + try { + const response = await fetch('https://map.sthlm-mesh.se/api/v1/stats/channel-utilization-stats?days=7'); + const data = await response.json(); + + const labels = data.map(entry => entry.recorded_at); + const values = data.map(entry => parseFloat(entry.avg_channel_utilization)); + + new Chart(ctx, { + type: 'line', + data: { + labels: labels, + datasets: [{ + label: 'Hourly Avg Channel Utilization', + data: values, + borderColor: 'rgb(15, 169, 252)', + borderWidth: 2, + tension: 0.1, + pointRadius: 0, + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + x: { + type: 'time', + time: { + unit: 'day', + tooltipFormat: 'yyyy-MM-dd HH:mm', + displayFormats: { day: 'yyyy-MM-dd' } + }, + }, + y: { + min: 11, + max: 14, + title: { display: true, text: 'Avg. Channel Utilization (%)' } + } + }, + plugins: { + legend: { display: false }, + tooltip: { mode: 'index', intersect: false }, + annotation: { + annotations: { + bad: { + type: 'box', + yMin: 13, + yMax: 15, + backgroundColor: 'rgba(255, 0, 0, 0.2)' + }, + medium: { + type: 'box', + yMin: 12, + yMax: 13, + backgroundColor: 'rgba(234, 184, 57, 0.2)', //'rgba(255, 165, 0, 0.1)' + }, + good: { + type: 'box', + yMin: 0, + yMax: 12, + backgroundColor: 'rgba(1, 163, 23, 0.1)', //'rgba(0, 128, 0, 0.1)' + } + } + } + } + } + }); + + } catch (err) { + console.error('Error loading channel utilization:', err); + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = 'red'; + ctx.fillText('Error loading data', canvas.width/2, canvas.height/2); + } + +} + +channelUtilizationHourlyAverage(); \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 72199f1..0515b7f 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://sthlm-mesh.se/docs/settings/2025-02-26T18:39:36+01:00https://sthlm-mesh.se/docs/device_role/2025-02-26T18:42:15+01:00https://sthlm-mesh.se/docs/position/2025-02-22T09:11:26+01:00https://sthlm-mesh.se/docs/mqtt/2025-03-31T19:16:34+02:00https://sthlm-mesh.se/docs/neighbor_info/2025-02-23T20:48:06+01:00https://sthlm-mesh.se/docs/kartor/2025-03-08T20:11:28+01:00https://sthlm-mesh.se/docs/hardware/2025-04-21T12:00:04+02:00https://sthlm-mesh.se/docs/solar_nodes/2025-04-21T01:54:22+02:00https://sthlm-mesh.se/docs/communities/2025-02-23T20:48:06+01:00https://sthlm-mesh.se/categories/https://sthlm-mesh.se/docs/2025-03-03T22:48:04+01:00https://sthlm-mesh.se/messages/2025-04-10T17:24:25+02:00https://sthlm-mesh.se/meetups/2025-04-10T07:31:33+02:00https://sthlm-mesh.se/about/2025-02-23T18:02:23+01:00https://sthlm-mesh.se/status/2025-04-20T10:38:57+02:00https://sthlm-mesh.se/2025-04-24T22:42:52+02:00https://sthlm-mesh.se/tags/ \ No newline at end of file +https://sthlm-mesh.se/docs/settings/2025-02-26T18:39:36+01:00https://sthlm-mesh.se/docs/device_role/2025-02-26T18:42:15+01:00https://sthlm-mesh.se/docs/position/2025-02-22T09:11:26+01:00https://sthlm-mesh.se/docs/mqtt/2025-03-31T19:16:34+02:00https://sthlm-mesh.se/docs/neighbor_info/2025-02-23T20:48:06+01:00https://sthlm-mesh.se/docs/kartor/2025-03-08T20:11:28+01:00https://sthlm-mesh.se/docs/hardware/2025-04-21T12:00:04+02:00https://sthlm-mesh.se/docs/solar_nodes/2025-04-21T01:54:22+02:00https://sthlm-mesh.se/docs/communities/2025-02-23T20:48:06+01:00https://sthlm-mesh.se/categories/https://sthlm-mesh.se/docs/2025-03-03T22:48:04+01:00https://sthlm-mesh.se/messages/2025-04-10T17:24:25+02:00https://sthlm-mesh.se/meetups/2025-04-10T07:31:33+02:00https://sthlm-mesh.se/about/2025-02-23T18:02:23+01:00https://sthlm-mesh.se/status/2025-04-21T22:26:27+02:00https://sthlm-mesh.se/2025-04-24T22:42:52+02:00https://sthlm-mesh.se/tags/ \ No newline at end of file diff --git a/status/index.html b/status/index.html index ea7a939..f5d7447 100644 --- a/status/index.html +++ b/status/index.html @@ -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.">

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.

Enhetsroll

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 Client eller Client Mute. Enbart ett fåtal Router eller Repeater behövs. Dessa måste vara placerade extremt strategiskt, till exempel högst upp i en skidbacke. Router Client är en avvecklad roll som inte finns längre, men i meshen lever det kvar några noder som inte blivit uppdaterade. För med info see vår dokumentation.

Position Precision

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 dokumentation.

Firmware versioner

Antalet enheter av firmware version som synts i meshet de senaste 30 dagarna. Information om firmware information skickas inte över meshet. Men vi kan se om en enhet kör en gammal firmware version genom att kolla efter “ok_to_mqtt” bitten som infördes i 2.5.0.9ac0e26.

Batteri

Visar genomsnittlig batterinivå av de noder som rapporterat batteri nivå och inte har fast strömförsörjning.

Hårdvarumodeller

Antalet enheter av respektive hårdvarutyp som synts i meshet de senaste 30 dagarna.

OM

Graferna baseras på data från map.sthlm-mesh.se, 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 chartjs.org.