A Meshtastic egy nyílt forrású project, amely LoRa (Long Range radio) technológiát használva lehetővé teszi autonóm mesh hálózatok létrehozását. Ez azt jelenti, hogy a Meshtastic eszközök képesek kommunikálni egymással anélkül, hogy szükség lenne egy központi szerverre vagy internetkapcsolatra. Ez különösen hasznos lehet olyan helyeken, ahol nincs megbízható mobilhálózat vagy internet.

Magyar hálózat

Vagy olyankor, amikor ezeket szándékosan lekapcsolják.

Mi az a LoRa?

A LoRa egy vezeték nélküli kommunikációs technológia, amely nagy hatótávolságot ígér alacsony energiafogyasztás mellett. Az eszközök több kilométeres távolságra is kommunikálhatnak egymással, miközben minimális energiát használnak. A LoRa technológia különösen alkalmas olyan alkalmazásokhoz, ahol fontos a hosszú távú kommunikáció és az alacsony fogyasztás, például mezőgazdasági szenzorok, városi infrastruktúra vagy vészhelyzeti kommunikáció.

Szabadon használható frekvenciatartományokat használ (433 MHz, 868 MHz Európa, 915 MHz USA), így nem igényel licencet a használata, viszont az adó teljesítmény és a kommunikációs sebesség korlátozott lehet a helyi szabályozásoktól függően (tipikusan jóval 1W alatt).

Maga a LoRa csak a fizikai réteget jelenti, amely meghatározza, hogyan történik a rádiókommunikáció, a hálózati réteg és a protokollok azonban különbözőek lehetnek, felhasználástól függően.

A LoRaWAN (LoRa Wide Area Network) például főként IoT (Internet of Things) alkalmazásokban használatos - mezőgazdaságban, iparban, távoli szenzorok leolvasására -, ahol egy központi hálózati szerver kezeli a kommunikációt az eszközök között. Ezzel szemben a Meshtastic vagy a MeshCore egy peer-to-peer mesh hálózatot hoz létre, ahol az eszközök közvetlenül kommunikálnak egymással, anélkül, hogy egy központi szerverre lenne szükség.

Az áramfelhasználás nyilván szintén függ a felhasználás módjától, de például “buta” talajnedvességmérő szenzorok akár évekig képesek egy 1.5 Voltos AA elemmel elműködni.

Meshtastic

Magyarországon jelenleg a két népszerűbb LoRa alapú mesh hálózatból a Meshtastic van jobban elterjedve - a MeshCore-ral szemben, amely egy újabb projekt, nem akkora a közösség, és “techibb” -, ezért első körben azt akartam kipróbálni.

A Meshtastic alapjai

  • Teljesen decentralizált
  • Titkosított kommunikáció
  • Szöveges üzenetek, helymeghatározás, és egyéb adatátvitel (hőmérséklet, páratartalom, stb.)

Eszközök

A Meshtastic eszközök általában egy LoRa modulból, egy mikrokontrollerből (például ESP32), és egy akkumulátorból állnak. Sokféle létezik, vannak úgy nevezett “companion” eszközök, amelyek egy okostelefonhoz csatlakoznak Bluetooth-on keresztül, van, amelyiken van kijelző, van, amin nincs, vannak “buta” eszközök is pl. GPS trackelésre, és vannak szinte telefonnak kinéző, billentyűzetes eszközök is, ezekkel önmagában is lehet üzeneteket írni és fogadni.

Működés

Flooding

A hálózatban minden eszköz (ami úgy van konfigurálva) megpróbálja továbbítani az üzeneteket a többi eszköznek, amíg el nem érik a célt.

  • a küldő eszköz elküldi az üzenetet, amin beállít egy hop limitet (maximum 7)
  • a fogadó eszköz megkapja az üzenetet, és ha nem ő a címzett, még nem látta azt a csomagot (ID alapján, amit egy csúszóablakos cache-ben eltárol), és az újraküldések száma nem érte még el a hop limitet, akkor továbbítja a többi eszköznek

Titkosítás

Első használatkor minden eszköz generál egy kulcspárt, és a nyilvános kulcsot megosztja a többi eszközzel (rendszeres “nodeinfo” üzenetekkel). A direkt üzeneteket a küldő eszköz a címzett nyilvános kulcsával titkosítja, így csak a címzett tudja visszafejteni az üzenetet a saját privát kulcsával. A továbbított üzeneteket azonban minden eszköz megkapja, de nem tudják visszafejteni, így nem látják a tartalmát.

A közös csatornákon is titkosított üzeneteket továbbítanak, így a hálózat biztonságos marad, még akkor is, ha valaki megpróbálja lehallgatni a kommunikációt. (A csatornákhoz meg kell adni a titkosítási kulcsot, ami a publikus csatornáknál mindenki által ismert, de ettől függetlenül az ezekre küldött üzenetek is titkosítottak, csak mindenki visszafejtheti őket.)

MQTT bridge

Bár teljesen opcionális a használata, de lehetőség van egy MQTT bridge-et is beállítani, ami egy központi szerverre továbbítja az üzeneteket, így azok elérhetővé válnak egy webes felületen keresztül is. Ez különösen hasznos lehet olyan helyeken, ahol van internetkapcsolat, és szeretnénk a hálózatot egy központi helyről monitorozni vagy irányítani.

A bridge elvileg arra is használható, hogy két, egymástól fizikailag távolabb lévő hálózatot összekössön, de ez nem túl gyakori használati mód (és nyilván ezzel sérül az “autonómia”).

Saját setup

Először egy Seeed Studio T1000E-t és egy Heltec T114-et szereztem be, amiket tudok magammal hordani - nRF52840-es mikrokontroller van mindkettőben, ami sokkal kevesebbet fogyaszt, mint az ESP32-es változatok. Eredeti tervem az volt, hogy valamelyiket viszem magammal futni, így olyan helyeken is tudnak mások engem követni, ahol nincs mobilhálózat.

T1000E és T114

Az első nagyobb teszten a Pilisben ez jól vizsgázott, az Apátkúti-völgyben is kiment tőlem több pozíció report - de a Pilis különösen jól le van fedve, és akkor még “LongFast” preset beállítást használt a magyar közösség, ami ilyen szempontból jobb volt, mint a jelenleg használt “MediumFast” (amire azért váltott a társaság, mert Budapesten már kezdett túltelítődni a hálózat).

A preset egy előre definiált beállításkészlet, ami meghatározza a LoRa kommunikáció paramétereit, például a sebességet, a kódolási sebességet, a sávszélességet, stb. Ezek a paraméterek befolyásolják a hatótávolságot és az energiafogyasztást. A “LongFast” preset például hosszabb hatótávolságot biztosít alacsonyabb adatátviteli sebességgel, míg a “MediumFast” gyorsabb adatátvitelt tesz lehetővé rövidebb hatótávolság mellett.

A paraméterek részletesebb magyarázata megtalálható a Meshtastic dokumentációjában.

Itthon viszont semmi nem látszódott (Budakeszi elégge takarásban van, pláne Budapest és a Pilis felől), de futás közben a környéken is sokszor kaptam üzeneteket, úgyhogy úgy döntöttem, hogy kiteszek egy node-ot a ház tetejére is, hátha azzal jobb lesz a lefedettség. Ez egy Heltec V3 lett (ESP32 alapú, de hálózatról kap áramot). Ez sem volt még azonban elég, hiába kapott nagyobb (4dBi-s) antennát, néhány kósza betévedő csomagon kívül (amit gondolom a környéken közlekedők osztottak tovább) nem láttam semmit.

Az áttörés most kedden jött el, amikor megérkezett az aliról rendelt AB-IOT erősítő, ezzel már látok és látszódom :) Egyetlen node-dal stabil a kapcsolat, ami pedig a kb. 40km-re lévő Gerecse csúcsán van, szóval a hatótávolság tényleg durva. A kapcsolat meglepően stabil, pedig a jel erőssége -100dBm körül van, az SNR (jel/zaj viszony) pedig -10dB körül, amik nem tűnnek soknak. A Normafáról (~2.5km) indított traceroute 100km-nél többet utazott, mire hazajutott :)

Traceroute Normafa

Tesztként indítottam néhány traceroute-ot távolabbi node-ok felé is, és kiderült, hogy a 38km-es távolság egyátalán nem nagy, jó antennával, erősítővel és szűrővel rendelkező node-ok sokkal többre is képesek.

Traceroute Kőszegre

Sokat segítene a helyzeten egy napelemes node a Csergezán Pál kilátóra, de azt sajnos tavaly év végén lezárták, így egyelőre el se kezdtem kérdezősködni, hogy hogy lehetne oda hivatalosan felszerelni valamit.

Magyar közösség

A magyar mesh közösség bár nem nagy, de mindenképp nagyobb, mint elsőre gondoltam :) Egyelőre Budapest környéke, az Észak-Dunántúl, és pár nagyobb város van lefedve valamennyire, de napról napra jelennek meg újabb node-ok, úgyhogy ez a helyzet gyorsan változhat.

Az aktuális beállítások megtalálhatóak a Magyar Meshtastic közösség oldalán, itt egy térképen is meg lehet nézni, hogy hol vannak node-ok és mekkora eséllyel tudsz velük kapcsolatot teremteni.

Szintén érdekes az MQTT adatokat gyűjtő weboldal, ahol a hálózat forgalmát lehet monitorozni, és látható, hogy melyik node-ok kommunikálnak egymással.

Gerecse kapcsolat statisztika

Mivel a mesh még messze nem teljes, és a max 7 hop limit miatt úgyse feltétlen látna mindenki minden üzenetet, ezért a kommunikáció Discordon (hmm, hát igen) is zajlik, ahol mindig akad valaki, aki tud segíteni, ha elakadnál a beállításokkal.

Oké, de mire jó ez az egész?

  • Off-grid kommunikáció a semmi közepén, például túrázás közben, vagy olyan helyeken, ahol nincs mobilhálózat (vagy “túlélőturák”, ahova nem szabad mobiltelefont vinni)
  • Autó, motor, esetleg szökni szerető kutyák GPS trackelése mindenféle előfizetés nélkül
  • Vészhelyzeti kommunikáció, például árvíz, földrengés
  • Közösségi hálózatok létrehozása olyan helyeken, ahol nincs megbízható internetkapcsolat
  • Kísérletezés, tanulás, és a technológia megismerése
  • De komolyan, egy off-grid, autonóm, titkosított kommunikációs csatorna, amit a kis adóteljesítmény miatt még detektálni is nehéz, ha nem tudod pontosan mit keresel… egyszóval preppereknek :)