Síť klikva.net


                               ┌─────────┐ ┌────────┐   
                               │ WhatsApp│ │ Maubot │      
                               │ bridge  │ │ server │ <-> HTTPS/SMTP/... rozhraní
                               └─────────┘ └────────┘
                                    ↕         ↕ 
 ┌────────┐                        ┌────────────┐     ┌───────┐     ┌────────┐
 │ Heltec │                        │ Matrix.org │     │  M2M  │(USB)│ RAK4631│
 │//\ uzel│                        │   server   │ <-> │ brána │ <-> │//\ uzel│
 └────────┘                        └────────────┘     └───────┘     └────────┘
     ↕ (WiFi)                             ↕ 
 ┌────────┐     ┌────────┐            ┌───────┐   
 │  MQTT  │     │  MQTT  │            │  WWW  │
 │ server │ <-> │ klient │ -> JSON -> │ server│ -> Zobrazení tabulky s provozem v síti (mqtt-data.php)
 └────────┘     └────────┘      ↓     └───────┘
                           ┌──────────┐     ↑
                           │ collectd │     |
                           │ server   │ -> CSV data + GNUplot grafy
                           └──────────┘

Popis

Obecně

Svobodná bezdrátová síť Meshtastic (nejen) v okolí Kokonína
  • Postavená na svobodném software Meshtastic
  • Nezávislá na jiných sítích a technologiích
  • S decentralizovanou topologií
  • Komunikující v bezlicenčním pásmu 868 MHz technologií LoRa
  • Provozovaná s využitím nízkopříkonových zařízení napájených celoročně ze slunce

Cíle

  • Kvalitní pokrytí vytyčených oblastí s cílem umožnit plnohodnotnou a (v mezích technologie) spolehlivou komunikační síť
  • Monitoring environmentálních parametrů vybraných hnízdních prvků využívaných jako uzly
  • Monitoring kvality ovzduší
  • Přenos dat a telemetrie v rámci chovatelské a zemědělské praxe
  • Využívání nezávislých zařízení (např. LILYGO T-Deck Plus) jako alternativa k mobilním telefonům

Zapojení a nastavení

  • Jednotlivé uzly jsou nastaveny vcelku standardně, konfigurace z řádky probíhá např. takto:
  • meshtastic --set lora.region  EU_868 --set lora.modem_preset MEDIUM_FAST --ch-medfast \
               --set device.role CLIENT --set device.tzdef 'CET-1CEST,M3.5.0,M10.5.0/3' \
               --ch-set module_settings.position_precision 16 --ch-index 0 --ch-set psk base64:AQ== \
               --setlat 50.7 --setlon 15.1 --setalt 530 --set-owner 'Kukan ^' --set-owner-short  'Kuka'
    
  • Jednotlivé uzly jsou na sobě nezávislé, při plánování sítě je preferována redundance tras, tak aby každý uzel viděl (byť suboptimálně) minimálně na dva jiné.
  • Propojení se servery je realizováno dvěma nezávislými uzly (viz schéma nahoře). Jeden uzel je napojen na MQTT server, druhý na Matrix.org server.

MQTT server

Uzel Kukan ^, který běží na Heltec WiFi LoRa 32 předává přes WiFi síť data na MQTT server Mosquitto, který běží na Raspberry Pi 5. Na server je napojený MQTT klient mqtt.parser.py, který data shromažďuje v souborech v adresáři /dev/shm (nejsou tedy na disku, ale v paměti) ve formátu JSON. Tyto soubory jsou stejným skriptem zpřístupněny přes HTTP pro další využití. Data ze senzorů jsou ukládána pomocí serveru collectd, informace o uzlech jsou zpřístupněny na webu pomocí PHP skriptů ve formě tabulky a mapy uzlů (ke stažení níže).

Matrix.org server

Uzel Matrix ^, který běží na RAK4631 je připojen přes USB do Raspberry Pi 5, na kterém běží v LXC kontejneru Základní Matrix <-> Meshtastic brána, která předává data oběma směry mezi Meshtastic kanály a Matrix.org serverem (alternativně je možné použít i intenzivněji vyvíjenou rozšířenou Matrix <-> Meshtastic bránu). Brána je napojena na Matrix.org server conduwuit a na něj je napojen Maubot – robot pro Matrix.org. V rámci Maubotu běží dva zásuvné moduly (ke stažení níže), které slouží k rozesílání a příjmu e-mailů a SMS, aktualizaci webových stránek, kalendáře a seznamu úkolů, čtení RSS zpráv atp. Na Matrix.org server je napojen i most do sítě WhatsApp.

Informace o uzlech

Užitečné nástroje a tipy

Vyvinutý software

MQTT klient v Pythonu

Program v Pythonu na ukládání/aktualizaci dat provozu v síti a hodnot z úlové véhy z MQTT serveru do JSON souboru uloženého v paměti (/dev/shm/) a současně publikovaného přes HTTP

Mapa uzlů v síti

Program v PHP na zobrazení mapy uzlů. Data jsou tahána přes HTTP z JSON souboru. Modře jsou značeny uzly zachycené naším MQTT serverem v posledních 24 hodinách, zeleně naše vlastní uzly a červeně uzly, které se neozvaly více než 24 hodin.

Provoz v síti

Program v PHP na zobrazení provozu v síti formou tabulky. Data jsou tahána přes HTTP z JSON souboru.

Meshbot

Maubot plugin meshbot, který sleduje komunikaci v příslušné Matrix.org místnosti a reaguje na příkazy:
  • !a dotaz – vrátí odpověď AI na dotaz
  • !b zprava – odešle aktualitu na webovou stránku
  • !c datum událost – uloží událost do kalendáře na zadané datum
  • !d – vrátí aktuální čas
  • !h – vrátí nápovědu
  • !l zpráva – odešle zprávu zpět do místnosti
  • !k datum – odešle události v kalendáři pro zadané datum
  • !m adresa předmět zpráva – odešle e-mail na zadanou adresu
  • !p – vrátí aktuální meteoinformace
  • !o minut – odpočet pro zadaný počet minut
  • !r – odesílá postupně zprávy z RSS kanálu.
  • !s číslo zpráva – odešle SMS na zadané číslo
  • !t úkol – zadá úkol do seznamu úkolů
Balíček pro Maubot má příponu *.mbp, ale jedná se pouze o přejmenovaný ZIP soubor:

IMAPbot

Maubot plugin imapbot, který pravidelně sleduje přes IMAP protokol e-mailovou schránku a v případě, že dorazí nová zpráva, tak ji odešle do příslušné Matrix.org místnosti. Balíček pro Maubot má příponu *.mbp, ale jedná se pouze o přejmenovaný ZIP soubor: