Difference between revisions of "Proof of Coverage LoRaWAN pour TTN, CampusIoT et Helium"

From air
Jump to navigation Jump to search
Line 3: Line 3:
 
L’Internet des objets (IoD, en anglais Internet of things, IoT) représente l’extension d’Internet à des choses et à des lieux du monde physique. L’objet connecté à Internet est identifié par le réseau de manière unique comme l’est un ordinateur relié à Internet. L’objet connecté embarque l’intelligence nécessaire pour générer des données (paramètres de fonctionnement, données d’usage, mesures physiques de son environnement, etc.), en capter de son environnement et les transférer automatiquement sur le réseau. A l’autre bout, une plateforme informatique centralise et traite les données collectées et gère les services à valeur ajoutée créés de l’exploitation des historiques des mesures collectées au cours du temps. Les domaines d’application de l’Internet des objets couvrent des pans entiers d’activités (e-santé, e-inclusion, sport connecté, ville connectée, usine du futur, agriculture de précision, gestion des risques naturelles et industrielles, smart office, smart building, logistique, déplacement doux, etc.). L’internet des objets est considéré comme la troisième évolution du Web.
 
L’Internet des objets (IoD, en anglais Internet of things, IoT) représente l’extension d’Internet à des choses et à des lieux du monde physique. L’objet connecté à Internet est identifié par le réseau de manière unique comme l’est un ordinateur relié à Internet. L’objet connecté embarque l’intelligence nécessaire pour générer des données (paramètres de fonctionnement, données d’usage, mesures physiques de son environnement, etc.), en capter de son environnement et les transférer automatiquement sur le réseau. A l’autre bout, une plateforme informatique centralise et traite les données collectées et gère les services à valeur ajoutée créés de l’exploitation des historiques des mesures collectées au cours du temps. Les domaines d’application de l’Internet des objets couvrent des pans entiers d’activités (e-santé, e-inclusion, sport connecté, ville connectée, usine du futur, agriculture de précision, gestion des risques naturelles et industrielles, smart office, smart building, logistique, déplacement doux, etc.). L’internet des objets est considéré comme la troisième évolution du Web.
   
La technologie de communication sans-fil [https://lora-alliance.org/about-lorawan/ LoRa/LoRaWAN] permet de transmettre des données à plusieurs kilomêtres de distance entre un objet connecté et un réseau de passerelles (appelé aussi station de base). LoRaWAN permet de bâtir aussi bien des réseaux IoD publics (Orange, Objenious, [https://www.helium.com/ Helium], [https://www.thethingsnetwork.org/ TheThingsNetwork]) ou privés (comme [https://campusiot.github.io/ CampusIoT], le réseau de l'Université Grenoble Alpes).
+
La technologie de communication sans-fil [https://lora-alliance.org/about-lorawan/ LoRa/LoRaWAN] permet de transmettre des données à plusieurs kilomêtres de distance entre un objet connecté et un réseau de passerelles (appelé aussi station de base). LoRaWAN permet de bâtir aussi bien des réseaux IoD publics (Orange, Objenious, [https://www.helium.com/ Helium], [https://www.thethingsnetwork.org/ TheThingsNetwork]) ou privés (comme [https://campusiot.github.io/ CampusIoT], le réseau de l'Université Grenoble Alpes). A noter, [https://www.helium.com/ Helium] rétribue les propriétaires de hotspots (aka stations) au moyen de la [https://www.sitebot.com/helium/hnt-price crypto-monnaie HNT].
   
 
La preuve de couverture (Proof of Coverage) LoRaWAN permet à un réseau LoRaWAN de connaître (et donc prouver) le voisinage d'une station en envoyant depuis une station un message d'un endpoint (activation ABP) représentant la station. L'analyse des messages dupliqués reçus permet d'établir une cartographie "sure" des stations afin de confirmer la localisation "réelle" des stations.
 
La preuve de couverture (Proof of Coverage) LoRaWAN permet à un réseau LoRaWAN de connaître (et donc prouver) le voisinage d'une station en envoyant depuis une station un message d'un endpoint (activation ABP) représentant la station. L'analyse des messages dupliqués reçus permet d'établir une cartographie "sure" des stations afin de confirmer la localisation "réelle" des stations.
Line 12: Line 12:
 
L'objectif du projet est :
 
L'objectif du projet est :
 
* d'analyser et visualiser la qualité des liens radio ([https://fr.wikipedia.org/wiki/Received_Signal_Strength_Indication RSSI],[https://en.wikipedia.org/wiki/Signal-to-noise_ratio SNR],ESP) entre les stations LoRa en fonction de leur éloignement.
 
* d'analyser et visualiser la qualité des liens radio ([https://fr.wikipedia.org/wiki/Received_Signal_Strength_Indication RSSI],[https://en.wikipedia.org/wiki/Signal-to-noise_ratio SNR],ESP) entre les stations LoRa en fonction de leur éloignement.
* de visualiser la cartographie des stations fixes et mobiles (avec R, Python, [http://geojson.io/ GeoJSON], [https://leafletjs.com/ Leaflet]) à la [https://ttnmapper.org/ TTNMapper].
+
* de visualiser la cartographie des stations fixes et mobiles (avec R, Python, [http://geojson.io/ GeoJSON], [https://leafletjs.com/ Leaflet]) à la [https://ttnmapper.org/ TTNMapper] ou [https://mappers.helium.com/ Helium Mapper].
 
* (optionnel) d'automatiser l'enregistrement des endpoints ABP répresentant les stations LoRa sur CampusIoT, TTN et Helium.
 
* (optionnel) d'automatiser l'enregistrement des endpoints ABP répresentant les stations LoRa sur CampusIoT, TTN et Helium.
   
Line 21: Line 21:
   
   
Exemple de message reçu :
+
Exemple de message reçu par les stations du réseau CampusIoT :
 
<pre>
 
<pre>
 
{
 
{
Line 61: Line 61:
 
"loRaSNR": -9,
 
"loRaSNR": -9,
 
"location": {
 
"location": {
"latitude": 44.90645980834961,
+
"latitude": 44.9,
"longitude": 5.784584045410156,
+
"longitude": 5.78,
 
"altitude": 906
 
"altitude": 906
 
}
 
}
Line 111: Line 111:
 
}
 
}
   
  +
</pre>
  +
  +
  +
  +
  +
  +
Exemple de message reçu par les hotspots (aka stations) du réseau Helium :
  +
<pre>
  +
{
  +
"app_eui": "6081F9712348BD12",
  +
"decoded": {
  +
"payload": {
  +
"gweui": "0000024b08060211",
  +
"token": 8810,
  +
"txpower": 14
  +
},
  +
"status": "success"
  +
},
  +
"dev_eui": "6081F9712348BD12",
  +
"devaddr": "58010021",
  +
"fcnt": 158,
  +
"hotspots": [
  +
{
  +
"channel": 2,
  +
"frequency": 868.5,
  +
"hold_time": 668,
  +
"id": "11YDbuzxogP71vqieSq7Xv5jYnbFkbtPtvjGjTCQgj2xN7LLYuQ",
  +
"lat": 45.19,
  +
"long": 5.71,
  +
"name": "clever-strawberry-frog",
  +
"reported_at": 1630699263694,
  +
"rssi": -102,
  +
"snr": -15,
  +
"spreading": "SF12BW125",
  +
"status": "success"
  +
}
  +
],
  +
"name": "POC",
  +
"payload": "EQIGCEsCAAAiag4=",
  +
"payload_size": 11,
  +
"port": 10,
  +
"reported_at": 1630699263694,
  +
"uuid": "a42be9d3-fa54-4578-93d7-edbd6fefcb12"
  +
}
 
</pre>
 
</pre>

Revision as of 22:34, 3 September 2021

Projet pour 2 élèves 3A (60H).

L’Internet des objets (IoD, en anglais Internet of things, IoT) représente l’extension d’Internet à des choses et à des lieux du monde physique. L’objet connecté à Internet est identifié par le réseau de manière unique comme l’est un ordinateur relié à Internet. L’objet connecté embarque l’intelligence nécessaire pour générer des données (paramètres de fonctionnement, données d’usage, mesures physiques de son environnement, etc.), en capter de son environnement et les transférer automatiquement sur le réseau. A l’autre bout, une plateforme informatique centralise et traite les données collectées et gère les services à valeur ajoutée créés de l’exploitation des historiques des mesures collectées au cours du temps. Les domaines d’application de l’Internet des objets couvrent des pans entiers d’activités (e-santé, e-inclusion, sport connecté, ville connectée, usine du futur, agriculture de précision, gestion des risques naturelles et industrielles, smart office, smart building, logistique, déplacement doux, etc.). L’internet des objets est considéré comme la troisième évolution du Web.

La technologie de communication sans-fil LoRa/LoRaWAN permet de transmettre des données à plusieurs kilomêtres de distance entre un objet connecté et un réseau de passerelles (appelé aussi station de base). LoRaWAN permet de bâtir aussi bien des réseaux IoD publics (Orange, Objenious, Helium, TheThingsNetwork) ou privés (comme CampusIoT, le réseau de l'Université Grenoble Alpes). A noter, Helium rétribue les propriétaires de hotspots (aka stations) au moyen de la crypto-monnaie HNT.

La preuve de couverture (Proof of Coverage) LoRaWAN permet à un réseau LoRaWAN de connaître (et donc prouver) le voisinage d'une station en envoyant depuis une station un message d'un endpoint (activation ABP) représentant la station. L'analyse des messages dupliqués reçus permet d'établir une cartographie "sure" des stations afin de confirmer la localisation "réelle" des stations.

LoRaWAN Proof Of Coverage


L'objectif du projet est :

  • d'analyser et visualiser la qualité des liens radio (RSSI,SNR,ESP) entre les stations LoRa en fonction de leur éloignement.
  • de visualiser la cartographie des stations fixes et mobiles (avec R, Python, GeoJSON, Leaflet) à la TTNMapper ou Helium Mapper.
  • (optionnel) d'automatiser l'enregistrement des endpoints ABP répresentant les stations LoRa sur CampusIoT, TTN et Helium.

Point de départ:

  • Jeu de données des messages LoRa de "preuve de couverture" envoyées vers les stations LoRa de CampusIoT et de TTN (~300000 messages pour une vingtaine de stations).
  • Scripts Bash et NodeJS pour préparer, enrichir, filtrer et convertir le jeu de données (qui est au format JSON).
  • (optionnel) Scripts Bash et NodeJS permettant de construire des messages du endpoint représentant la station et de les envoyer via la station.


Exemple de message reçu par les stations du réseau CampusIoT :

{
  "applicationID": "152",
  "applicationName": "PROOF_OF_COVERAGE",
  "deviceName": "POC_0000024b080603a3",
  "devEUI": "0000024b080603a3",
  "rxInfo": [
    {
      "gatewayID": "0000024b080603a3",
      "uplinkID": "0a83784a-c9ee-4c19-9414-e8caacf47f35",
      "name": "KER112_SAINTEYNARD",
      "time": "2021-09-01T09:02:31.927012Z",
      "rssi": -118,
      "loRaSNR": 6.5,
      "location": {
        "latitude": 45.2351,
        "longitude": 5.7617,
        "altitude": 1344
      }
    },
    {
      "gatewayID": "7076ff00560504ff",
      "uplinkID": "62ddad1f-c07c-47e7-854c-deeebc5ebd13",
      "name": "ISTATION_0504FF_IUT1_GAMBETTA",
      "rssi": -94,
      "loRaSNR": 9.5,
      "location": {
        "latitude": 45.185829162597656,
        "longitude": 5.725697994232178,
        "altitude": 230
      }
    },
    {
      "gatewayID": "7076ff00560502f3",
      "uplinkID": "fbaaeef9-4338-4971-9b7e-c3b316d45a1e",
      "name": "ISTATION_0502F3_MAIRIE",
      "rssi": -119,
      "loRaSNR": -9,
      "location": {
        "latitude": 44.9,
        "longitude": 5.78,
        "altitude": 906
      }
    },
    {
      "gatewayID": "7276ff0039030724",
      "uplinkID": "0f0486ba-2049-4e30-a10f-02b7a175f4f6",
      "name": "KER_FEMTO_030724_P124",
      "time": "2021-08-30T11:00:20Z",
      "rssi": -113,
      "loRaSNR": 9.2,
      "location": {
        "latitude": 45.18424498325449,
        "longitude": 5.75310230255127,
        "altitude": 220
      }
    },
    {
      "gatewayID": "7276ff0039030716",
      "uplinkID": "ae7f6125-d61a-4575-83e4-b4b08ddac10b",
      "name": "KER_FEMTO_030716_P307",
      "time": "2021-07-16T08:09:52Z",
      "rssi": -113,
      "loRaSNR": -13,
      "location": {
        "latitude": 45.18439622301354,
        "longitude": 5.753231048583985,
        "altitude": 220
      }

      ...
      
    }
  ],
  "txInfo": {
    "frequency": 868500000,
    "dr": 1
  },
  "adr": false,
  "fCnt": 31746,
  "fPort": 10,
  "data": "owMGCEsCAAD5Sg4=",
  "object": {
    "gweui": "0000024b080603a3",
    "token": 63818,
    "txpower": 14
  }
}



Exemple de message reçu par les hotspots (aka stations) du réseau Helium :

{
  "app_eui": "6081F9712348BD12",
  "decoded": {
    "payload": {
      "gweui": "0000024b08060211",
      "token": 8810,
      "txpower": 14
    },
    "status": "success"
  },
  "dev_eui": "6081F9712348BD12",
  "devaddr": "58010021",
  "fcnt": 158,
  "hotspots": [
    {
      "channel": 2,
      "frequency": 868.5,
      "hold_time": 668,
      "id": "11YDbuzxogP71vqieSq7Xv5jYnbFkbtPtvjGjTCQgj2xN7LLYuQ",
      "lat": 45.19,
      "long": 5.71,
      "name": "clever-strawberry-frog",
      "reported_at": 1630699263694,
      "rssi": -102,
      "snr": -15,
      "spreading": "SF12BW125",
      "status": "success"
    }
  ],
  "name": "POC",
  "payload": "EQIGCEsCAAAiag4=",
  "payload_size": 11,
  "port": 10,
  "reported_at": 1630699263694,
  "uuid": "a42be9d3-fa54-4578-93d7-edbd6fefcb12"
}