Test Lora/LoraWan/ttn

Articles sur Lora écrits par un autre Montpellierrain Cédric Goby 🙂

Si vous avez la chance d’être dans une zone couverte avec une communauté, vous n’êtes pas obligé de mettre en œuvre une passerelle vous pouvez simplement rejoindre une communauté.

Explications détaillées par Cédric Goby.

  •  Nous utiliserons une carte de développement  de chez Microchip à base de RN2483, qui intègre par défaut un capteur de lumière et de température.

  •  Relevés effectués sur The Things Network
  •  Mise en forme des données réceptionnées en json converties au  format highcharts par un script en bash.
  • Graphiques construits à l’aide de highcharts

Dans un premier temps il nous faut ouvrir un compte sur The Things Network a fin de pouvoir y connecter notre passerelle (GATEWAYS),  rien de compliqué a cette manœuvre suivez ce guide sur  The Things Network.


Une fois la passerelle connectée à ttn il va falloir programmer notre objet a base de RN2483, nous utiliseront le protocole sécurisé OTAA (Over The Air)  pour communiquer entre notre objet et la passerelle.

Il va maintenant falloir paramétrer notre carte Microchip à base de RN248 qui intègre par défaut un capteur de lumière et de température.

Je vous conseille de changer au moins les trois paramètres suivants deveui (8 bits) appeui (8 bits) appkey (16 bits) qui nous seront nécessaire pour ajouter notre objet dans ttn.

Connectez  le RN2483 en USB a votre PC démarrez l’IDE Arduino, réglez le port com, puis ouvrez  le moniteur série et réglez-le  en 57600 et double retour de chariot \r\n.

Sachez  que Microchip met a notre disposition ou outil dédié qui peux aussi vous servir à dialoguer et a mettre à jour le firmware facilement.

Sur la page du produit ou vous trouverez les mise à jour du firmware, le software  « LoRa Development Suite » est disponible pour Windows/Mac OS/Linux, ainsi que toute les documentations nécessaires.
Microchip: https://www.microchip.com/Developmenttools/ProductDetails/dv164140-1

Vous pouvez par exemple utiliser ce générateur pour générer les codes en hexadécimal si comme moi vous n’écrivez pas en hexadécimal aussi facilement que en français.

Commandes pour otaa:

Pour vérifier deveui/appeui/appkey, remplacez set par get.

Commandes supplémentaires utilisées pour configurer le RN2483:

Pour voir toute les commandes supportées rendez-vous sur le guide d’utilisation du RN2483: http://ww1.microchip.com/downloads/en/DeviceDoc/RN2483-LoRa-Technology-Module-Command-Reference-User-Guide-DS40001784G.pdf

Votre objet est maintenant prêt a communiquer avec votre passerelle, pour ce faire il fa falloir ajouter notre objet dans la console de ttn.

Rendez-vous dans Applications, renseignez les divers paramètres demandés ainsi que les deveui (8 bits) appeui (8 bits) appkey (16 bits) que vous avez rentrés dans votre RN2483.

Vous pouvez normalement communiquer entre votre objet et votre passerelle.

Pour tester la communication envoyez un:

Si en réponse vous obtenez un « Accepted », c’est que tout va bien votre objet est accepté, ne fermez pas  le moniteur série Arduino.

On va envoyer un premier message a notre passerelle, un « Hello World » encodé en hexadécimal:

Pour vérifier que le message est bien passé, rendez-vous dans https://console.thethingsnetwork.org/applications / ==> votre objet  ==> data là vous devriez voir le code hexadécimal envoyé.


Maintenant que nous savons communiquer avec notre passerelle, nous allons voir comment réceptionner les données envoyées par notre objet sur notre site et les mettre en forme.

Il va falloir d’abord mettre en forme les codes hexadécimal reçus histoire de les rendre lisible par un humain, pour ce faire rendez-vous dans Payload Format onglet « decoder », moi j’y met ce bout de code en javascript (je suis null en javascript …):

Pour vérifier rendez-vous dans: https://console.thethingsnetwork.org/ ==> applications ==> Application ID ==> Data


« The Things Network » met a notre disposition tout un tas de protocoles pour réceptionner ou envoyer des données .

Nous allons tester un export en .json, rendez-vous dans:

https://console.thethingsnetwork.org/ ==> applications ==> Application ID ==> integrations et ajoutez un « Data Storage ».

Vous pouvez tester son fonctionnement en cliquant sur « go to platform »


Vous pouvez réceptionner vos données au format json sur 7 jours au maximum a l’aide de curl avec la commande suivante:

  •  Ou xxx-youruser-xxx est votre « Application ID »
  •  et ttn-account-v2.xxxxxxxxxxxxxxxxxxxxxxxxxxx est votre « Access Keys »
  • et last=1d la durée de réception souhaitée, ici 1d = 1 jour !

Nous allons réaliser une moulinette scriptée en bash a fin de mettre en forme nos données json pour highcharts.

Ci-dessous un exemple de moulinette qui va récupérer uniquement la date et la température.

Nous aurions pû adapter via l’API de Highcharts notre graphique  de manière a utiliser directement le .json fourni par ttn, mais cela m’aurait pris beaucoup plus de temps. :-p

Le fichier  généré par le script: http://www.openhardware.eu/highcharts/ok/temperature.json

Nous disposons maintenant d’un fichier de donnée compatibles avec highcharts nous allons créer une jolie page .html en s’aidant du modèle suivant.

Highcharts (si utilisation non commerciale).

met différents modèles de graphiques a notre disposition: https://www.highcharts.com/demo/stock

Highcharts API: https://api.highcharts.com/highcharts/

Exemple Final: http://www.openhardware.eu/highcharts/ok/iframe.html

Nous disposons d’une page statique, si nous souhaitons la rendre dynamique, différentes solutions s’offrent a nous soit vous avec un accès à cron, dans ce cas mettez simplement une crontab pour exécuter les script bash quand vous le souhaitez.

Si vous n’avez pas accès a cron chez votre hébergeur vous pouvez par exemple sous wordpress utiliser wp-crontrol qui va vous permettre d’ajouter une page php qui sera mise a jour quand vous le souhaitez (a condition que il y ait du trafic sur le site).

Exemple basique de page php qui exécutera le script bash.