"Hello world!" : Se connecter au réseau LoRaWAN et envoyer son premier message ============================================================================== À l'issue de ce tutoriel, vous serez capables de: - vous connecter à un réseau LoRaWAN en ABP ou OTAA - envoyer un message binaire - consulter les derniers messages envoyés par votre dispositif .. include:: preamble-lopy.rst .. index:: connexion Se connecter au réseau ---------------------- La connexion au réseau peut se faire de deux manières : soit ABP soit OTAA. .. index:: ABP :samp:`ABP` (*activation by personalization*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pour configurer mon dispositif en :samp:`ABP`, je vais dans `l'interface Wavebricks `_ et je déclenche l':doc:`enregistrement d'un nouveau dispositif `. Je reçois alors trois éléments : - l'adresse de dispositif (*device address*, qu'on abrège généralement en :samp:`DevAddr`), - la clef de session de réseau (*network session key*, :samp:`NetSKey`), - la clef de session d'application (*application session key*, :samp:`AppSKey`). .. todo:: screenshot enregistrement ABP Dans le code de mon dispositif, j'insère une *activation by personalization* (ABP) qui emploit :samp:`DevAddr`, :samp:`NetSKey` et :samp:`AppSKey` : .. literalinclude:: hello-world/abp.py :language: python :lines: 9-14 .. index:: OTAA :samp:`OTAA` (*over the air activation*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pour configurer mon dispositif en :samp:`OTAA`, je vais dans `l'interface Wavebricks `_ et je déclenche la :doc:`préparation d'une OTAA `. Je renseigne : - l'identifiant unique d'application (*application Extended Unique Identifier*, :samp:`AppEUI`), - la clef d'application de l'appareil (*application key*, :samp:`AppKey`). .. image:: ../screenshots/otaa-highlighted.png Dans le code de mon dispositif, j'insère une *over the air activation* (OTAA) qui emploit :samp:`AppEUI` et :samp:`AppKey` : .. literalinclude:: hello-world/otaa.py :language: python :lines: 9-22 Émettre un message binaire -------------------------- Pour pouvoir émettre, comme pour d'autres protocole réseau, on crée une *socket* (litt., une prise) LoRa en mode écriture brute (*raw*) et on configure un taux de donnée, le *data rate* (DR), qui est un numéro qui désigne une série de paramètres par défaut. Ici, on utilise le n°5, qui correspond à un *spreading factor* de 7, une bande passante de 125 kHz et un débit de 5470 bit/s. .. literalinclude:: hello-world/abp.py :language: python :lines: 18-19 Une fois la *socket* prête, il suffit d'envoyer les données dessus. .. literalinclude:: hello-world/abp.py :language: python :lines: 23 .. index:: interface Wavebricks Consulter les messages ---------------------- Une fois le message envoyé, on peut se rendre sur `l'interface Wavebricks `_ et consulter le contenu du dernier message envoyé. .. image:: ./screenshot-1xhello.png Si on relance plusieurs le dispositif, les messages successifs s'ajouteront au journal de messages dans l'interface. .. todo:: screenshot plusieurs messages Hello Code complet (:samp:`OTAA`) --------------------------- .. literalinclude:: hello-world/otaa.py :language: python :caption: :download:`hello-world/otaa.py` Code complet (:samp:`ABP`) -------------------------- .. literalinclude:: hello-world/abp.py :language: python :caption: :download:`hello-world/abp.py`