Marc Silanus

Réseau The Things Network

Posted on 16 juillet 2018

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.

Architecture type d'un réseau IOT

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 :

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.

https://www.thethingsnetwork.org/docs/gateways/gateway/

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

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

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é

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

Pour activer un équipement sur le réseau par la méthode OTAA, l’équipement doit transmettre au réseau une
demande d’accès : join request. Pour ce faire, celui-ci doit être en possession de trois paramètres :
DevEUI, identifiant unique (de type EUI64) de l’équipement (fourni par l’équipementier).
AppEUI, identifiant du fournisseur de l’application (EUI 64).
AppKey, clé AES 128 déterminée par le fournisseur de l’application.
L’équipement envoie, à travers le réseau, la requête join request, contenant DevEUI, AppEUI ainsi qu’un MIC
calculé via la clé AppKey. Cette requête est transmise au serveur d’enregistrement qui vérifie le MIC via la clé AppKey (qui lui a été communiquée au préalable).
Si l’équipement est autorisé par le serveur d’enregistrement, la requête join 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 session
(réseau et applicative). Parmi les données contenues dans cette réponse, se trouve également l’adresse – Device Adress (
DevAddr) sur 32 bits – qu’utilisera l’équipement pour communiquer sur le réseau.
A chaque nouvelle session, les clés de session sont renouvelées.

Mé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 :

#define freqPlan = TTN_FP_EU868
Définition de plan de fréquence pour l'Europe

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 :

#define freqPlan = TTN_FP_EU868
Définition de plan de fréquence pour l'Europe

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.

#include <TheThingsNetwork.h>

// Set your AppEUI and AppKey
const char *appEui = "70B3D57ED0010A3D";
const char *appKey = "C8E009F58F77B4BF2F789BC98FCF6BD3";

#define loraSerial Serial1
#define debugSerial Serial

// Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915
#define freqPlan TTN_FP_EU868

TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan);

void setup()
{
  loraSerial.begin(57600);
  debugSerial.begin(9600);

  // Wait a maximum of 10s for Serial Monitor
  while (!debugSerial && millis() < 10000)
    ;

  // Set callback for incoming messages
  ttn.onMessage(message);

  debugSerial.println("-- STATUS");
  ttn.showStatus();

  debugSerial.println("-- JOIN");
  ttn.join(appEui, appKey);
}

void loop()
{
  debugSerial.println("-- LOOP");

  // Prepare payload of 1 byte to indicate LED status
  byte payload[1];
  payload[0] = (digitalRead(LED_BUILTIN) == HIGH) ? 1 : 0;

  // Send it off
  ttn.sendBytes(payload, sizeof(payload));

  delay(10000);
}

void message(const byte *payload, size_t length, port_t port)
{
  debugSerial.println("-- MESSAGE");

  // Only handle messages of a single byte
  if (length != 1)
  {
    return;
  }

  if (payload[0] == 0)
  {
    debugSerial.println("LED: off");
    digitalWrite(LED_BUILTIN, LOW);
  }
  else if (payload[0] == 1)
  {
    debugSerial.println("LED: on");
    digitalWrite(LED_BUILTIN, HIGH);
  }
}
QuickStart.ino

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.

ttn.onMessage(message);

...

void message(const byte *payload, size_t length, port_t port)
{
  debugSerial.println("-- MESSAGE");

  // Only handle messages of a single byte
  if (length != 1)
  {
    return;
  }

  if (payload[0] == 0)
  {
    debugSerial.println("LED: off");
    digitalWrite(LED_BUILTIN, LOW);
  }
  else if (payload[0] == 1)
  {
    debugSerial.println("LED: on");
    digitalWrite(LED_BUILTIN, HIGH);
  }
}
Gestion de l'évènement onMessage

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 :

ttn.sendBytes(payload, sizeof(payload));

delay(10000);
Délai entre deux transmissions

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.

#include <TheThingsNetwork.h>

// First install "DHT sensor library" via the Library Manager
#include <DHT.h>

// Set your AppEUI and AppKey
const char *appEui = "70B3D57ED0010A3D";
const char *appKey = "C8E009F58F77B4BF2F789BC98FCF6BD3";

#define loraSerial Serial1
#define debugSerial Serial

// Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915
#define freqPlan TTN_FP_EU868

#define DHTPIN 2

//Choose your DHT sensor moddel
#define DHTTYPE DHT11
//#define DHTTYPE DHT21
//#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan);

void setup()
{
  loraSerial.begin(57600);
  debugSerial.begin(9600);

  // Wait a maximum of 10s for Serial Monitor
  while (!debugSerial && millis() < 10000)
    ;

  debugSerial.println("-- STATUS");
  ttn.showStatus();

  debugSerial.println("-- JOIN");
  ttn.join(appEui, appKey);

  dht.begin();
}

void loop()
{
  debugSerial.println("-- LOOP");

  // Read sensor values and multiply by 100 to effictively have 2 decimals
  uint16_t humidity = dht.readHumidity(false) * 100;

  // false: Celsius (default)
  // true: Farenheit
  uint16_t temperature = dht.readTemperature(false) * 100;

  // Split both words (16 bits) into 2 bytes of 8
  byte payload[4];
  payload[0] = highByte(temperature);
  payload[1] = lowByte(temperature);
  payload[2] = highByte(humidity);
  payload[3] = lowByte(humidity);

  debugSerial.print("Temperature: ");
  debugSerial.println(temperature);
  debugSerial.print("Humidity: ");
  debugSerial.println(humidity);

  ttn.sendBytes(payload, sizeof(payload));

  delay(10000);
}
Transmettre la température et l'humidité

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 :

function Decoder(bytes, port) {
  // Decode an uplink message from a buffer
  // (array) of bytes to an object of fields.
  var decoded = {};

  if (port === 1) 
  {
    decoded.temperature = (bytes[0]*256+bytes[1])/100;
    decoded.humidity = (bytes[2]*256+bytes[3])/100;
  }

  return decoded;
Fonction decoder appliqué au payload

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
uint8_t humidity = dht.readHumidity(false) * 2;

  // false: Celsius (default)
  // true: Farenheit
  uint16_t temperature = dht.readTemperature(false) * 10;

  byte payload[7];
  
  payload[0] = 0x01;
  payload[1] = 0x67;
  payload[2] = highByte(temperature);
  payload[3] = lowByte(temperature);
  payload[4] = 0x02;
  payload[5] = 0x68;
  payload[6] = humidity;

  debugSerial.print("Temperature: ");
  debugSerial.println(temperature);
  debugSerial.print("Humidity: ");
  debugSerial.println(humidity);

  ttn.sendBytes(payload, sizeof(payload));
Adaptation du payload à transmettre au format Cayenne LPP

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.

  • 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 :

Cliquez sur Add device et ...

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

#include <TheThingsNetwork.h>
#include <CayenneLPP.h>

CayenneLPP lpp(51);

...

float humidity = dht.readHumidity(false);

  // false: Celsius (default)
  // true: Farenheit
  float temperature = dht.readTemperature(false);

 lpp.reset();
 lpp.addTemperature(1, temperature);
 lpp.addRelativeHumidity(2, humidity);

  debugSerial.print("Temperature: ");
  debugSerial.println(temperature);
  debugSerial.print("Humidity: ");
  debugSerial.println(humidity);

  ttn.sendBytes(lpp.getBuffer(), lpp.getSize());

...
Utilisation de la librairie CayenneLPP
Commentaires (0) Trackbacks (0)

Désolé, le formulaire de commentaire est fermé pour le moment

Trackbacks are disabled.