Dans mon précédent tutoriel, j’ai présenté Meshtastic. Cette plateforme open-source de communication sans fil qui s’appuie sur la technologie LoRa et permet de créer des réseaux maillés décentralisés et autonomes.
Dans ce nouveau tutoriel je vais présenter Gaulix, un réseau Français ouvert, structuré et harmonisé basé sur Meshtastic.
Les développeurs de Gaulix ont choisi de ne pas utiliser les réglages par défaut de Meshtastic et ont établi quelques règles afin de structurer le réseau et de faciliter son interopérabilité.
Optimisation des réglages par défaut
Les développeurs de Gaulix ont opté pour le préréglage de modem (modem preset) « LONG_MODERATE » au lieu du préréglage « LONG_FAST » proposé par défaut. Ce choix vise à privilégier la robustesse et la portée des communications, au détriment de la vitesse de transmission.
Ils ont également décider d’utiliser la fréquence de 869,4625 MHz, légèrement inférieure à la fréquence par défaut de 869,525 MHz. Ce décalage vers la partie basse de la bande vise à s’éloigner des potentielles interférences générées par des réseaux commerciaux exploitant le protocole LoRaWAN.
Remarque : Meshtastic n’utilise pas le protocole LoRaWAN, bien que les deux technologies reposent sur la même modulation radio LoRa. En France, Meshtastic et LoRaWAN exploitent principalement le bande radio ISM 868 MHz.
Définition de quelques règles
Les développeurs de Gaulix on tout d’abord défini une règle de nommage unifiée pour les nœuds. Cela simplifie l’identification d’un nœud, en intégrant son rôle (client, routeur, répéteur…) et sa localisation (ville, département). Le générateur de nom Gaulix permet de définir facilement le nom d’un nœud.
Trois canaux (Fr_BlaBla, Fr_Balise et Fr_EMCOM) sont disponibles par défaut. Il s’agit de canaux communs partagés et réservés aux communications générales entre les membres du réseau Gaulix. Il est bien entendu possible de créer des canaux pour les réseaux locaux ou privés.
Création d’un nœud Gaulix sur un module Heltec V3
La procédure est relativement simple et particulièrement bien documentée sur le site Gaulix, elle est composée de 2 étapes principales :
- Installation du firmware Meshtastic
- Paramétrage du nœud Gaulix
L’installation du firmware Meshtastic sur le module Heltec V3 est triviale, elle s’effectue avec le navigateur Chrome à partir de cette URL : https://flasher.meshtastic.org
Le paramétrage du nœud Gaulix est également triviale, il suffit de scanner le QR Code fourni sur le site Gaulix dans la section Gaulix pour les Noobs !. Ce QR code permet de paramétrer la partie ‘Channels’ et ‘LoRa’, il faut configurer d’autres paramètres comme indiqué dans cette même section Gaulix pour les Noobs!. Ces autres paramètres à modifier sont rappelés dans le tableau ci-dessous :
Menu | Paramètre | Valeur |
---|---|---|
User | Long name | (1) |
User | Short name | Libre |
Device | Rebroadcast mode | LOCAL_ONLY |
Device | NodeInfo broadcast interval | 14400 |
Position | Position broadcast interval | 28800 |
Position | Smart position enabled | Non |
Position | Use fixed position | Oui |
Position | Latitude | Votre latitude |
Position | Longitude | Votre longitude |
Position | Altitude | Votre altitude |
(1) Gaulix utilise des noms normalisés, il faut définir la partie longue (‘Long name‘) de votre nœud Gaulix en utilisant le générateur de nom Gaulix.
Votre nœud Gaulix est maintenant prêt à être utilisé et peut communiquer avec les autres nœuds du réseau Gaulix.
Communiquer avec les autres nœud Gaulix
Gaulix est un réseau maillé basé sur LoRa, ainsi vous pouvez communiquer avec un autre nœud Gaulix qui est à portée de votre radio ou qui est joignable via le maillage du réseau.

De base vous pouvez communiquer sur un des 3 canaux communs partagés de Gaulix :
- Fr_BlaBla : canal de discussion libre, utilisé pour les discussions générales, les échanges non critiques ou conviviaux.
- Fr_Balise : canal de balises automatisées, utilisé par la transmission de position ou télémétrie
- Fr_EMCOM : canal d’urgence, utilisé pour les messages prioritaires (situation d’urgence, secours, situation de crise…)

Pour tester Meshtastic j’ai acquis 2 modules Heltec V3, sur lesquels j’ai installé Meshtastic et configuré les paramètres du réseau Gaulix. Ces 2 modules étant situés à proximité ils sont à portée radio LoRa et peuvent donc communiquer directement entre eux.
Puisqu’il s’agit d’un message de test, je vais envoyer mon premier message, intitulé « Test depuis H2 », sur le canal Fr_BlaBla. Ce message est transmis du nœud portant le nom court « H2 » vers le nœud nommé « H1 ». On peut observer que le message s’affiche simultanément sur l’application smartphone ainsi que sur l’écran du module Heltec.


Configuration du serveur MQTT
Le projet Meshtastic fournit un service MQTT public auquel les utilisateurs peuvent se connecter. Ce service sert à étendre et à interconnecter le réseau maillé LoRa au-delà de ses limites physiques. Grâce à MQTT, il est possible de créer un réseau global en interconnectant des réseaux LoRa locaux, même s’ils ne sont pas à portée radio l’un de l’autre.

Gaulix fournit un serveur MQTT spécifique. Il permet de joindre des nœuds du réseau Gaulix qui ne sont pas à portée radio de votre ‘bulle radio’ locale.
Il faut commencer par s’enregistrer sur le site Gaulix.fr, c’est gratuit. Vous obtenez un identifiant et un mot de passe MQTT, qui seront disponibles sur la page de votre profil. Il faut ensuite activer le Wi-Fi sur votre module Heltec V3 et configurer le serveur MQTT avec ces identifiants.
Note : Après avoir configuré le Wi-Fi sur votre module Heltec V3, il ne lui sera plus possible de communiquer avec votre smartphone via Bluetooth (le Wi-Fi et le Bluetooth de l’ESP32 ne peuvent pas être utilisés en même temps). Vous devez communiquer avec lui en Wi-Fi, votre nœud apparaît dans l’application sous la forme de son adresse IP (ex: 192.169.1.23).
Un fois connecté au serveur MQTT Gaulix, les nœuds Gaulix découverts via MQTT vont apparaître dans votre liste des contacts ainsi que sur la carte dans l’application de votre smartphone.


Vous pouvez également voir l’emplacement des nœuds Gaulix sur la carte des nœuds Gaulix. Les nœuds Gaulix sont également affichés sur la carte de tous les nœuds Meshtastic, il est facile de les reconnaître grâce à leur nommage normalisée et leur préréglage de modem LONG_MODERATE.


Note : Certains modules (nRF52840) n’intègrent pas le Wi-Fi et il n’est donc pas possible de se connecter à un serveur MQTT en Wi-Fi depuis ce type de nœud. Il faut activer le paramètre Proxy to client enabled dans la partie MQTT (voir ci-dessous), la connexion au serveur MQTT se fait alors via votre Smartphone en Bluetooth.
Les paramètres MQTT
La configuration des paramètres MQTT pour le réseau Gaulix est parfaitement expliquée sur cette page. Je me permets tout de même de rajouter quelques liens et explications concernant les principaux paramètres.
Paramètres configurés dans la partie ‘MQTT‘ :


- MQTT enabled : active le service MQTT sur votre nœud.
- Address : adresse du serveur MQTT, le serveur MQTT Gaulix a pour adresse mqtt.gaulix.fr
- Username : votre identifiant fourni lors de l’inscription au site gaulix.fr
- Password : votre mot de passe fourni lors de l’inscription au site gaulix.fr
- Encryption enabled : Indique s’il faut envoyer des paquets chiffrés ou non chiffrés au serveur MQTT (voir ce que signifie chiffrement sur Wikipédia si vous ne connaissez pas cette notion).
- JSON output enabled : active l’envoi/la consommation de paquets JSON sur MQTT. JSON est un format de données textuel répandu qui permet d’échanger des données entre les différents systèmes.
- TLS enabled : la connexion MQTT est sécurisée à l’aide du protocole TLS.
- Root topic : MQTT utilise des ‘topics‘ pour organiser et filtrer les messages échangés. Ils sont structurés comme des chemins de dossiers. Par exemple ‘maison/salon/température‘ et ‘maison/salon/humidité‘ sont deux ‘topics‘ ayant ‘maison‘ comme ‘topic‘ racine.
- Proxy to client enabled : permet au nœud de communiquer en MQTT non pas au travers de sa connexion Wi-Fi mais au travers de sa connexion Bluetooth avec votre Smartphone.
- Map reporting : envoi des informations de votre nœud (nom, position, rôle…) au serveur MQTT pour qu’il les affiche en ligne sur la carte des nœuds MQTT Meshtastic.
- Precise location : envoi la position du nœud avec précision ou dans un cercle de rayon défini.
- Map reporting interval (seconds) : fréquence d’envoi des informations du nœud vers le serveur MQTT.
Paramètres configurés dans la partie ‘LoRa‘ :

- Ignore MQTT : ce paramètre contrôle la façon dont le nœud gère les messages ayant transité par le réseau MQTT avant d’arriver sur le réseau LoRa. Activer cette option signifie que l’appareil ignorera tous les messages qu’il reçoit via LoRa et qui ont transité par MQTT à un moment donné avant d’arriver jusqu’à lui.
- OK to MQTT : ce paramètre indique que l’utilisateur autorise ou non la transmission des messages LoRa locaux vers un serveur MQTT. Si ce paramètre est désactivé, le nœud reste alors isolé du réseau global et ne partage ses données qu’au sein du réseau LoRa local.
Paramètres configurés dans la partie ‘Channels‘ :

- Uplink enabled : valide l’envoi des messages pour le canal sélectionné vers le serveur MQTT.
- Downlink enabled : valide l’envoi en LoRa sur le canal sélectionné d’un message provenant de MQTT.
Rôle CLIENT ou CLIENT_MUTE
Un nœud Meshtastic peut jouer différents rôles, choisir le rôle correspond à l’usage de votre nœud est essentiel à l’efficacité du réseau maillé. Cette page et cette vidéo (en anglais) explique en détails ces rôles. Ici je vais juste expliquer les rôles CLIENT et CLIENT_MUTE, car ce sont probablement les rôles que vous allez utiliser pour débuter sur le réseau Gaulix.
CLIENT est le rôle par défaut dans Meshtastic, et le plus polyvalent. Lorsqu’un nœud est configuré avec le rôle CLIENT, il peut envoyer, recevoir, mais aussi répéter (relayer) et router les messages d’autres appareils du réseau. Ce type de nœud permet d’étendre la portée du réseau et d’assurer une meilleure couverture, car chaque CLIENT peut aider à transmettre les messages d’autres utilisateurs. Ce rôle est recommandé pour les appareils qui sont bien placés (par exemple, sur un toit ou dans une zone dégagée) et lorsqu’il y a peu de nœuds autour.
Le rôle CLIENT_MUTE est similaire au rôle CLIENT, mais avec une différence clé : il ne répète ni ne route les messages des autres appareils. Un nœud CLIENT_MUTE peut uniquement envoyer et recevoir ses propres messages, mais il ne contribue pas à la transmission des messages d’autres nœuds. Ce rôle est recommandé dans les environnements à forte densité de nœuds. Cela permet de réduire la congestion du réseau, et d’éviter que trop de nœuds ne relaient les mêmes message.
Pour l’instant la densité du réseau Gaulix est faible, et vous aurez probablement peu de nœud autour de votre position. Aussi je vous conseille d’utiliser le rôle CLIENT, c’est d’ailleurs le rôle par défaut pour Gaulix. Cependant, si comme moi vous avez plusieurs nœuds chez vous pour découvrir les possibilités de Meshtastic, je vous invite à configurer un nœud en CLIENT et de configurer les autres en CLIENT_MUTE.
Attention, si vous êtes débutant, évitez d’utiliser les rôles ROUTER, ROUTER_LATE ou REPEATER. La mauvaise utilisation de ces rôles peut avoir un impact négatif sur le réseau. En effet, un message peut atteindre son destinataire en effectuant un nombre limité de saut, configuré par le paramètre “hop limit“. Le passage par un routeur compte comme un saut, et il faut donc limiter le nombre de routeur, qui doivent rester le plus éloigner possible les uns des autres.
Dans l’exemple illustré ci-dessous, le message arrive bien dans le premier cas après avoir traversé 3 routeurs. Mais dans le second cas, un nœud supplémentaire a été configuré en ROUTER. Cela va réduire la portée du réseau maillé, car le message va atteindre son nombre de saut maximum avant d’avoir atteint sa destination. On voit sur le troisième cas que si ce nœud supplémentaire avait été configuré en CLIENT, il n’aurait pas créé cet impact négatif sur le maillage. Il aurait pu relayer les messages (car un client peut relayer les messages), mais comme le ROUTER est prioritaire, le message est passé par le ROUTER.



Conclusion
J’espère que cette petite introduction au réseau Gaulix vous aura donné envie de rejoindre cette communauté. En effet, Gaulix n’est pas seulement un réseau, c’est aussi une communauté active, où se rencontrent des passionnés de technologie. Vous pouvez rejoindre le groupe de discussion Gaulix sur Telegram ou Discord.