Réseau The Things Network
On parle partout de l'Internet des Objets. Mais qu'est-ce que c'est au juste ? On connait Internet, ce truc auquel on se connecte au moyen d'un câble réseau, de la fibre optique ou en wifi à partir d'une box, ou bien encore avec un téléphone portable 3G ou 4G. L'accès à ces réseaux n'est pas gratuit, on paye un abonnement, ou quelqu'un paye un abonnement ! Le volume de données qui transite sur ces réseaux est considérable, mais ce n'est rien en comparaison de ce qui nous attend si on fait communiquer tous les objets qui nous entoure, même s'ils devaient se limiter à quelques échanges quotidien et générer de faibles volumes de données chacun. De plus, lorsque notre principale préoccupation, c'est d'obtenir le contenu souhaité le plus rapidement possible, soit avoir le meilleur débit possible, les objets peuvent se contenter d'un réseau bas débit, voir très bas débit (quelques kb/s).
Par exemple, un capteur de température pourrait être amené à communiquer sa mesure toutes les 15 minutes. Il devrait ainsi communiquer son adresse (il faut bien l'identifier), sa mesure et éventuellement un checksum soit seulement quelques octets moins de 100 fois par jour. L'Internet classique est donc mal adapté.
C'est la raison pour laquelle se sont développés des réseaux propres à l'Internet des Objets. Ces réseaux opèrent sur la bande des 868 Mhz, qui est libre de droit. Ils ont pour principales caractéristiques d'être :
- Longue portée (plusieurs km)
- Bas débit (d'une centaine de bits/s à quelques kbits/s)
- Faible charge utile (les massages sont constitués de quelques octets)
- Très peu énergivore (plusieurs années d'autonomie sur batterie)
- Topologie en étoile (ce qui va avec le caractère faiblement énergivore)
- Les passerelles peuvent gérer plusieurs milliers d'objets
- Certains réseaux nécessitent un abonnement.
En France, plusieurs réseaux sont déjà déployés, il s’agit du réseau SigFox, des réseaux LoRa Objenious de Bouygues Telecom, Datavenue d'Orange, de Qowisio qui a également lancé son réseau ainsi que Archos qui déploie un réseau collaboratif en fournissant des passerelles picoWAN qui seront connecté à Internet pour transmettre les informations du terrain.
De nombreuses entreprises ont déjà choisi d’expérimenter le réseau LoRa pour diverses applications. Contrairement à son concurrent Sigfox, LoRa est un réseau ouvert. Toute entreprise peut donc créer son propre réseau pour l’exploiter. Il faut pour cela se munir d’une antenne reliée à internet (par Wi-Fi, câble Ethernet, connexion 3G…) avec une station de base émettant en France sur la bande 868 MHz. Le réseau peut-être privé ou public suivant le domaine d’application. Une entreprise préférera protéger les données transmises. A noter que la bande de fréquence disponible change par pays. Aux Etats-Unis, par exemple, la bande de fréquence utilisée pour le réseau LoRa est 915 MHz.
Quelques articles sur le sujet :
- https://fr.wikipedia.org/wiki/LoRaWAN
- https://www.objetconnecte.com/capteurs-iot-marche-3010/
- https://www.objetconnecte.com/tout-savoir-reseau-lora-bouygues/
- https://www.usine-digitale.fr/article/sido-2018-orange-devoile-une-nouvelle-option-de-geolocalisation-sur-lora.N674309
- http://www.vertical-m2m.com/fr/the-things-network-use-cases
- http://www.linuxembedded.fr/2017/12/introduction-a-lora/
The Things Network
The Things Network est un réseau communautaire fonctionnant avec la technologie LoRa conforme au standard LoRaWAN. Cette technologie permet à des objets de transmettre de petits volumes d’informations en consommant très peu d’énergie.
http://www.vertical-m2m.com/iot-resources/the-things-network-use-cases
La communauté déploie des passerelles connectées au réseau Internet. Les passerelles sont utilisables par tout le monde, permettant à vos objets de continuer à émettre des données vers vos applications, même s’ils sont à des milliers de kilomètres de chez vous, en utilisant les passerelles à proximité. De la même façon, vos passerelles sont susceptibles de recevoir des données d’objets ne vous appartenant pas. Votre passerelle transmet les informations vers l’infrastructure centrale sur réseau qui se charge de les acheminer vers les applications qui les utilisent.
The Things Network développe une passerelle économique pour supporter le déploiement communautaire du réseau, mais il est possible d’utiliser des passerelles d’autres fabricants sur ce même réseau.
Plus le nombre de passerelles déployées est grand meilleur est la couverture. Aujourd’hui les Pays-Bas ont plusieurs zones à forte densités permettant un déploiement efficace d’applications. D’autres réseaux d'opérateurs reconnus, tel Orange, Bouygue, KPN et d’autres dans différents pays sont disponibles mais leur utilisation est soumise à abonnement payant, avec des garanties associées, qui peuvent ne pas être nécessaire dans le cadre de votre usage.
The Things Network vous permet de profiter d’un service similaire à coût nul.
Source : http://fltm-labs.com/archives/39
Installation de la passerelle
- https://www.thethingsnetwork.org/docs/gateways/
- Tutoriel vidéo officiel : https://www.youtube.com/watch?v=cJNK4y1is2Q
Pour installer la passerelle TheThingsNetwork, vous devez disposer d'un ordinateur muni d'une carte wifi. En effet, la seconde étape consiste à ce connecter à un réseau wifi fournit par la passerelle.
L'installation se fait en 4 étapes :
- Enregistrement
- Connexion
- Configuration
- Premier message
Enregistrement
Pour procéder à l'enregistrement de la passerelle sur les serveur de TheThingsNetwork (TTN), connectez-vous à l'adresse suivante : https://activate.thethingsnetwork.org/
Si vous ne possédez pas de compte chez TTN, il vous faudra en créer un !
Après la connexion, cliquez sur le bouton Let's Get Started! pour démarrer.
Enregistrez la passerelle en complétant le formulaire ou en identifiant la passerelle dans la liste proposée si celle-ci à déjà été enregistrée.
Remarque : On peut procéder à un enregistrement plus complet d'une nouvelle passerelle ou modifier ses paramètres d'enregistrement en utilisant la console TTN : https://console.thethingsnetwork.org
N'oubliez pas que la bande de fréquence autorisée en Europe est 868 MHz et donnez un nom à votre passerelle pour l'identifier (pas d'espace, pas de majuscules, pas ponctuation ni de caractères accentués, ...).
Cliquez sur le bouton Register Gateway pour terminer la première étape.
Connexion
A cette étape, vous allez devoir vous connecter au réseau wifi de la passerelle :
- SSID :
Things-Gateway-XXX
(XXX
sont des caractères hexadécimaux) - Clé WPA :
thethings
Une fois la connexion établie, vous devriez avoir l'écran suivant :
Cliquez sur le bouton Continue pour démarrer la configuration.
Configuration
Lors de cette étape, nous allons indiquer à la passerelle comment elle devra se connecter à Internet afin de relayer les paquets des objets connectés en LoRa vers ou depuis les serveurs de TTN.
Deux solution s'offrent à nous :
- Wifi : il faudra identifier le réseau wifi et configurer son accès
- Ethernet : rien à configurer dans ce cas
Remarque : Il faut absolument une connexion directe à Internet, l'interface de configuration ne permet pas de configurer un éventuel passage par un proxy ou l'utilisation d'un portail captif.
En cliquant sur le bouton Configure Gateway, les informations seront enregistrées dans la passerelle et cette dernière va essayer à intervalles régulier de se connecter à Internet et aux serveurs TTN
Premier message
La réussite de la connexion de la passerelle aux serveurs TTN est matérialisée par l'échange d'un premier message. Pour observer l'état d'avancement de cette étape, nous disposons de 4 LED bleues dont les états potentiels sont décrits dans le l'interface d'activation au Step 4.
Les combinaisons possibles des LED d'après la documentation :
LED 1 | LED 2 | LED 3 | LED 4 | Status |
---|---|---|---|---|
On | Slow blink | Connecting to the internet | ||
On | Fast blink | Could not connect to the internet | ||
On | On | Slow blink | Activating | |
On | On | Fast blink | Could not activate (restart activation from step 1) | |
On | On | On | Activated | |
On | On | On | On | Connected to the server |
Lorsque la connexion est complète, on peut se connecter à la console pour finaliser la configuration de la passerelle et pour ajouter des applications et des objets (Devices).
Et si ça marche pas ?
En principe, tout devrait bien se passer mais j'ai dû sur certaines passerelles refaire plusieurs fois la configuration et parfois un reset de toute précédente config à été nécessaire :
Pour cela, la passerelle dispose d'un bouton Mode sur la carte électronique accessible en enlevant le capot blanc en façade :
- Si vous appuyez brièvement sur le bouton pendant la mise sous tension, la passerelle redémarre.
- Maintenez le bouton enfoncé pendant 2 secondes lorsqu'elle est allumée pour effacer les paramètres WiFi.
- Si vous maintenez le bouton enfoncé pendant 5 secondes alors qu'elle est sous tension, les paramètres WiFi et les paramètres d'activation sont effacés.
- Si vous maintenez le bouton enfoncé pendant la mise sous tension, le firmware complet sera effacé !
En cas de problème, reportez vous à la FAQ de la passerelle TTN.
Administration de la passerelle et des applications
Elle se fait à partir de la console TTN accessible ici : https://console.thethingsnetwork.org/
Pour modifier ou compléter la configuration de la passerelle, cliquez sur GATEWAY. Vous pourrez ainsi la géolocaliser, indiquer si elle est placée à l'intérieur ou à l'extérieur, de quelle type d'antenne est dotée, qui l'administre, ...
Ajout d'une application
- Documentation : https://www.thethingsnetwork.org/docs/applications/
- Tutoriel video : https://www.youtube.com/watch?v=JrNjY-pGuno
Pour ajouter une application, à partir de la console, cliquez sur APPLICATIONS.
Par Applications, il faut entendre tout ce que vos objets communiquent sur Internet. On peut également voir une application comme une collection d'objets (Devices). Pour pouvoir enregistrer un objet connecté sur la passerelle, il faut nécessairement disposer d'une application dans laquelle le ranger.
Prenons l'exemple de capteurs et d'actionneurs qui contribuent à la gestion d'un bâtiment qui s’appellerait Le Machin dans la ville de Truc. On pourrait créer une application nommée le-machin-a-truc
dans laquelle on déclarera les capteurs capteur-type-x
ou type=temperature, humidite, presence, luminosite, ...
et x
un numéro d'identification, idem pour les actionneurs.
Si vous ajouter votre première application, vous pouvez cliquez sur Get started by adding one.
Complétez dans le formulaire les champs Application ID et Description. Laissons The Things Network décider de l'attribution d'un identifiant Application EUI (Extended Unique Identifier) et le serveur avec lequel les échanges de données se feront sera ici ttn-handler-eu
.
Cliquez sur le bouton Add application. Nous pouvons maintenant ajouter des objets connectés à cette application :
Ajout d'un objet connecté
- Documentation : https://www.thethingsnetwork.org/docs/devices/registration.html
- Tutoriel vidéo : https://www.youtube.com/watch?v=28Fh5OF8ev0
Nous allons ajouter un capteur de de température et d'humidité construit autours d'une carte The Things Uno qui intègre une puce LoRa de chez Microchip et on lui connectera un capteur DHT11.
Cliquez sur register device pour ajouter un objet connecté à l'application.
A ce stade, le seul élément nécessaire à configurer est le Device ID. Cependant, nous aurons par la suite besoin du Device EUI qui est un identifiant propre à la puce LoRa utilisé. On peut toutefois en indiquer un manuellement mais dans notre cas nous allons lire le DevEUI en utilisant un programme d'exemple fourni avec la librairie TheThingsNetwork d'Arduino.
Cliquez sur le bouton Register.
L'enregistrement à générer un Device EUI aléatoire. Nous allons le remplacer par l’authentique.
Le champs Activation Method définie la manière dont les équipements vont obtenir les clés de session nécessaire à l'établissement de la communication entre eux. Deux types de procédures d'activation sont disponibles :
- Over-The-Air Activation (OTAA)
- Activation By Personalization (APB).
Méthode OTTA
join request
. Pour ce faire, celui-ci doit être en possession de trois paramètres :join request
, contenant DevEUI, AppEUI ainsi qu’un MICjoin accept
est transmise en réponse à l’équipement. Cette réponse contient des données à partir desquelles l’équipement va pouvoir calculer les clés de sessionMéthode APB
Pour la seconde méthode, APB, les clés de session NwkSKey et AppSKey ainsi que l’adresse de l’équipement (DevAddr) sont directement inscrits dans l’équipement LoRaWAN. Ainsi, l’équipement n’a plus besoin d’envoyer de requête avant de communiquer sur le réseau. L’utilisation de cette méthode implique que les équipements communiquent avec un réseau spécifique car les clés de session sont connues par avance. Et contrairement à la méthode OTAA, les clés de session sont statiques.
En résumé, la méthode OTAA est plus complexe à implémenter que la méthode APB mais offre un niveau de sécurité supérieur. Dans le cas d’un prototypage ou pour une utilisation sur un réseau connu, la méthode APB suffit largement. Par contre, lorsqu’un déploiement à plus grande échelle est envisagé, il est conseillé d’utiliser la méthode OTAA, plus sécurisée et plus agile.
Source : https://www.frugalprototype.com/technologie-lora-reseau-lorawan/
Nous choisirons donc la métode d'activation OTAA. Pour obtenir le DevEUI, commençons par installer la librairie Arduino TheThingsNetwork :
- Dans l'environnement de développement d'Arduino, cliquez sur Croquis->Inclure une bibliothèque->Gérer les bibliothèques.
- Dans la barre de recherche, saisissez
thethingsnetwork
- Procédez à l'installation de la librairie
Nous disposons maintenant de programmes d'exemples pour l'utilisation de la librairie. Nous allons ouvrir le programme DeviceInfo.ino
: Fichier
->Exemples
->TheThingsNetwork
->DeviceInfo
Modifiez le plan de fréquence :
Compilez et téléversez. Ouvrez le terminal pour lire les info :
Normalement, l'AppEUI devrait être la même que celle configurée dans la console TTN. Nous n'avons plus qu'à copier le DevEUI depuis le terminal pour aller le copier dans la console TTN : Dans l'interface de configuration du Device, cliquez sur Settings puis collez le DevEUI au bon emplacement :
Cliquez sur Save pour finir.
Un des programmes donnés en exemple s'appelle QuickStart
. Nous allons l'essayer !
Commençons par modifier le plan de fréquence :
Il nous faut maintenant remplacer les clés appEUI et appKey par celles indiquées dans la configuration de notre device dans la console TTN. Il suffit de les copier à partir de la console à la fin de la page Overview du device.
Compilez et téléversez le programme. Ouvrez le terminal et soyez patient ! Il est fort possible que la connexion entre notre objet connecté et le serveur de TTN ne soit pas immédiatement opérationnelle. Mais normalement, au bout de quelques dizaines de secondes, elle devient fonctionnelle :
Mais au fait, "il fait quoi ce programme" ?
Un rapide coup d'oeil au code nous permet d'identifier la déclaration d'un évènement onMessage
dans le setup
. Le programme principal (loop
) se contente de l'envoi d'un message constitué de l'état de la led BUILTIN
, c'est à dire la led 13.
La fonction message() sera donc exécuté à la réception de données en provenance du serveur TTN. Dans cette fonction, on test la charge utile (payload) du message et on allume ou on éteint la led 13 en fonction du contenu de son premier octet.
Il ne nous reste plus tester en envoyant 0x00 pour éteindre la led ou 0x01 pour l'allumer. On peut le faire directement à partir de la console TTN. On pourra également observer le trafic et les données reçue de notre objet connecté :
Pour observer les données reçue, cliquez sur le bouton Data en haut de la page :
La réaction n'est pas immédiate, en effet on observe un delai de 10 secondes entre chaque réception. C'est tout à fait normal au vu de la fin de la boucle du programme :
Passons maintenant à la réalisation de notre capteur de température et humidité. Pour cela nous allons nous appuyer sur le programme d'exemple DHT : Fichier
->Exemples
->TheThingsNetwork
->Sensors
->DHT
Modifiez le plan de fréquence, AppEUI et AppKey.
Choisissez le module DHT que vous avez connecté et éventuellement la broche à laquelle vous l'avez physiquement connecté. Dans l'exemple qui suit, on utilise un DHT11
connecté sur la broche 2. On a également raccourci le délai entre deux mesures à 10 secondes.
Compilez, téléversez et observez le terminal série :
Observons maintenant les données dans la console TTN :
On a bien toutes les 10 secondes de nouvelles données et celles-ci sont bien confomes à la mesure.
Les données parviennent bien au serveur TTN, la lecture n'est toutefois pas aisée. Nous allons lui appliquer une fonction de décodage pour facilité la lecture.
Cliquez sur le menu Devices puis sur le bouton Payload formats :
Modifier l'exemple de fonction decoder comme suit :
Allons maintenant voir les data :
C'est mieux mais pas encore assez visuel ! Vous aurez peut être remarqué lors de l'étape précédante que l'on dispose de deux type de formatage de la charge utile des messages : Custom et Cayenne LPP. Dans le cas précédant, nous avons écrit nous même notre fonction de décodage. Avec Cayenne LPP, nous devrions formater le message dès son envoi depuis la carte The Things Uno, donc, dans le propramme Arduino.
Cayenne my Devices
Cayenne est un environnement de construction d'application IoT par simple glisser-déposer. Il permet aux développeurs, concepteurs et ingénieurs de rapidement prototyper et partager leurs projets d'appareils connectés. Cayenne a été conçu pour aider les utilisateurs à créer des prototypes d'application d'Internet des objets, puis à les mettre en production.
Il y a plusieurs composants majeurs sur la plateforme:
- Cayenne Mobile Apps - Surveillez et contrôlez à distance vos projets IoT à partir des applications Android ou iOS.
- Tableau de bord en ligne Cayenne - Utilisez des widgets personnalisables pour visualiser des données, définir des règles, planifier des événements, etc.
La documentation complète ici : https://mydevices.com/cayenne/docs/intro/
Notre but serait de construire un dashboard illustrant les mesures comme l'exemple ci-dessous :
La documentation nous indique que les données doivent être formatées de la sorte :
avec le codage suivant pour Data Type et le nombre d'octets à fournir par type de donnée :
Il faut donc modifier notre programme pour s'y conformer.
Choisissons un numéro de canal (chanel) pour la température et pour l'humidité et formatons notre payload :
- Température : Chanel =0x01, Type = 0x67, data sur 2 octets, précision au dixième
- Humidité : Chanel = 0x02, Type = 0x68, data sur 1 octet, précision au 1/2
Modifiez le code comme ci-dessus, compilez et téléversez. Observez le résultat dans la console TTN après avoir appliqué le Payload Format Cayenne LPP.
Afin de permettre à Cayenne l'accès au données de notre application sur les serveurs de The Things Network, il faut créer une intégration :
Choisissez Cayenne :
Ajouter une intégration Cayenne consiste à lui donner un identifiant unique (Process ID) et à déclarer les clés d'accès aux données de l'application. Choisissez default key pour faire correspondre automatiquement les clés définies dans l'application et dans les devices.
Après avoir ajouter l'intégration, Cayenne sera autorisé à accéder aux données d'un device de l'application si dans sa configuration, il utilise son DevEUI.
- Pour commencer, créez un compte Cayenne : https://cayenne.mydevices.com/cayenne/signup
- Connectez vous à votre compte Cayenne
- Cliquez sur l'icone LoRa
- Choisissez le réseau The Things Network dans liste à gauche de l'écran
- Choisissez un objet de type Cayenne LPP (Low Power Payload)
- Configurez Cayenne pour accéder aux données du device :
Les widgets sont déplaçables, redimensionnables, personnalisables, ... Amusez vous !
Vous pouvez également accéder aux données brutes en cliquant sur l’icône Data dans le bandeau bleu.
Conclusion
L'utilisation de The Things Network combiné à Cayenne my devices fournie un environnement très pratique et puissant pour mettre à disposition des données issues de capteur ou pour piloter un système à distance en s'appuyant sur un réseau IOT LoRa longue distance et faible énergie.
Le format Cayenne LPP peut représenter une certaine difficulté pour la mise en œuvre du programme dans le device. Cependant, il existe une librairie CayenneLPP qui s'occupe de tout :
Croquis
->Inclure une bibliothèque
->Gérer les bibliothèques
->Recherchez CayenneLPP
Trackbacks are disabled.