Les protocoles LoRa et LoRaWAN ============================== Le |NETWORK_FULL_NAME| est un réseau LoRa qui permet d'employer le protocole LoRaWAN. Cet article explique les principes de ces deux technologies. LoRa ---- La norme LoRa définit une manière d'employer les ondes radio pour émettre des 0 et des 1 (et donc, avec ces 0 et ces 1, toutes sortes de nombres, qui servent à représenter toutes sortes de données comme par exemple du texte, des images, etc…). L'intérêt du LoRa est de permettre à des composants peu coûteux d'émettre un signal soit avec grande portée, soit avec un bon débit, avec une consommation électrique toujours très basse. Sans rentrer dans les détails de conception du LoRa, il faut savoir que celui-ci définit un *spreading factor* (:samp:`SF`, litt. facteur d'étalement, c'est-à-dire comment une donnée est étalée dans le temps au sein du signal radio), qui peut varier entre 7 et 12. Avec un SF de 12, la portée est la plus grande, pouvant aller jusqu'à **2km en milieu urbain et 20km en champ libre**, quand rien ne se trouve entre les deux antennes LoRa. En contrepartie, le débit est de 250 bits/s. Pour comparer, c'est 200 000 fois moins que le WiFi actuel, mais celui-ci a plutôt une portée de quelques dizaines de mètres et un dispositif LoRa peut espérer émettre pendant plusieurs années avec une seule petite batterie… Avec un SF de 7, la portée en milieu urbain est plutôt de 500m et le débit monte à 11 kbit/s. LoRaWAN ------- LoRaWAN, lui, définit un protocole réseau, c'est-à-dire qu'il se soucie uniquement de **quels 0 et 1 envoyer** (puisque LoRa s'occupe de savoir **comment envoyer des 0 et des 1**). Il définit comment construire des messages et dans quelles conditions on peut les envoyer (et les recevoir). LoRaWAN définit notamment plusieurs configurations par défaut pour LoRa, appelées :ref:`data-rates`. La structure de réseau LoRaWAN ------------------------------ En LoRaWAN, on distingue quatre éléments : - le dispositf - les passerelles - le serveur de réseau - le serveur d'application Un message LoRaWAN montant est émis par un :samp:`dispositif`, entendu par une ou plusieurs :samp:`passerelles` qui l'envoient au :samp:`serveur de réseau`. Celui-ci, qu'il reçoive le message une ou plusieurs fois, ne va l'envoyer qu'une seule fois au :samp:`serveur d'application`. .. image:: ./lorawan-network-struct.png Le serveur Wavebricks fournit à la fois les services du serveur de réseau et du serveur d'application. Et il peut être configuré par l'utilisateur pour transférer tous les messages qu'il reçoit à une application extérieure, qu'on appelle l':samp:`application métier`. Elle recevra les messages par :samp:`HTTP` au format :samp:`JSON`. Il existe une interface REST pour le configurer. Le message LoRaWAN ------------------ Surtout, le protocole LoRaWAN définit un format de message, permettant de faire les choses suivantes : - communiquer avec le serveur de réseau pour convenir des paramètres de la communication radio LoRa (avec un chiffrage cryptographique entre le dispostif et le serveur de réseau) - communiquer avec le serveur d'application (avec un chiffrage cryptographique entre le dispositif et l'application métier) - demander la confirmation qu'un message a bien été reçu - vérifier qu'un message reçu (par le dispositif, le serveur de réseau ou le serveur d'application) n'a subi aucune modification pendant le transfert (par un code d'intégrité de message cryptographique) Le format du message LoRaWAN ---------------------------- .. image:: ./msg-lorawan.png