Comment connecter les milliards de capteurs qui seront potentiellement déployés dans le monde et qui participeront à la construction des villes intelligentes, de la mobilité et de l’industrie du futur ?
Il n’y a évidemment pas qu’une seule réponse mais une d’entre elles se trouve assurément du côté des LPWAN.
Les LPWAN sont des réseaux sans fils basse consommation, bas débit et longue portée, optimisés pour les équipements aux ressources limitées pour lesquels une autonomie de plusieurs années est requise. Ces réseaux conviennent particulièrement aux applications de l’Internet des Objets qui n’exigent pas un débit élevé.
Je vous avais présenté dans mon précédent article sur le sujet, plusieurs réseaux LPWAN parmi lesquels le réseau LoRaWAN. Je manquais alors d’expérience pratique pour juger des performances réelles de ce réseau. Après quelques mois de prototypage et surtout après le développement de mon propre réseau LoRaWAN, je vous propose de vous présenter, plus en détail, ce réseau qui prend de plus en plus de place dans le paysage de l’Internet des Objets.
La modulation LoRa et le protocole LoRaWAN
Pour rappel, LoRaWAN (Long Range Radio Wide Area Network), est un protocole réseau bas débit et longue portée basé sur la technologie radio LoRa.
La technologie LoRa opère dans les bandes de fréquences ISM (autour de 868 MHz pour l’Europe) et utilise une modulation à étalement de spectre – une variante de la modulation chirp spread spectrum pour être plus précis. L’utilisation de cette modulation offre des performances optimisées en terme de portée, en augmentant significativement la robustesse du signal et la sensibilité du récepteur tout en conservant une faible consommation d’énergie.
Utilisée auparavant pour les communications spatiales et militaires, cette modulation est particulièrement performante pour les communications longue portée et bas débit.
La portée d’une communication LoRa est déterminée par sa bande passante, la puissance de sortie du signal ainsi que par le facteur d’étalement utilisé – Spreading Factor (SF). L’étalement du signal augmente sa portée, au détriment du débit car il est transmis sur une plus longue période. Au détriment également de l’autonomie de l’équipement car la communication radio est énergivore ! Par conséquent une communication plus longue implique une consommation d’énergie plus importante. Je vous propose ci-dessous un schéma illustrant l’impact de l’étalement du signal sur la portée et sur le débit d’une communication LoRa (pour la bande 868 MHz).
Un réseau LoRaWAN, s’appuyant une modulation LoRa dans la bande de fréquence 868 MHz, supporte 6 facteurs d’étalement (SF7, SF8, SF9, SF10, SF11, SF12) comme le montre le schéma ci-dessus. Sachez que l’orthogonalité des SF permet la réception de plusieurs signaux en parallèle sur le même canal. Par défaut, le réseau doit au minimum supporter les trois canaux suivants (de 125 KHz de bande passante chacun) : 868,10 ; 868,30 et 868,50 MHz.
À ce propos, Semtech propose un outil qui calcule les performances estimées d’une communication LoRa en fonction des différents paramètres (SF, bande passante, fréquence, etc.).
D’autres mécanismes, comme la variation de la fréquence à chaque émission, contribuent également à la robustesse d’une communication LoRa. Si vous souhaitez creuser le sujet de la modulation LoRa, je vous invite à consulter ce document.
Pour reprendre la terminologie du modèle OSI, la technologie LoRa représente donc la couche physique d’un réseau LoRaWAN, définissant le lien radio entre les équipements et les concentrateurs appelés respectivement les end-devices et les gateways dans les spécifications LoRaWAN.
A ce sujet, je vous présenterai, plus loin dans l’article, un schéma illustrant l’architecture d’un réseau LoraWAN. Avant cela, ci-dessous, je vous livre un schéma illustrant les différentes couches d’un réseau LoRaWAN.
Deux équipements LoRa peuvent communiquer en P2P sans nécessairement passer par un réseau. Cependant, pour que ces équipements communiquent à travers un réseau, l’implémentation de la seule couche physique n’est plus suffisante. C’est ainsi que LoRaWAN définit le protocole réseau (LoRa MAC), pour une communication d’équipements LoRa à travers un réseau.
En s’appuyant sur les performances de la modulation LoRA, le protocole LoRaWAN assure des communications bidirectionnelles et définit ainsi trois classes d’équipements : Classe A, B et C. La différence entre ces classes réside essentiellement dans le nombre de fenêtres allouées par l’équipement pour la réception des messages envoyés par le réseau.
Chaque équipement LoRaWAN est au minimum compatible avec la classe A ; le support des autres classes est optionnel. Pour une description détaillée de ces classes, je vous renvoie à mon article sur les LPWAN.
Afin d’optimiser davantage la capacité du réseau, le protocole LoRAWAN prévoit un débit adaptatif – ADR – compris entre 0,3 et 50 kbits par seconde. En fait, le réseau est en mesure d’ajuster le débit des communications et la puissance de sortie de chaque équipement en fonction de sa couverture radio, assurant de ce fait une gestion optimisée des ressources et de la capacité du réseau.
Architecture d’un réseau LoRaWAN
La topologie d’un réseau LoRaWan est en étoile : les équipements – appelés end-devices – communiquent en LoRa avec des concentrateurs – appelés gateways. Ces concentrateurs centralisent les messages pour les transmettre au serveur de gestion du réseau. La liaison entre les concentrateurs et le serveur de gestion du réseau s’appuie sur des technologies très haut débit (Ethernet, 4G,…).
Toute l’intelligence, à savoir la gestion du débit adaptatif, de la sécurité des données ou encore de la redondance des données reçues, est assurée par le serveur du réseau. Enfin, ce dernier communique avec un ou plusieurs serveurs applicatifs au travers desquels les fournisseurs d’applications exploitent les données de leur(s) équipement(s).
Car en effet, une des particularités d’un réseau LoRaWAN, est qu’un équipement ne communique pas exclusivement à travers un concentrateur. Tous les concentrateurs couvrant l’équipement peuvent recevoir les données transmises par ce dernier.
Cela facilite grandement la communication avec les équipements en mobilité en dispensant le réseau de mécanismes de hand-over (passage d’un concentrateur à un autre) qui auraient pour effet de complexifier sa gestion et très probablement de réduire ses performances. Par contre, lorsque le serveur envoie un message à destination d’un équipement, c’est par le biais d’un seul concentrateur. C’est le cas en particulier des messages requérant un acquittement par le serveur.
La sécurité d’un réseau LoRaWAN
Maintenant que nous connaissons l’architecture d’un réseau LoRaWAN, une question essentielle reste à traiter : celle de la sécurité. Que ce soit pour assurer la sécurité du réseau ou pour garantir la confidentialité et la sécurité des données, la question de la sécurité est extrêmement importante. Une question qui, soit dit en passant, concerne l’Internet des Objets dans son ensemble.
Pour assurer la sécurité du réseau et des données, le réseau LoRaWAN a recours à deux chiffrements AES-128. Le premier via la clé de session réseau – Network Session Key (NwkSKey) – assure l’authenticité des équipements sur le réseau ; quant au deuxième chiffrement, il assure via la clé de session applicative – Application Session Key (AppSKey) – la sécurité et la confidentialité des données transmises à travers le réseau.
En d’autre termes, la clé réseau permet à l’opérateur de sécuriser son réseau alors que la clé applicative permet au fournisseur de l’application de sécuriser les données qui transitent à travers le réseau.
Les données utiles que souhaite transmettre l’équipement sont tout d’abord chiffrées via la clé de session applicative. Un en-tête, contenant entre autres l’adresse de l’équipement, est ensuite ajouté aux données chiffrées. À partir de cette concaténation, le MIC – Message Integrity Code – est calculé via la clé de session réseau. Le MIC permet au réseau de vérifier l’intégrité des données et de l’équipement sur le réseau. Enfin, le MIC est ajouté au message contenant l’en-tête et les données chiffrées avant transmission.
À réception du message par le serveur de gestion du réseau, ce dernier pourra vérifier l’intégrité des données grâce au MIC tout en préservant la confidentialité des données (chiffrées par la clé de session applicative).
Pour illustrer cela, je vous ai préparé un petit schéma :
Logiquement, la clé applicative n’est connue que du fournisseur de l’application en question, évitant ainsi qu’un tiers – l’opérateur compris – puisse consulter les données. La clé réseau, pour sa part, est communiquée par l’opérateur du réseau aux fournisseurs d’applications autorisés.
Ces clés permettent de sécuriser les données transmises par les équipements à travers le réseau mais elles sont également indispensables à leur activation sur le réseau.
Activation d’un équipement LoRaWAN
Avant toute communication à travers un réseau LoRaWAN, les équipements doivent obtenir les clés de session, en suivant une procédure d’activation au choix parmi deux méthodes : Over-The-Air Activation (OTAA) ou Activation By Personalization (APB).
Activation par la méthode OTAA
Pour activer un équipement sur le réseau par la méthode OTAA, l’équipement doit transmettre au réseau une demande d’accès : join request. Pour ce faire, celui-ci doit être en possession de trois paramètres :
- Le DevEUI, identifiant unique (de type EUI 64) de l’équipement (fourni par l’équipementier).
- AppEUI, identifiant du fournisseur de l’application (EUI 64).
- AppKey, clé AES 128 déterminée par le fournisseur de l’application.
L’équipement envoie, à travers le réseau, la requête join request, contenant DevEUI, AppEUI ainsi qu’un MIC calculé via la clé AppKey. Cette requête est transmise au serveur d’enregistrement qui vérifie le MIC via la clé AppKey (qui lui a été communiquée au préalable). Si l’équipement est autorisé par le serveur d’enregistrement, la requête join accept est transmise en réponse à l’équipement.
Cette réponse contient des données à partir desquelles l’équipement va pouvoir calculer les clés de session (réseau et applicative). Parmi les données contenues dans cette réponse, se trouve également l’adresse – Device Adress (DevAddr) sur 32 bits – qu’utilisera l’équipement pour communiquer sur le réseau.
A chaque nouvelle session, les clés de session sont renouvelées.
Je vous rappelle que tous ces mécanismes sont gérés par les serveurs de gestion et d’enregistrement. Les concentrateurs, pour leur part, relaient toutes les données transmises par les équipements présents dans leur zone de couverture, qu’ils soient activés ou non.
Activation par la méthode APB
Pour la seconde méthode, APB, les clés de session NwkSKey et AppSKey ainsi que l’adresse de l’équipement (DevAddr) sont directement inscrits dans l’équipement LoRaWAN. Ainsi, l’équipement n’a plus besoin d’envoyer de requête avant de communiquer sur le réseau. L’utilisation de cette méthode implique que les équipements communiquent avec un réseau spécifique car les clés de session sont connues par avance. Et contrairement à la méthode OTAA, les clés de session sont statiques.
En résumé, la méthode OTAA est plus complexe à implémenter que la méthode APB mais offre un niveau de sécurité supérieur. Dans le cas d’un prototypage ou pour une utilisation sur un réseau connu, la méthode APB suffit largement. Par contre, lorsqu’un déploiement à plus grande échelle est envisagé, il est conseillé d’utiliser la méthode OTAA, plus sécurisée et plus agile.
Réseaux publics VS réseaux privés
Vous pouvez, moyennant le paiement d’un abonnement, connecter vos équipements à un réseau LoRaWAN dit public ; traditionnellement proposé par les opérateurs de téléphonie mobile. À ce jour en France, Orange et Bouygues Telecom proposent tous deux une offre pour l’utilisation de leur réseau LoRaWAN avec l’accès à une plateforme pour la récupération des données.
Même si des opérateurs télécom déploient des réseaux LoRaWAN, il est tout à fait possible pour un particulier, une entreprise ou même une ville, de déployer son propre réseau LoRaWAN. Et détrompez vous, cela n’a rien d’insurmontable.
Tout d’abord, contrairement aux réseaux mobiles, les bandes de fréquences sont libres. Toutefois, elles sont régulées : vous devez notamment respecter un certain temps d’occupation des canaux spectraux (duty cycle). Autrement dit, vous ne pouvez pas communiquer sans interruption ou à très haute fréquence des données.
Ensuite le coût d’infrastructure est plutôt abordable. Bien sûr, il ne s’agit pas de couvrir tout le pays avec son réseau LoRaWAN mais deux concentrateurs peuvent largement suffire à couvrir quelques kilomètres. Le prix d’un concentrateur peut varier de 200 à 2000$ selon les options et les fonctionnalités qu’il propose.
Enfin, en ce qui concerne le serveur applicatif, vous pouvez développer le vôtre ou utiliser celui d’un tiers. Bien entendu, déployer son propre réseau pour y connecter une dizaine d’équipements ne sera pas une opération rentable…
Les applications LoRaWAN
Compte tenu de ses performances en termes de portée et d’autonomie des équipements, le réseau LoRaWAN permet le déploiement et la remontée de données de capteurs en tout genre (qualité de l’air, remplissage des poubelles, détecteur de présence, …). L’exploitation de ces données ouvre des perspectives considérables dans de nombreux domaines que ce soit pour la gestion des ressources, pour l’optimisation des déplacements ou encore pour l’augmentation de la productivité.
Par exemple, un simple détecteur de présence, qui remonterait l’information d’occupation d’une salle permettrait aux gestionnaires de bâtiments qu’ils soient privés (ruche d’entreprises) ou publics (équipements sportifs) d’optimiser l’utilisation de leurs ressources. Autre exemple, avoir l’information du remplissage des bennes à ordures permettrait le développement d’applicatif d’optimisation des tournées de récolte avec la possibilité d’adapter les véhicules selon les itinéraires de récolte.
Je pourrais encore vous énoncer de nombreux exemples d’applications potentielles pour la maintenance prédictive, la mobilité intelligente, etc. pour lesquelles les réseaux LoRaWAN conviennent parfaitement (à la condition que celles-ci ne nécessitent pas une communication haut débit ou trop fréquente) ; mais j’espère que la lecture de cet article vous a donné l’envie de développer des solutions encore plus novatrices !
Vous trouverez en vous rendant sur ce lien, un panel de fournisseurs d’équipements LoRaWAN pour développer vos prototypes.
À ce propos, pour les prototypeurs basés à Lille, une plateforme de test et d’expérimentation LoRaWAN est ouverte et accessible à toutes les entreprises de l’écosystème d’EuraTechnologies.
Comme d’habitude, si des erreurs se sont glissées dans l’article, n’hésitez pas à nous en faire part.
Pour être informé des prochains articles, rendez-vous sur Twitter.
Merci, et à très bientôt sur Frugal Prototype
Ali Benfattoum
Intrapreneur, Tech Enthusiast, IoT Expert, Smart City Specialist…
Suivez moi sur @alifrugal
Related Posts
26 décembre 2015
Les LPWAN – Ces nouveaux réseaux de l’Internet des Objets
Avec l'avènement de l'IoT et les…
7 décembre 2015
Quels protocoles applicatifs pour l’Internet des Objets ?
Les outils de développement et de…
Excellent explication !!!
Merci d’avoir pris le temps de partager toutes ces explications très utiles.
Peux tu donner d’autres exemple d’application du LoRaWAN autres que ceux que tu as déjà énuméré. Je sais par exemple qu’il pourrait être utilisé pour les systèmes de télé-parking ou télé-relevé de compteur d’eau. As-tu d’autres idées ?
Merci Thibaud pour ton message. En effet, le LoRaWAN et plus généralement les LPWAN sont particulièrement adaptés à toutes les applications pour lesquelles une grande autonomie énergétique des équipements (une faible consommation) et une longue portée sont requises mais qui ne nécessitent pas un débit élevé. C’est le cas comme tu l’évoques, des applications de télé-relève ; de maintenance (prédictive) des équipements (en remontant régulièrement les paramètres des équipements) ou encore de tracking ou de gestion d’actifs. Sur ce point, le LoRaWAN permet une géolocalisation sans GPS. Les domaines d’applications sont nombreux : santé, smart cities, industrie, mobilité, retail (bouton push par exemple), etc…
Bonjour,
J’ai une question qui me turlupine :
en lisant : https://www.thethingsnetwork.org/forum/t/pcb-arduino-pro-mini-rfm95w-18650-lipo-with-freq-ua-deep-sleep-and-solar-chargeable/13249/2
il dit dans les commentaires:
« I only use a single channel gateway, so if you use a full GW, you must uncomment the block with “LMIC_setupChannel” and delete my definitions! »
et dans le .ino,on trouve :
// Set up the channels used by the Things Network, which corresponds
// to the defaults of most gateways. Without this, only three base
// channels from the LoRaWAN specification are used, which certainly
// works, so it is good for debugging, but can overload those
// frequencies, so be sure to configure the full frequency range of
// your network here (unless your network autoconfigures them).
// Setting up channels should happen after LMIC_setSession, as that
// configures the minimal channel set.
// NA-US channels 0-71 are configured automatically
// LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI); // g-band
// LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
// LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK, DR_FSK), BAND_MILLI); // g2-band
LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(1, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI); // g-band
LMIC_setupChannel(2, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(3, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(4, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(5, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(6, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(7, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(8, 868100000, DR_RANGE_MAP(DR_FSK, DR_FSK), BAND_MILLI); // g2-
donc la différence entre mono et multi c’est juste que la mono affecte une seule fréquence por tous les SF
alors qu’une multi affecte pour chaque SF un canal !
C’est bien ça ?
Donc on pourrait couvrir une zone en mono canal mais on va saturer la fréquence unique assez rapidement
Questions subsidiaires :
Peut-on associer 8 passerelles mono canal affectées chacune à une des 8 fréquences pour fabriquer l’équivalent d’une multi canal 7canaux ?
(le prix de 8 mono étant très inférieur à une seule multi)
Et peut-on (par exemple) commencer par une mono canal couvrant toutes les fréquences
puis quand vient la saturation ,mettre deux mono canal en attribuant une moitié des fréquences à chacune , etc …?
Et faire croitre son réseau au fur et à mesure de la demande.
merci de ta réponse.
Bonjour Bernard,
Je t’avoue que je ne suis pas en capacité de répondre à ta question sans me plonger plus sérieusement dans ta problématique.
Bien à toi
Ali
Bonjour,
concernant AppEUI et AppKey, lorsque l’on est sur un reseau public, est il possible de mettre ce que l’on veut, je veux dire une valeur aléatoire ? si non, qui doit fournir ces valeurs ?
merci
Bonjour
Merci infiniment pour cet effort. Je voudrais vous demander l’autorisation d’utiliser quelques passage de cet article sur mon mémoire de fin d’études, en effet je traite la sécurité LoRa par théorie du chaos.
Merci
Bonjour,
Merci pour cet article très clair. Cependant, je n ai du mal à voir comment il est possible de concilier un respect du fair use (qq dizaines de messages par jour) avec des devices de type détecteur de présence (qui enverrait J imagine plus milliers de messages par jour).
Si je compte 10h de travail par jour (3600×10) et un fair use a 200 messages par jour ça fait un message toutes les 180 secondes, soit 3 minutes. Donc une info moyennement fiable pour savoir si une salle de réunion est vraiment occupée ou pas. Ça marche comme t ?
Il faut mettre une gateway locale et augmenter le nombre de messages autorisés (quite a saturer des bandes fréquences communes… Bof bof)?
Merci pour les infos
J ai oublié d intégrer le duty cycle a 0. 05%, du coup c est bien pire
Tres bel article! Merci