Panoramatický výhled na krajinu z vrcholu kopce

Telemetrie, senzory, GPS

Typický dotaz začínajícího uživatele MeshCore je: můžu dát companion (často už se jmenuje “Tracker”, například Heltec, Seeed Wio…) na motorku a přenášet jeho polohu přes MeshCore? Jak můžu sledovat teplotu a vlhkost ve skleníku? Namísto jednoduchého NE je dobré se podívat na to, co MeshCore nabízí a jaká jsou možnosti.

Senzory

MeshCore nabízí dedikovaný senzorový uzel (Sensor Node) a nedávný článek Úvod do senzorů na MeshCore.io ukazuje, jak senzor vytvořit. Na to navazuje telemetrie v protokolu MeshCore.

MeshCore tedy už ve standardu senzory a telemetrii nabízí a jak je vidět, už tady s námi zůstanou. Co je potřeba vědět, je to, že množství přenesených dat je omezeno použitou technologií LoRa, která má relativně nízkou přenosovou rychlost. CZ preset má nominální přenosovou rychlost přibližně 2,5–3 kbit/s. Skutečná kapacita sítě je však nižší kvůli režii protokolu, opakovanému předávání zpráv a sdílení rádiového kanálu. Při zahlcení může docházet ke ztrátám paketů. Navíc dochází také k omezení dostupného vysílacího času vlivem obsazení sdíleného rádiového kanálu okolními uzly.

Budu si data přenášet jen ze skleníku k sobě

Na střeše mám repeater s kvalitní anténou, ve skleníku mám senzor, doma mám companion. Data chodí pouze mezi mým skleníkem, přes můj repeater, na můj companion. V čem je problém?

Problém je, pokud mám svůj domácí systém nastaven tak, aby komunikoval na CZ presetu. Zároveň může být problém i v repeateru s kvalitní anténou. Ten, když dostane data ze skleníku, je posílá sice cíleně na jeden daný companion, ale toto vysílání může být díky kvalitní anténě zachyceno množstvím dalších repeaterů na CZ presetu. Ty sice daný paket nepředají, ale pokud jej přijímají, nemohou během příjmu současně vysílat ani přijímat jiný paket na stejném rádiu.

Jak se navzájem ovlivňuje poloduplexní mesh

Na začátek je tady nákres plně propojené mesh sítě, kde každý uzel komunikuje s každým (ne všechna spojení jsou znázorněna):

full_mesh|658x474, 75% full_mesh|658x474, 75%

Protože ne všechny uzly na sebe vidí, je zde reálnější příklad, kdy posíláme data napříč celou sítí pomocí floodu z výchozího uzlu D. I když je cílovou destinací uzel F, zprávu mohou dostat a předat dále i ostatní repeatery v síti (v závislosti na nastavení a dosahu):

flood|658x474, 75% flood|658x474, 75%

MeshCore oproti Meshtasticu nabízí možnost poslat zprávy pomocí definované cesty, což zní jako velká výhoda. To pak teoreticky vypadá tak, že signál putuje z uzlu D do F pouze přes uzel E:

direct_path|658x474, 75% direct_path|658x474, 75%

Ve skutečnosti se ale stane to, že i když je zpráva poslána definovanou cestou pouze mezi danými repeatery (D–E–F), mohou ji zachytit také další repeatery, které jsou v dosahu uzlů D, E a F. Díky tomu dochází k omezení jejich dostupného vysílacího času vlivem obsazení sdíleného rádiového kanálu. Takže paket sice nebudou předávat, ale po dobu, kdy jej skutečně přijímají, jsou repeatery A, B, C, G, H, I obsazeny a nemohou současně vysílat ani přijímat jiný paket na stejném rádiu:

nodes_blocking|658x474, 75% nodes_blocking|658x474, 75%

Možnosti

Aha, takže signál z mé motorky může síť výrazně omezit a při častém odesílání polohy přispět k jejímu zahlcení. Jaké jsou možnosti?

Použít jiný systém, například GPS trackery nebo lokalizační služby dostupné pro Android a iOS, případně LoRaWAN či jiné 433MHz systémy pro přenos dat ze skleníku.

Opravdu chci použít MeshCore – líbí se mi, jak má senzory definované, jak funguje telemetrie v protokolu a v aplikacích.

Můžete tereticky použít MeshCore, ale nemůžete využívat nebo ovlivňovat (i nepřímo) repeatery jiných lidí bez svolení. To znamená, že je potřeba si zajistit plné pokrytí z místa „ze skleníku“ k sobě „domů“ a k tomu nastavit všechna zařízení tak, aby jejich provoz nekolidoval s jinou sítí. To lze udělat například použitím jiné, vhodně zvolené frekvence. Ideálně takové, aby nerušila nejen v ČR, ale ani v okolních zemích. Samozřejmě je nutné dodržet povolená frekvenční pásma a další rádiové podmínky.

Ale tím pádem už nemám možnost si psát s lidmi na CZ preseteu

Přesně tak, pokud budete používat jiné rádiové nastavení, nebudete přímo propojeni s jinou MeshCore sítí. Ta je určena pro komunikaci mezi lidmi.

Co regiony? Mohu si nastavit vlastní region a tím provoz omezit?

Ne, samotným nastavením regionu se obsazení rádiového kanálu neodstraní. Region může omezit další předávání zpráv, ale jak jsme si již popsali, naše vysílání může ostatní uzly stále pasivně omezovat obsazením sdíleného kanálu.

Co Adverty, můžu je použít pro pravidelné odesílání dat nebo GPS souřadnic? Některé alternativní firmwary tuto funkci mají.

Automatické Adverty, zvláště floodové, zatěžují celou síť a rozhodně není dobré je používat na síti CZ presetu.