From 3dd3a3548b64b3f2f3a06407403f7e589dfce283 Mon Sep 17 00:00:00 2001 From: Kalle <15094562+ThatKalle@users.noreply.github.com> Date: Fri, 7 Mar 2025 12:07:36 +0000 Subject: [PATCH 01/13] =?UTF-8?q?fix=20senast=20=C3=A4ndrad=20av?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/scss/_styles_project.scss | 6 ------ layouts/partials/page-meta-lastmod.html | 5 +++++ 2 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 layouts/partials/page-meta-lastmod.html diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 07e0079..584ef89 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -18,12 +18,6 @@ Might want to allow editing /* Change the color of the doc rightside sidebar links */ .td-sidebar-toc a { color: grey !important; } -/* -Hide links to the last change commit. -Ugly workaround that leves to colon ":" -*/ -.td-page-meta__lastmod a { display: none; } - /* Formating of inline blocks */ code { background-color: #f0f0f0; diff --git a/layouts/partials/page-meta-lastmod.html b/layouts/partials/page-meta-lastmod.html new file mode 100644 index 0000000..381c9f1 --- /dev/null +++ b/layouts/partials/page-meta-lastmod.html @@ -0,0 +1,5 @@ +{{ if and .GitInfo .Site.Params.github_repo -}} +
+ {{ T "post_last_mod" }} {{ .Lastmod.Format .Site.Params.time_format_default -}} +
+{{ end -}} \ No newline at end of file From b8db2baf020fc94936159493b5b678958962e9fe Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Fri, 7 Mar 2025 16:26:19 +0100 Subject: [PATCH 02/13] Change order, due to problems with caching --- content/sv/status/index.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/content/sv/status/index.md b/content/sv/status/index.md index 1bdc992..c02269d 100644 --- a/content/sv/status/index.md +++ b/content/sv/status/index.md @@ -9,6 +9,18 @@ Grafer och statistik specifikt för Stockholm's meshen. {{% /blocks/cover %}} {{% blocks/section color="white" %}} +## Skapade paket per nod +Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Vidarebefordrade meddelanden och krypterade paket är inte medräknade. +Datat i grafen är endast en uppskattning och bör inte ses som exakt. 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 50–100 paket per dygn är önskvärd. +{{< lazy-img max-width="800px" aspect-ratio="1/1" +src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=1&theme=light&panelId=7&width=1000&height=1000&scale=1" >}} + +## Packet typer +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. +{{< lazy-img max-width="774px" aspect-ratio="774/387" +src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=1&theme=light&panelId=6&width=1000&height=500&scale=1" >}} + ## Kanalutnyttjande Den genomsnittliga kanalutnyttjandet i Stockholm under de senaste 7 dygnen. Observera att många noder slutar skicka telemetri vid hög belastning (över 25 %), vilket kan påverka grafens noggrannhet. Trots detta ger gränsvärdena i grafen en god indikation på nätverkets hälsa över tid. @@ -21,25 +33,12 @@ Antalet meddelande per timme senaste 7 dygnen. {{< lazy-img max-width="774px" aspect-ratio="774/387" src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=&from=now-7d&to=now&theme=light&panelId=4&width=1000&height=500&scale=1&tz=Europe%2FStockholm" >}} - ## Batteri Visar den genomsnittliga batteri-nivån i meshet senaste 7 dygnen. Grafen försöker exkludera noder som är inkopplade till en strömkälla och som således inte går på batteri. {{< lazy-img max-width="774px" aspect-ratio="774/387" src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=1&from=now-7d&to=now&theme=light&panelId=2&width=1000&height=500&scale=1&tz=Europe%2FStockholm" >}} -## Packet typer -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. -{{< lazy-img max-width="774px" aspect-ratio="774/387" -src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=1&theme=light&panelId=6&width=1000&height=500&scale=1" >}} - -## Skapade paket per nod -Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Vidarebefordrade meddelanden och krypterade paket är inte medräknade. -Datat i grafen är endast en uppskattning och bör inte ses som exakt. 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 50–100 paket per dygn är önskvärd. -{{< lazy-img max-width="800px" aspect-ratio="1/1" -src="https://dash.roslund.cloud/render/d-solo/aedo2cbpvy800a/sthlm-mesh?orgId=1&theme=light&panelId=7&width=1000&height=1000&scale=1" >}} - {{% /blocks/section %}} {{% blocks/section color=info %}} From 78c886d924627906146432be79e993f465503e23 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Fri, 7 Mar 2025 18:13:31 +0100 Subject: [PATCH 03/13] Update landingpage --- content/sv/_index.md | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/content/sv/_index.md b/content/sv/_index.md index b297ab7..bd7ed35 100644 --- a/content/sv/_index.md +++ b/content/sv/_index.md @@ -42,15 +42,28 @@ Det är alltid trevligt att träffas och prata radio. Kolla in våra [Meetups]({ *

Främja aktivitet i meshet.

{{% /blocks/section %}} -{{% blocks/section color="primary" %}} + +{{% blocks/lead color="meshtastic-green" %}} Kom igång med Meshtastic {.h1} För att komma igång rekommenderar vi att följa instruktionerna på den officiella hemsidan: https://meshtastic.org. +{{% /blocks/lead %}} +{{% blocks/section type="row" color="info" %}} +{{% blocks/feature icon="fa-walkie-talkie" title="Införskaffa enhet" %}} +Det finns enheter för olika frekvensband, i Sverige och inom EU är det **868Mhz** som används. Några populära enheter: +WisMesh Pocket, seed studio T1000-E, LILYGO T-Deck Plus, Heltec LoRa 32, LILYGO® T-Beam. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa-microchip" title="Flasha firmware" %}} +När du fått din enhet behöver Meshtastic programvaran laddas på. Detta görs enklast via en dator: http://flasher.meshtastic.org/ +{{% /blocks/feature %}} + +{{% blocks/feature icon="fab fa-app-store-ios" title="Konfigurera med appen" %}} +För att konfigurera din en rekommenderas de officiella apparna för [iOS](https://apple.co/3Auysep) eller [Android](https://play.google.com/store/apps/details?id=com.geeksville.mesh&pli=1). +I Stockholm använder vi oss av kanal-preset: **Long Range Fast**. Vidare har vi en sida för [rekommenderade inställningar]({{}}). +{{% /blocks/feature %}} -{{% alert title="Viktigt" color="success" %}} -Vi använder oss av 868mhz på preset Long Range - Fast. -{{% /alert %}} {{% /blocks/section %}} @@ -70,11 +83,11 @@ Vi använder oss av 868mhz på preset Long Range - Fast.
-

ROUTER

- ... +

Client Mute

+ ...
-

En nod placerad högt upp med fri sikt åt alla håll. Använder en optimerad och väl-testad setup. Måste koordineras med övriga meshet.

- Läs mer +

För portabla noder eller noder som används inomhus. Notera: En nod inställd på Client Mute kan fortfarande skicka och ta emot meddelanden.

+ Läs mer

@@ -90,11 +103,11 @@ Vi använder oss av 868mhz på preset Long Range - Fast.
-

Client Mute

- ... +

ROUTER

+ ...
-

För portabla noder eller noder som används inomhus. Notera: En nod inställd på Client Mute kan fortfarande skicka och ta emot meddelanden.

- Läs mer +

En nod placerad högt upp med fri sikt åt alla håll. Använder en optimerad och väl-testad setup. Måste koordineras med övriga meshet.

+ Läs mer

From 856d803c46b62e5018841f01bb9c548bec7efe57 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Fri, 7 Mar 2025 21:48:42 +0100 Subject: [PATCH 04/13] Add messages tab --- content/sv/messages/index.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 content/sv/messages/index.md diff --git a/content/sv/messages/index.md b/content/sv/messages/index.md new file mode 100644 index 0000000..1845188 --- /dev/null +++ b/content/sv/messages/index.md @@ -0,0 +1,10 @@ +--- +title: Meddelanden +linkTitle: Meddelanden +menu: {main: {weight: 50}} +--- +
+{{% blocks/section color="white" %}} +## Senaste meddelanden +{{% iframe src="https://map.sthlm-mesh.se/api/v1/text-messages/embed?gateway_id=3663385928" width="100%" style="min-height:65vh;overflow: hidden;" %}} +{{% /blocks/section %}} \ No newline at end of file From 938ec05ccd3f929e8d4ddd0dbe4996e9b4b857b3 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 8 Mar 2025 20:11:28 +0100 Subject: [PATCH 05/13] Fix broken link --- content/sv/docs/kartor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/sv/docs/kartor.md b/content/sv/docs/kartor.md index 3e8f0fa..da32b3d 100644 --- a/content/sv/docs/kartor.md +++ b/content/sv/docs/kartor.md @@ -5,7 +5,7 @@ weight: 80 Det finns massvis med olika karttjänster, vi rekommenderar Liam Cottles karta: https://meshtastic.liamcottle.net/ - + {{% alert title="Uppmärksamma" color="warning" %}} För att tillåta andra noder publicera din nod på kartan behöver `lora.config_ok_to_mqtt` vara aktiverat. From 3c415385ffc6ab5c6e3d97e57678e69b2f1572c1 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 8 Mar 2025 22:32:18 +0100 Subject: [PATCH 06/13] Add alert for fucked status --- content/sv/status/index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/content/sv/status/index.md b/content/sv/status/index.md index c02269d..e1eb006 100644 --- a/content/sv/status/index.md +++ b/content/sv/status/index.md @@ -9,6 +9,11 @@ Grafer och statistik specifikt för Stockholm's meshen. {{% /blocks/cover %}} {{% blocks/section color="white" %}} + +{{% alert title="Uppmärksamma" color="warning" %}} +Vi hade problem med datainsamlingen den 8/3 vilket påverkar graferna och statistiken. +{{% /alert %}} + ## Skapade paket per nod Grafen nedan visar vilka noder som har skickat flest paket under det senaste dygnet. Vidarebefordrade meddelanden och krypterade paket är inte medräknade. Datat i grafen är endast en uppskattning och bör inte ses som exakt. Graferna bygger på MQTT-data från ett begränsat antal noder. From fab668ca89c04c5eb7c047a81082675dcca5ea3f Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sun, 9 Mar 2025 10:51:23 +0100 Subject: [PATCH 07/13] Open map in same tab --- hugo.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/hugo.yaml b/hugo.yaml index 3db65ec..1b86f3b 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -58,8 +58,6 @@ menu: - name: "Map" url: "https://map.sthlm-mesh.se/?lat=59.34338409949693&lng=378.0628967285156&zoom=10" weight: 80 - params: - target: "_blank" # Everything below this are Site Params params: From 9ff4e115511fd30631d6f431867a4ee291d15d83 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sun, 9 Mar 2025 16:16:44 +0100 Subject: [PATCH 08/13] Update landing page --- content/sv/_index.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/content/sv/_index.md b/content/sv/_index.md index bd7ed35..ae1a1b5 100644 --- a/content/sv/_index.md +++ b/content/sv/_index.md @@ -52,16 +52,21 @@ För att komma igång rekommenderar vi att följa instruktionerna på den offici {{% blocks/section type="row" color="info" %}} {{% blocks/feature icon="fa-walkie-talkie" title="Införskaffa enhet" %}} Det finns enheter för olika frekvensband, i Sverige och inom EU är det **868Mhz** som används. Några populära enheter: -WisMesh Pocket, seed studio T1000-E, LILYGO T-Deck Plus, Heltec LoRa 32, LILYGO® T-Beam. +[WisMesh Pocket](), +[seeed studio T1000-E](https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html), +[Heltec LoRa 32](https://heltec.org/project/wifi-lora-32-v3/), +[LILYGO T-Deck Plus](https://lilygo.cc/products/t-deck-plus-1), +[LILYGO T-Beam](https://lilygo.cc/products/t-beam). {{% /blocks/feature %}} {{% blocks/feature icon="fa-microchip" title="Flasha firmware" %}} -När du fått din enhet behöver Meshtastic programvaran laddas på. Detta görs enklast via en dator: http://flasher.meshtastic.org/ +När du fått din enhet behöver Meshtastic programvaran laddas på. Detta görs enklast via en dator: http://flasher.meshtastic.org/. +Vi rekommenderar den senaste betan, men titta tillbaka regelbundet då utvecklingen går snabbt. {{% /blocks/feature %}} {{% blocks/feature icon="fab fa-app-store-ios" title="Konfigurera med appen" %}} -För att konfigurera din en rekommenderas de officiella apparna för [iOS](https://apple.co/3Auysep) eller [Android](https://play.google.com/store/apps/details?id=com.geeksville.mesh&pli=1). -I Stockholm använder vi oss av kanal-preset: **Long Range Fast**. Vidare har vi en sida för [rekommenderade inställningar]({{}}). +För att konfigurera din en rekommenderas den officiella appen för [iOS](https://apple.co/3Auysep) eller [Android](https://play.google.com/store/apps/details?id=com.geeksville.mesh&pli=1). +I Stockholm använder vi kanal-preseten **Long Fast**. För mer detaljer om enhetskonfiguration se vår sida: [rekommenderade inställningar]({{}}). {{% /blocks/feature %}} {{% /blocks/section %}} From b76758e6c19e4c028e7489f428fdf87d0d1f8dd4 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 15 Mar 2025 16:09:02 +0100 Subject: [PATCH 09/13] Add google analytics --- hugo.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hugo.yaml b/hugo.yaml index 1b86f3b..fdb2bdb 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -134,6 +134,10 @@ params: readingtime: enable: false +services: + googleAnalytics: + id: G-4LJP3Y6HMZ + module: hugoVersion: extended: true From 43c580a9585e63ce35f29077e79b1843541bf6ce Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 15 Mar 2025 23:09:11 +0100 Subject: [PATCH 10/13] New Messages page --- content/sv/messages/index.html | 31 +++++++ content/sv/messages/index.md | 10 --- static/js/messages.js | 145 +++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 10 deletions(-) create mode 100644 content/sv/messages/index.html delete mode 100644 content/sv/messages/index.md create mode 100644 static/js/messages.js diff --git a/content/sv/messages/index.html b/content/sv/messages/index.html new file mode 100644 index 0000000..c3d7313 --- /dev/null +++ b/content/sv/messages/index.html @@ -0,0 +1,31 @@ +--- +title: Meddelanden +linkTitle: test +menu: {main: {weight: 50}} +--- +
+

Senaste meddelanden

+ + +

Loading...

+
+ + diff --git a/content/sv/messages/index.md b/content/sv/messages/index.md deleted file mode 100644 index 1845188..0000000 --- a/content/sv/messages/index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Meddelanden -linkTitle: Meddelanden -menu: {main: {weight: 50}} ---- -
-{{% blocks/section color="white" %}} -## Senaste meddelanden -{{% iframe src="https://map.sthlm-mesh.se/api/v1/text-messages/embed?gateway_id=3663385928" width="100%" style="min-height:65vh;overflow: hidden;" %}} -{{% /blocks/section %}} \ No newline at end of file diff --git a/static/js/messages.js b/static/js/messages.js new file mode 100644 index 0000000..5afc74f --- /dev/null +++ b/static/js/messages.js @@ -0,0 +1,145 @@ +document.addEventListener("DOMContentLoaded", async function () { + const messagesContainer = document.getElementById("messages"); + const radioButtons = document.querySelectorAll("input[name='btnradio']"); + const loadingDiv = document.getElementById("loading"); + const messagesList = document.createElement("div"); + messagesList.style="max-height:70vh;overflow: auto;" + messagesContainer.appendChild(messagesList); + + const state = { + messages: [], + nodesById: {}, + }; + + radioButtons.forEach(radio => { + radio.addEventListener("change", fetchMessages); + }); + + + async function fetchMessages() { + try { + let url = "https://map.sthlm-mesh.se/api/v1/text-messages?order=desc"; + const selectedRadio = document.querySelector("input[name='btnradio']:checked"); + + //If all is not selected we get 15 messages. If not we get 35 due to duplicates + if (selectedRadio.id !== "all") { + url += `&gateway_id=${selectedRadio.id}`; + url += `&count=15`; + } else { + url += `&count=35`; + } + + const response = await fetch(url); + const data = await response.json(); + + //Filter duplicate messages + state.messages = Array.from( + new Map(data.text_messages.map(msg => [msg.packet_id, msg])).values() + ); + + // fetch node info + for(const message of state.messages){ + await fetchNodeInfo(message.to); + await fetchNodeInfo(message.from); + await fetchNodeInfo(message.gateway_id); + } + + updateUI(); + } catch (error) { + console.error("Error fetching messages", error); + loadingDiv.innerHTML = `

Error fetching messages: ${error.message}

`; + } + } + async function fetchNodeInfo(nodeId) { + // do nothing if already fetched + if(nodeId in state.nodesById){ + return; + } + + // do nothing if broadcast address + if(nodeId.toString() === "4294967295"){ + return; + } + + try { + const response = await fetch(`https://map.sthlm-mesh.se/api/v1/nodes/${nodeId}`); + const data = await response.json(); + const node = data.node; + + if(node){ + state.nodesById[node.node_id] = node; + } + + } catch(e) { + // do nothing + } + + } + + function updateUI() { + loadingDiv.innerHTML = ""; // Clear the loading message + messagesList.innerHTML = ""; + state.messages.slice().reverse().forEach(message => { + const messageDiv = document.createElement("div"); + messageDiv.className = "d-flex mb-2"; + messageDiv.innerHTML = ` +
+
+ ${getNodeShortName(message.from)} +
+
+
+
+ ${getNodeLongName(message.from)} + ${message.to !== "4294967295" ? ` → ${getNodeLongName(message.to)}` : ""} +
+
+
${escapeMessageText(message.text)}
+
+
${formatMessageTimestamp(message.created_at)}
+
+ + `; + messagesList.appendChild(messageDiv); + }); + messagesList.scrollTop = messagesList.scrollHeight; + + } + + function getNodeColour(nodeId) { + return "#" + (nodeId & 0x00FFFFFF).toString(16).padStart(6, '0'); + } + + function getNodeHexId(nodeId) { + return "!" + parseInt(nodeId).toString(16); + } + + function getNodeShortName(nodeId) { + return state.nodesById[nodeId]?.short_name?.substring(0, 4) ?? "?"; + } + + function getNodeLongName(nodeId) { + return state.nodesById[nodeId]?.long_name ?? getNodeHexId(nodeId); + } + + function getNodeName(nodeId) { + const node = state.nodesById[nodeId]; + if(!node){ + return getNodeHexId(nodeId); + } + return `[${node.short_name}] ${node.long_name}`; + } + + function escapeMessageText(text) { + return text.replaceAll('<', '<').replaceAll('>', '>').replaceAll('\n', '
'); + } + + function formatMessageTimestamp(createdAt) { + const date = new Date(createdAt); + return date.toLocaleString('sv-SE', { hour12: false }).replace(' ', ' ').slice(0, 16); + } + + await fetchMessages(); + setInterval(fetchMessages, 30000); +}); From 9e843f541ce6ea9ab949ff4384d3f7de813c040d Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 15 Mar 2025 23:09:32 +0100 Subject: [PATCH 11/13] fix syntax --- assets/scss/_variables_project.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index 70938d6..6d7d017 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -6,6 +6,6 @@ Add styles or override variables from the theme here. /* Color and Style */ $primary: #30a552; -$secondary: #0d6efd;; +$secondary: #0d6efd; $tertiary: #8c68cd; $warning: #ffc107; \ No newline at end of file From 928040f865d203e7db027f47c07a318ff2b834a6 Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sat, 15 Mar 2025 23:12:40 +0100 Subject: [PATCH 12/13] fix link --- content/sv/messages/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/sv/messages/index.html b/content/sv/messages/index.html index c3d7313..9e05d17 100644 --- a/content/sv/messages/index.html +++ b/content/sv/messages/index.html @@ -1,6 +1,6 @@ --- title: Meddelanden -linkTitle: test +linkTitle: Meddelanden menu: {main: {weight: 50}} ---
From e4495e6eef7ab41b27bb2a82a4da3a06a3b9e77c Mon Sep 17 00:00:00 2001 From: Anton Roslund Date: Sun, 16 Mar 2025 17:18:29 +0100 Subject: [PATCH 13/13] Added tooltips --- content/sv/messages/index.html | 36 +++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/content/sv/messages/index.html b/content/sv/messages/index.html index 9e05d17..810cf78 100644 --- a/content/sv/messages/index.html +++ b/content/sv/messages/index.html @@ -7,23 +7,27 @@ menu: {main: {weight: 50}}

Senaste meddelanden

Loading...