Suite numérique: envoyer une série de messages ============================================== À l'issue de ce tutoriel, vous serez capables de: - envoyer une série de messages espacés dans le temps Ce tutoriel présuppose que vous avez déjà suivi le tutoriel :doc:`hello-world`. .. include:: preamble-lopy.rst Envoyer une suite numérique --------------------------- Nous allons envoyer successivement les 14 premiers nombres d'une suite célèbre, la suite de Fibonacci. Ils ont l'avantage d'être tous inférieurs à 256 et donc de tenir en un seul octet. +---------+-----------+ | décimal | binaire | +=========+===========+ | 0 | 0000 0000 | +---------+-----------+ | 1 | 0000 0001 | +---------+-----------+ | 2 | 0000 0010 | +---------+-----------+ | … | … | +---------+-----------+ | 144 | 1001 0000 | +---------+-----------+ | 233 | 1110 1001 | +---------+-----------+ .. literalinclude:: suite/suite.py :language: python :lines: 22 Envoi de plusieurs messages --------------------------- L'important, quand on envoie plusieurs messages, est de prévoir à l'avance de respecter le *duty cycle*. Ici, nous avons décidé d'utiliser le *data rate* n°5, c'est-à-dire un *spreading factor* de 7. Comme nous allons envoyer des nombres qui occupent 1 octet chacun et que la trame LoRaWAN occupe 13 octets, nous pouvons calculer quel est le temps minimum que nous devons attendre entre deux messages, par exemple avec le tableur `LoRa duty cycle & fair use calculator `_. Celui-ci nous indique un temps de 4,6 secondes, nous allons donc émettre toutes les 10 secondes et nous serons certains de ne jamais dépasser notre *duty cycle*. .. literalinclude:: suite/suite.py :language: python :lines: 24-29 Consultation des messages ------------------------- Sur `l'interface Wavebricks `_, je peux alors voir apparaître un nouveau message toutes les 10 secondes dans le journal de messages du dispositif. .. image:: ../screenshots/suite-highlighted.png Code complet ------------ .. literalinclude:: suite/suite.py :language: python :caption: :download:`suite/suite.py`