Eenvoudig Mesh-netwerken opzetten


Het woord “Mesh-netwerken” in titel is eigenlijk helemaal fout, het zijn eigenlijk “Mesh networks” in het Engels over “Vermaasde netwerken” in goed Nederlands. Maar bij vermaasde netwerken zijn er nóg minder mensen die een idee hebben waar ik het over heb. Dus ook nu eerst even wat achtergrond: normaal gesproken als wij met onze laptop, iPad, smartphone of ander draadloos of zelfs bekabeld apparaat verbinding maken met het / een netwerk, dan is er een duidelijke rolverdeling. De laptop, iPad etc. is een node die verbinding maakt met een ander apparaat dat als belangrijkste taak heeft om toegang te verlenen tot het netwerk, tot internet, tot een server etc.
Dat kan een Wifi router zijn die het signaal van jouw apparaat ontvangt en dan doorgeeft via het bekabelde netwerk naar een ADSL router of een andere aansluiting met het internet etc.
Kenmerkend daarbij is dat er een infrastructuur beschikbaar is die daar specifiek voor aangelegd is. Maar wat nou als je sensoren hebt die op plekken moeten kunnen functioneren waar je geen vaste netwerkaansluiting hebt of waar nog geen WiFi-netwerk ligt of geen netwerk waar jij toegang toe hebt? In het bos of gewoon in een stad zelfs?

Dan kun je kiezen voor een netwerktechnologie die een heel groot bereik heeft, zoals bij een LoraWAN of je kunt betalen om toegang te krijgen tot een WiFi-netwerk van een ander of een mobiel netwerk (via GPRS of 3G/4G).
Maar wat nou als het helemaal niet zo noodzakelijk is dat je verbinding maakt met de buitenwereld. Wat als je eigenlijk vooral wilt kunnen communiceren met andere nodes die bij jou in de buurt zijn? Bijvoorbeeld met andere robots (zoals in dit voorbeeld), of wellicht straks zelfs andere zelfsturende auto’s.

Dan is een mesh-netwerk een oplossing. Daarbij is elke node gelijkwaardig aan elkaar en is er geen specifieke infrastructuur voor de onderlinge communicatie nodig. Vroeger, toen al die netwerken via kabels moesten worden aangelegd, was dat moeilijk schaalbaar (alles met alles verbinden via kabels wordt al snel een warboel), maar tegenwoordig met draadloze netwerken (via WiFi, Bluetooth of wellicht straks via Lora) is dat veel eenvoudiger.

De demo hierboven is leuk, het laat goed een sterke eigenschap zien: valt een node uit, dan werken de anderen gewoon verder, komt er eentje bij, dan wordt hij automatisch in het Mesh-netwerk opgenomen. Maar het gaat hier wel om een heel naïef netwerk waarbij elke node automatisch ook de informatie van de andere nodes vertrouwd. En dat zal niet altijd het geval zijn. Ook moeten de pakketten data die rondgestuurd worden niet té groot worden anders is elke node voornamelijk bezig met het afhandelen van de data van de andere nodes.

De code voor bovenstaand voorbeeld is hier op Github te vinden.