Proof of Coverage LoRaWAN pour TTN, CampusIoT et Helium
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.
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).
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.
L'objectif du projet est :
- d'analyser et visualiser la qualité des liens radio (RSSI,SNR,ESP) entre les stations en fonction de leur éloignement.
- de visualiser la cartographie des stations fixes et mobiles (avec R, Python, GeoJSON, Leaflet) à la TTNMapper.
- (optionnel) d'automatiser l'enregistrement des endpoints ABP répresentant les stations 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 de CampusIoT et de TTN (~300000 messages pour une vingtaine de stations).
- Scripts Bash et NodeJS pour préparer, 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 :
{ "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.90645980834961, "longitude": 5.784584045410156, "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 } }