Collection d’objets communiquants: envoyer des messages depuis plusieurs dispositifs

À l’issue de ce tutoriel, vous serez capables de:

  • connecter plusieurs dispositifs au Réseau IoT Expérimental de l’Eurométropole de Strasbourg
  • envoyer des messages depuis plusieurs dispositifs
  • consulter les derniers messages envoyés par plusieurs dispositifs

Ce tutoriel présuppose que vous avez déjà suivi le tutoriel “Hello world!” : Se connecter au réseau LoRaWAN et envoyer son premier message.

Matériel

Ce tutoriel est réalisé avec un LoPy commercialisé par Pycom

../_images/photo-lopy.png

Le code du tutoriel peut être directement chargé et exécuté sur le LoPy à l’aide du plugin Pymakr disponible pour plusieurs éditeurs Python (dont Atom) :

../_images/atom-pymakr-highlighted.png

Se connecter au réseau

La procédure pour connecter au réseau plusieurs dispositifs est la même que pour un seul, à la différence que chaque dispositif doit employer une configuration différente.

Dispositif n°1
app_eui = binascii.unhexlify('5F554E5F4555495F')
app_key = binascii.unhexlify('4F4E455F4170705F4B45595F554E5F31')
Dispositif n°2
app_eui = binascii.unhexlify('444555585F455549')
app_key = binascii.unhexlify('54574F5F4170705F4B65795F44455558')

Le reste du code est identique.

Émettre les messages

De la même manière, chaque dispositif va envoyer son propre message.

Dispositif n°1
out.send("Castor")
Dispositif n°2
out.send("Pollux")

Consulter les messages

Une fois les messages envoyés, on peut se rendre sur l’interface Wavebricks et consulter le contenu des derniers messages envoyés par les dispositifs.

  • ../_images/collection-castor.png
  • ../_images/collection-pollux.png

Code complet

from network import LoRa
import socket
import time
import binascii

# use the LoRaWAN stack
lora = LoRa(mode=LoRa.LORAWAN)

app_eui = binascii.unhexlify('5F554E5F4555495F')
app_key = binascii.unhexlify('4F4E455F4170705F4B45595F554E5F31')

# join by OTAA
lora.join(activation=LoRa.OTAA, auth=(app_eui, app_key), timeout=0)

# wait for network to accept OTAA
while not lora.has_joined():
    time.sleep(2.5)

# socket setup
out = socket.socket(socket.AF_LORA, socket.SOCK_RAW)
out.setsockopt(socket.SOL_LORA, socket.SO_DR, 5)

# send your first data!
out.send("Castor")
from network import LoRa
import socket
import time
import binascii

# use the LoRaWAN stack
lora = LoRa(mode=LoRa.LORAWAN)

app_eui = binascii.unhexlify('444555585F455549')
app_key = binascii.unhexlify('54574F5F4170705F4B65795F44455558')

# join by OTAA
lora.join(activation=LoRa.OTAA, auth=(app_eui, app_key), timeout=0)

# wait for network to accept OTAA
while not lora.has_joined():
    time.sleep(2.5)

# socket setup
out = socket.socket(socket.AF_LORA, socket.SOCK_RAW)
out.setsockopt(socket.SOL_LORA, socket.SO_DR, 5)

# send your first data!
out.send("Pollux")