Introduction
LoRaWAN est devenu le standard incontournable pour les déploiements IoT longue portée à faible consommation. En 2026, la sécurisation des réseaux et l'intégration fluide avec les plateformes cloud comme The Things Network (TTN) sont essentielles. Ce tutoriel vous guide pas à pas dans la configuration d'un réseau complet : passerelle, enregistrement de nœuds et traitement des données. Vous apprendrez à éviter les pièges courants de la couche MAC et à optimiser le duty cycle. Chaque étape inclut du code fonctionnel que vous pouvez copier directement.
Prérequis
- Compte The Things Network (TTN) actif
- Passerelle LoRaWAN compatible (ex: RAK7246)
- Connaissances de base en Python et YAML
- Accès à un environnement Linux ou Raspberry Pi
- Capteur LoRaWAN (ex: Arduino MKR WAN 1310)
Installation des outils TTN
#!/bin/bash
sudo apt update && sudo apt install -y python3-pip mosquitto-clients
pip3 install paho-mqtt ttnCe script installe les dépendances Python nécessaires pour communiquer avec TTN via MQTT. Il configure également les clients Mosquitto pour tester les publications locales avant le déploiement distant.
Configuration de la passerelle
La passerelle agit comme pont entre les capteurs LoRa et le serveur réseau TTN. Utilisez ChirpStack ou le logiciel officiel de votre matériel. Assurez-vous que le fichier de configuration inclut les fréquences européennes correctes (868 MHz) et la bonne adresse du serveur TTN.
Fichier de configuration passerelle
gateway:
id: "0011223344556677"
server_address: "eu1.cloud.thethings.network"
server_port_up: 1700
server_port_down: 1700
frequency_plan: "EU_863_870"Ce fichier YAML définit l'identifiant unique de la passerelle et pointe vers le cluster TTN européen. Modifiez uniquement l'ID et les ports si vous utilisez une région différente.
Enregistrement du capteur sur TTN
{
"end_device": {
"ids": {
"device_id": "mon-capteur-01",
"dev_eui": "0011223344556677"
},
"lorawan_version": "MAC_V1_0_4",
"lorawan_phy_version": "PHY_V1_0_4",
"frequency_plan_id": "EU_863_870",
"root_keys": {
"app_key": "00112233445566778899AABBCCDDEEFF"
}
}
}Ce JSON est utilisé via l'API TTN pour enregistrer un appareil OTAA. Remplacez les clés par des valeurs générées aléatoirement et conservez-les secrètes.
Script Python d'envoi de données
import ttn
import time
app_id = "mon-application"
access_key = "NNSXS.XXX..."
def uplink_callback(msg, client):
print("Données reçues:", msg.payload_raw)
handler = ttn.HandlerClient(app_id, access_key)
client = handler.data()
client.set_uplink_callback(uplink_callback)
client.connect()
while True:
time.sleep(30)Ce script Python se connecte au handler TTN et écoute les uplinks. Il imprime les payloads bruts. Adaptez-le pour décoder les données capteur selon votre format.
Décodage de payload
function decodeUplink(input) {
var data = {};
data.temperature = input.bytes[0] / 2;
data.humidity = input.bytes[1];
return { data: data };
}Ce décodeur JavaScript TTN convertit les octets reçus en valeurs lisibles. Placez-le dans la console TTN pour visualiser immédiatement les mesures capteurs.
Bonnes pratiques
- Toujours utiliser OTAA plutôt qu'ABP pour une meilleure sécurité des clés
- Respecter le duty cycle régional (1% en Europe)
- Chiffrer les payloads au niveau application
- Surveiller les métriques de la passerelle via le dashboard TTN
- Mettre à jour régulièrement le firmware des nœuds
Erreurs courantes à éviter
- Oublier de configurer la bonne fréquence plan (provoque des pertes de paquets)
- Réutiliser les mêmes clés AppKey sur plusieurs appareils
- Ignorer les accusés de réception (Confirmed uplinks) sur les messages critiques
- Dépasser la limite de 10 messages par jour sans adaptative data rate
Pour aller plus loin
Approfondissez vos compétences avec nos formations certifiantes sur l'IoT industriel. Découvrez nos formations Learni.