deploy: 33cab22d0c
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 767 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on STHLM-MESH</title><link>https://sthlm-mesh.se/categories/</link><description>Recent content in Categories on STHLM-MESH</description><generator>Hugo -- gohugo.io</generator><language>sv</language><atom:link href="https://sthlm-mesh.se/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||
@@ -0,0 +1,4 @@
|
||||
/* PrismJS 1.28.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+c+csharp+cpp+go+java+markdown+python+scss+sql+toml+yaml&plugins=toolbar+copy-to-clipboard */
|
||||
code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
|
||||
div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Device Role on STHLM-MESH</title><link>https://sthlm-mesh.se/docs/device_role/</link><description>Recent content in Device Role on STHLM-MESH</description><generator>Hugo -- gohugo.io</generator><language>sv</language><atom:link href="https://sthlm-mesh.se/docs/device_role/index.xml" rel="self" type="application/rss+xml"/><item><title>CLIENT MUTE</title><link>https://sthlm-mesh.se/docs/device_role/client_mute/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/client_mute/</guid><description>Portabla noder och noder man har innomhus bör primärt vara CLIENT MUTE.</description></item><item><title>CLIENT</title><link>https://sthlm-mesh.se/docs/device_role/client/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/client/</guid><description>Noder på ballkonger och villahustak bör vara satt till CLIENT</description></item><item><title>ROUTER</title><link>https://sthlm-mesh.se/docs/device_role/router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/router/</guid><description>Använd inte ROUTER eller REPEATER.</description></item></channel></rss>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Documentation on STHLM-MESH</title><link>https://sthlm-mesh.se/docs/</link><description>Recent content in Documentation on STHLM-MESH</description><generator>Hugo -- gohugo.io</generator><language>sv</language><atom:link href="https://sthlm-mesh.se/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>MQTT</title><link>https://sthlm-mesh.se/docs/mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/mqtt/</guid><description>MQTT (Message Queuing Telemetry Transport) är ett protokoll för meddelandeöverföring som är vanligt att använa för IoT kommunikation. Det är designat för att vara effektivt, även i nätverk med låg bandbredd eller hög latens.
|
||||
Vi använder MQTT för att kunna analysera meshet. Detta gör vi genom att enbart ha uplink igång. På så sätt kan man tillhandahålla information om meshet som går att analysera med andra verktyg.
|
||||
Meshtastic har stöd för att använda MQTT för att brygga olika mesh-nätverk.</description></item><item><title>Neighbor Info</title><link>https://sthlm-mesh.se/docs/neighbor_info/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/neighbor_info/</guid><description>Neighbor Info modulen samlar infomration om en nods grannar den har direktkontakt med (0-hopp). Denna information kan sedan skickas över MQTT eller LoRa.
|
||||
Informationen kan sedan visualiseras på karttjänster. Neighbour Info konfiguration neighbor_info: neighbor_info.enabled: True neighbor_info.transmit_over_lora: True neighbor_info.update_interval: 43200</description></item></channel></rss>
|
||||
|
After Width: | Height: | Size: 755 KiB |
@@ -0,0 +1,3 @@
|
||||
<link rel="icon" href="/iconx/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/iconx/apple-touch-icon.png"/>
|
||||
<link rel="manifest" href="/iconx/manifest.json" />
|
||||
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 764 B |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>STHLM-MESH</title><link>https://sthlm-mesh.se/</link><description>Recent content on STHLM-MESH</description><generator>Hugo -- gohugo.io</generator><language>sv</language><atom:link href="https://sthlm-mesh.se/index.xml" rel="self" type="application/rss+xml"/><item><title>CLIENT MUTE</title><link>https://sthlm-mesh.se/docs/device_role/client_mute/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/client_mute/</guid><description>Portabla noder och noder man har innomhus bör primärt vara CLIENT MUTE.</description></item><item><title>CLIENT</title><link>https://sthlm-mesh.se/docs/device_role/client/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/client/</guid><description>Noder på ballkonger och villahustak bör vara satt till CLIENT</description></item><item><title>ROUTER</title><link>https://sthlm-mesh.se/docs/device_role/router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/device_role/router/</guid><description>Använd inte ROUTER eller REPEATER.</description></item><item><title>MQTT</title><link>https://sthlm-mesh.se/docs/mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/mqtt/</guid><description>MQTT (Message Queuing Telemetry Transport) är ett protokoll för meddelandeöverföring som är vanligt att använa för IoT kommunikation. Det är designat för att vara effektivt, även i nätverk med låg bandbredd eller hög latens.
|
||||
Vi använder MQTT för att kunna analysera meshet. Detta gör vi genom att enbart ha uplink igång. På så sätt kan man tillhandahålla information om meshet som går att analysera med andra verktyg.
|
||||
Meshtastic har stöd för att använda MQTT för att brygga olika mesh-nätverk.</description></item><item><title>Neighbor Info</title><link>https://sthlm-mesh.se/docs/neighbor_info/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/docs/neighbor_info/</guid><description>Neighbor Info modulen samlar infomration om en nods grannar den har direktkontakt med (0-hopp). Denna information kan sedan skickas över MQTT eller LoRa.
|
||||
Informationen kan sedan visualiseras på karttjänster. Neighbour Info konfiguration neighbor_info: neighbor_info.enabled: True neighbor_info.transmit_over_lora: True neighbor_info.update_interval: 43200</description></item><item><title>Meetups</title><link>https://sthlm-mesh.se/meetups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sthlm-mesh.se/meetups/</guid><description> About Goldydocs A sample site using the Docsy Hugo theme. Kommande Meetups Just nu känner vi inte till några plannerade meetups. Säg till om du plannerar något så kan vi informera om det här.
|
||||
Tidigare meetups: Datum: 2024-09-04 Tid: 17:00 - 22:00 Plats: The Bishops Arms, Sundbyberg Event: Facebook Datum: 2024-05-05 Tid: 17:00 Plats: Takpark by Urban Deli, Sveavägen 44</description></item></channel></rss>
|
||||
@@ -0,0 +1,2 @@
|
||||
let codeListings=document.querySelectorAll(".highlight > pre");for(let t=0;t<codeListings.length;t++){const s=codeListings[t].querySelector("code"),e=document.createElement("button"),o={type:"button",title:"Copy to clipboard","data-bs-toggle":"tooltip","data-bs-placement":"top","data-bs-container":"body"};Object.keys(o).forEach(t=>{e.setAttribute(t,o[t])}),e.classList.add("fas","fa-copy","btn","btn-sm","td-click-to-copy");const i=new bootstrap.Tooltip(e);e.onclick=()=>{copyCode(s),e.setAttribute("data-bs-original-title","Copied!"),i.show()},e.onmouseout=()=>{e.setAttribute("data-bs-original-title","Copy to clipboard"),i.hide()};const n=document.createElement("div");n.classList.add("click-to-copy"),n.append(e),codeListings[t].insertBefore(n,s)}const copyCode=e=>{navigator.clipboard.writeText(e.textContent.trim()+`
|
||||
`)}
|
||||
@@ -0,0 +1,116 @@
|
||||
// Storage key names and data attribute name:
|
||||
const td_persistStorageKeyNameBase = 'td-tp-persist';
|
||||
const td_persistCounterStorageKeyName = `${td_persistStorageKeyNameBase}-count`;
|
||||
const td_persistDataAttrName = `data-${td_persistStorageKeyNameBase}`;
|
||||
|
||||
// Utilities
|
||||
|
||||
const _tdPersistCssSelector = (attrValue) =>
|
||||
attrValue
|
||||
? `[${td_persistDataAttrName}="${attrValue}"]`
|
||||
: `[${td_persistDataAttrName}]`;
|
||||
|
||||
const _tdStoragePersistKey = (tabKey) =>
|
||||
td_persistStorageKeyNameBase + ':' + (tabKey || '');
|
||||
|
||||
const _tdSupportsLocalStorage = () => typeof Storage !== 'undefined';
|
||||
|
||||
// Helpers
|
||||
|
||||
function tdPersistKey(key, value) {
|
||||
// @requires: tdSupportsLocalStorage();
|
||||
|
||||
try {
|
||||
if (value) {
|
||||
localStorage.setItem(key, value);
|
||||
} else {
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
} catch (error) {
|
||||
const action = value ? 'add' : 'remove';
|
||||
console.error(
|
||||
`Docsy tabpane: unable to ${action} localStorage key '${key}': `,
|
||||
error
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve, increment, and store tab-select event count, then returns it.
|
||||
function tdGetTabSelectEventCountAndInc() {
|
||||
// @requires: tdSupportsLocalStorage();
|
||||
|
||||
const storedCount = localStorage.getItem(td_persistCounterStorageKeyName);
|
||||
let numTabSelectEvents = parseInt(storedCount) || 0;
|
||||
numTabSelectEvents++;
|
||||
tdPersistKey(td_persistCounterStorageKeyName, numTabSelectEvents.toString());
|
||||
return numTabSelectEvents;
|
||||
}
|
||||
|
||||
// Main functions
|
||||
|
||||
function tdActivateTabsWithKey(key) {
|
||||
if (!key) return;
|
||||
|
||||
document.querySelectorAll(_tdPersistCssSelector(key)).forEach((element) => {
|
||||
new bootstrap.Tab(element).show();
|
||||
});
|
||||
}
|
||||
|
||||
function tdPersistActiveTab(activeTabKey) {
|
||||
if (!_tdSupportsLocalStorage()) return;
|
||||
|
||||
tdPersistKey(
|
||||
_tdStoragePersistKey(activeTabKey),
|
||||
tdGetTabSelectEventCountAndInc()
|
||||
);
|
||||
tdActivateTabsWithKey(activeTabKey);
|
||||
}
|
||||
|
||||
// Handlers
|
||||
|
||||
function tdGetAndActivatePersistedTabs(tabs) {
|
||||
// Get unique persistence keys of tabs in this page
|
||||
var keyOfTabsInThisPage = [
|
||||
...new Set(
|
||||
Array.from(tabs).map((el) => el.getAttribute(td_persistDataAttrName))
|
||||
),
|
||||
];
|
||||
|
||||
// Create a list of active tabs with their age:
|
||||
let key_ageList = keyOfTabsInThisPage
|
||||
// Map to [tab-key, last-activated-age]
|
||||
.map((k) => [
|
||||
k,
|
||||
parseInt(localStorage.getItem(_tdStoragePersistKey(k))) || 0,
|
||||
])
|
||||
// Exclude tabs that have never been activated
|
||||
.filter(([k, v]) => v)
|
||||
// Sort from oldest selected to most recently selected
|
||||
.sort((a, b) => a[1] - b[1]);
|
||||
|
||||
// Activate tabs from the oldest to the newest
|
||||
key_ageList.forEach(([key]) => {
|
||||
tdActivateTabsWithKey(key);
|
||||
});
|
||||
|
||||
return key_ageList;
|
||||
}
|
||||
|
||||
function tdRegisterTabClickHandler(tabs) {
|
||||
tabs.forEach((tab) => {
|
||||
tab.addEventListener('click', () => {
|
||||
const activeTabKey = tab.getAttribute(td_persistDataAttrName);
|
||||
tdPersistActiveTab(activeTabKey);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Register listeners and activate tabs
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
if (!_tdSupportsLocalStorage()) return;
|
||||
|
||||
var allTabsInThisPage = document.querySelectorAll(_tdPersistCssSelector());
|
||||
tdRegisterTabClickHandler(allTabsInThisPage);
|
||||
tdGetAndActivatePersistedTabs(allTabsInThisPage);
|
||||
});
|
||||
|
After Width: | Height: | Size: 4.1 MiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 784 KiB |
@@ -0,0 +1 @@
|
||||
User-agent: *
|
||||
@@ -0,0 +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/device_role/client_mute/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/device_role/client/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/device_role/</loc><lastmod>2025-02-16T19:35:28+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/device_role/router/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/mqtt/</loc><lastmod>2025-02-16T19:35:28+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/docs/neighbor_info/</loc><lastmod>2025-02-16T19:35:28+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/categories/</loc></url><url><loc>https://sthlm-mesh.se/docs/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/meetups/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/</loc><lastmod>2025-02-16T18:01:33+01:00</lastmod></url><url><loc>https://sthlm-mesh.se/tags/</loc></url></urlset>
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tags on STHLM-MESH</title><link>https://sthlm-mesh.se/tags/</link><description>Recent content in Tags on STHLM-MESH</description><generator>Hugo -- gohugo.io</generator><language>sv</language><atom:link href="https://sthlm-mesh.se/tags/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||