Se connecter à un réseau LoRaWAN : comment ça se passe ? ========================================================= J'ai dans les mains un dispositif embarqué avec un module LoRa, je suis à portée |OF_NETWORK| |NETWORK_FULL_NAME| et je souhaite m'y connecter puis envoyer des messages à un serveur connecté à Internet. Voici dans le principe comment cela va fonctionner. D'abord, se connecter ---------------------- Pour connecter mon dispositif, j'ai deux options, un peu comme avec n'importe quel réseau : le faire à la main ou laisser la configuration se faire automatiquement. La configuration manuelle s'appelle :samp:`ABP` (pour *activation by personalization*) et l'automatique s'appelle :samp:`OTAA` (pour *over the air activation*). Dans les deux cas, je me rends sur l'interface Wavebricks, pour m'assurer que le nouveau dispositif sera reconnu. Ensuite, émettre ----------------- Une fois le réseau rejoint, je peux émettre des messages. Une fois le dispositif en place, je peux tester différents débits. Plus le débit est bas, plus mon signal portera loin. Bien sûr, plus le débit est bas, plus il me faudra de temps pour envoyer un message donné. C'est très important car, en LoRa, mon dispositif n'a le droit d'émettre que pendant 0,1 ou 1% du temps, selon la bande de fréquence employée. .. todo:: mettre des exemples chiffrés de portée et de temps d'émission Respecter ce « temps de parole » (appelé *duty cycle* ou rapport cyclique) est de la responsabilité du dispositif, c'est pourquoi certaines piles LoRaWAN refuseront d'envoyer des messages en cas de dépassement. Je dois donc calculer à l'avance le volume de messages que je prévois d'envoyer pour éviter que des messages ne se voient rejetés par les composants de mon dispositif. Si mon dispositif émet plus que son temps de parole, le |NETWORK_FULL_NAME| m'en avertira et se réservera le droit de rejetter tout ou partie des messages de ce dispositif. cf. :doc:`charte` Contrairement à beaucoup d'autres types de réseau, je n'ai pas à préciser qui est le destinataire des messages de mon dispositif, car il est tout le temps le même, en l'occurrence le composant Wavebricks que j'ai configuré pour mon dispositif. Pour limiter le temps nécessaire à l'envoi de données, il est nécessaire de concevoir les messages pour minimiser autant que possible leur taille. cf. :doc:`compression` Le trajet d'un message dans le réseau LoRa ------------------------------------------ Quand mon dispositif envoie un message :schema_number:`❶`, celui-ci va être entendu par une ou plusieurs passerelles LoRa :schema_number:`❷`, et chacune va le transmettre par Internet au serveur de réseau (*network server*) :schema_number:`❸`. Celui-ci est notamment chargé de dédupliquer les messages, c'est-à-dire de détecter quand un même message est reçu plusieurs fois et de ne le transmettre qu'une seule fois dans la suite de la chaîne de traitements. Chaque message est ensuite transmis au composant Wavebricks de mon dispositif. Si le composant Wavebricks a une réponse à renvoyer à mon dispositif, il transmet celle-ci au serveur de réseau qui la fait transiter par la passerelle qui lui semble la plus propice à contacter mon dispositif. Le contenu du message est consultable dans l'interface Wavebricks :schema_number:`❹`. .. image:: ./lorawan-network-people.png .. _ecodispo: Choisir entre économie d'énergie et disponibilité -------------------------------------------------- Selon mes besoins, je peux faire fonctionner mon dispositif selon deux classes : Classe A ^^^^^^^^ En classe A, mon dispositif est très économe en énergie, ce qui lui permet de fonctionner pendant très longtemps sur une petite batterie. Pour obtenir ce résultat, il n'active le LoRa qu'au moment d'émettre puis, dès l'émission terminée, le remet immdédiatement en sommeil. Après un délai convenu à l'avance, mon dispositif se remet à écouter pendant un bref interval puis se remet en sommeil. S'il n'a rien entendu à ce moment-là, après un second délai convenu à l'avance, il remet à nouveau à écouter puis se met en sommeil jusqu'à son prochain envoi de message. L'avantage est une très faible consommation, mais l'inconvénient est que mon dispositif n'est joignable par le réseau LoRa qu'au moment de ses émissions. Je peux transmettre au serveur de réseau un message qui sera à envoyer à la première opportunité, c'est-à-dire juste après une communication de mon dispositif. En pratique cela signifie que si je veux communiquer avec mon dispositif et que celui-ci m'envoie un message toutes les 10 minutes, en classe A, je ne peux le contacter que toutes les 10 minutes. Classe C ^^^^^^^^ En classe C, mon dispositif est en permanence à l'écoute du réseau et peut être contacté tant qu'il n'est pas lui-même en train d'émettre. Cette solution a évidemment l'avantage de le rendre très disponible. Cependant, cette solution n'est adaptée que si mon dispositif dispose d'une source d'énergie, car la consommation énergétique de l'écoute est du même ordre de grandeur que la consommation énergétique de la transmission. C'est souvent beaucoup trop d'énergie pour des dispositifs de petite taille alimentés sur piles. L'envoi du message hors du réseau LoRa --------------------------------------- Une fois que mon message est arrivé au composant Wavebricks de mon dispositif, je peux : * configurer mon composant pour qu'il le renvoie à l'extérieur, * consulter mon message sur Wavebricks (Wavebricks stocke gratuitement les 500 derniers messages de chaque dispositif pendant 30 jours). La consultation dans Wavebricks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Quand je me rends sur la page de mon dispositif sur l'interface Wavebricks, je peux toujours consulter les 50 derniers messages envoyés. Attention, car sans avoir souscrit à une option pour le stockage par Wavebricks des messages, Wavebricks ne conserve que les derniers 50 messages pendant 30 jours ! L'envoi vers l'extérieur ^^^^^^^^^^^^^^^^^^^^^^^^^ Dans l'interface Wavebricks, je peux donner l'adresse d'un serveur Web auquel sera envoyé chacun de mes messages, accompagné de méta-données comme l'heure d'envoi, les passerelles rencontrées, l'identifiant du dispositif, etc… Je peux également demander à Wavebricks de stocker mes messages dans des documents sur le Cloud, par exemple un tableur sur Google Docs ou Dropbox. Pour en savoir plus ------------------- :doc:`lora-lorawan`