"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`