LoRaWAN: un protocole réseau pour communiquer par radio avec les objets connectés

Attention, il faut distinguer LoRa et LoRaWAN. LoRa est un protocole propriétaire de communication radio. LoRaWAN est un protocole de communication réseau couplé à une infrastructure de passerelles (gateways) qui permet à de court messages émis par Radio d'être reçu par des serveurs d'applications sur Internet.

La page wikipedia FR est plutôt bien documentée ici, mais elle entremele LoRa et LoRaWAN : LoRaWAN .

LoRaWAN est un protocole de communication réseau.

cf Description des couches du protocoles LoRaWAN : https://www.rfwireless-world.com/Tutorials/LoRa-protocol-stack.html
cf Description de la couche MAC : https://www.rfwireless-world.com/Tutorials/LoRaWAN-MAC-layer-inside.html

Des gateways, des serveurs d'applications, … cf https://www.thethingsnetwork.org/docs/lorawan/

il existe différentes implémentations du protocole LoRaWAN.

Protocole de communication entre les gateways et les routers TTN

cf https://www.thethingsnetwork.org/docs/gateways/start/connection.html D'après TTN : Semtech à conçu le premier protocole de communication entre les gateways et un backend : le “Semtech UDP protocol”. Ce protocole n'est pas sécurisé, ne permet pas de s'assurer de l'identité d'une gateway, ou que le message reçu n'a pas été altéré. Pour palier à ces problèmes, TTN à conçu un nouveau protocole : le “Gateway connector protocol”. Néanmoins, vu la simplicité d'utilisation du protocol historique de Semtech, il est assez répandu (toujours d'après TTN).

Arduino

Pour Arduino, il existe des bibliothèques qui implémente le protocole.

Toutes les bibliothèques ne supportent pas tous les circuits du marché. Avant d'acheter un circuit compatible LoRaWAN, il faut vérifier qu'il existe une bibliothèque capable de le piloter, ou bien il faudra implémenter un driver pour le circuit.

TTN LoRaWAN stack

TTN a développé une “stack”. C'est un ensemble de services (serveurs) qui sont déployable sur un réseau privés et qui permettent de recevoir, de router, et d'administrer des données provenant de gateway LoRaWAN. cf https://github.com/TheThingsNetwork/lorawan-stack

Documentation pour déployer une stack LoRaWAN ttn privé avec docker : https://www.thethingsnetwork.org/article/setting-up-a-private-routing-environment

La communication radio est sujette à différentes menaces. Voici un document édité par trendmicro qui classes les attaques possibles en 5 classes : Et voici des contre mesures envisageables :

Each LoRaWAN device is personalized with a unique 128 bit AES key (called AppKey) and a globally unique identifier (EUI-64-based DevEUI), both of which are used during the device authentication process. Allocation of EUI-64 identifiers require the assignor to have an Organizationally Unique Identifier (OUI) from the IEEE Registration Authority. Similarly, LoRaWAN networks are identified by a 24-bit globally unique identifier assigned by the LoRa Alliance™.

Dans l'architecture TTN actuelle, un émetteur LoRa n'a pas accès à Internet. Il envoie un message avec une structure de données spécifiques pour une gateway TTN LoRaWAN. L'émetteur n'utilise pas d'autre protocole de communication supplémentaire. La gateway transmet ensuite ce message à un serveur TTN via Internet qui se charge de le dédupliquer et le router vers une “application”. L'application par défaut publie ce message au format json dans le topic dédié d'un broker MQTT de TTN.

TTN workflow

  • Il faut créer une application sur TTN
  • Il faut attacher son device à son application
  • Lorsque la TTN gateway reçoit un message LoRa elle le transmet à TTN, qui le route vers une application en fonction de l'adresse non unique du device dev_aadr et de la MIC qui permet de retrouver de façon unique l'emetteur.
  • TTN pousse alors par defaut le message au format json dans une file MQTT.

Pour commencer à jouer, on peut utiliser les 2 transceivers sx1276 tel le RAK45. Néanmoins, pour des raisons de simplicités, et pour pouvoir nous permettre d'offrir un service plus robuste avec plusieurs canaux de communication, il faut disposer d'un concentrateur disposant de 8 canaux :

Un super guide de TTN suisse pour construire une gateway LoRaWAN : https://github.com/ttn-zh/ic880a-gateway/wiki.

CayenneLPP est une bibliothèque largement supporté qui permet de transporter des messages avec des tailles les plus réduites possibles. cf https://mydevices.com/cayenne/docs/lora/#lora-cayenne-low-power-payload

La documentation fournit par the TTN est interessante : The TTN doc . On y trouve notament le framework Arduino pour envoyer des messages via LoRaWAN en quelques lignes de code : Framework Arduino LoRaWAN .

Guides pour construire une gateway LoRaWAN :

Liste des gateway LoRaWAN existantes : https://www.thethingsnetwork.org/docs/gateways/start/list.html

Code Arduino pour une Single channel LoRaWAN Gateway basé sur un ESP32 : https://github.com/things4u/ESP-1ch-Gateway-v5.0

  • lorawan.txt
  • Dernière modification: 2019/02/12 11:14
  • par bigMax