Dans cet article, je vais vous montrer comment réaliser une passerelle LoRaWAN avec un raspberry PI4, un chapeau IoT LoRaWAN. En supplément, je présente comment j’ai essayé d’utiliser un module 4G pour la transmission des données.
Dans cet article, nous allons voir
- comment ajouter une passerelle à votre console TTN (The Things Network)
- comment préparer votre Raspberry
- comment la connecter à un autre Raspebrry avec un module 4G, via les ports ethernet (eth0)
Matériel
- Raspberry Pi4
- IoT LoRa Gateway HAT for Raspberry Pi (EUR 143.50) avec l’antenne
- 1x SD card (min 8G)
- 1x câble Ethernet
- un clavier et une souris ainsi qu’un écran
Ajout d’une passerelle dans la console TTN (The Things Network)
Connectez-vous à votre compte (si non créez un compte) et allez dans votre console et cliquez sur Gateway puis register a gateway
Suivez les indications ci-dessous
Gateway ID
Saisissez un ID unique
Ne cochez pas « I’m using the legagcy packet forwarder »
Description
Saisissez une description concernant votre passerelle
Frequency Plan
Vous devez sélectionner la fréquence pour votre région. Comme nous sommes en Europe, nous sélectionnons Europe 868Mhz.
Router
Sélectionner le routeur le plus proche de votre région. Vous devriez sélectionner ttn-router-eu pour l’Europe.
Location / Antenna placement
Indiquez les positions GPS de votre passerelle ainsi cliquez sur Outdoor s’il est placé à l’extérieur, ce qui le but de la passerelle que nous configurons
Enregistrer votre nouvelle passerelle puis cliquez sur Settings, puis sur information. Renseignez les champs comme indiquez dans l’image ci-dessous
Brand: Multi-channel Raspberry Pi gateway
Model: Raspberry Pi with Pi Supply Gateway HAT
Et finalement, cliquez sur Update Gateway
Assemblage
Installer l’IoT LoRa Gateway HAT sur votre Raspberry de la sorte, sans oublier l’antenne. Pour l’installation, j’ai utilisé cette antenne que vous recevez normalement avec la Gateway. Ensuite, placez le dissipateur de chaleur sur la partie argentée du RAK833. N’alimentez pas encore votre Raspberry.
Préparation du Raspberry
L’installation se fera grâce à une image et comme je le propose dans cet exemple. Nous allons directement utiliser un zip que vous pouvez télécharger ici ou cette version (2019-07-31).
Téléchargez et installez la dernière version d’Etcher et créez l’image sur la carte SD
Une fois fait, retirez et réinsérez la carte SD dans votre Mac, et créez un fichier ‘ssh’ dans le dossier boot, pour activer ssh lors du premier démarrage du Raspberry (L’exemple est donné depuis un Mac)
touch /Volumes/boot/ssh
Ceci vous permettra d’accéder à votre Raspberry en ligne de commande, avant d’avoir configurer votre Raspberry.
ssh pi@iotloragateway.local #Le mot de passe de ‘pi’ par défaut est ‘raspberry’
Ceci est particulièrement utile si vous êtes à l’aise avec les lignes de commande et si vous ne pouvez/voulez pas connecter un écran à votre Raspberry.
Éjectez votre carte SD et insérez la dans le Raspberry.
Puis connectez votre Raspberry au routeur à l’aide du câble Ethernet. Connectez votre souris, clavier et écran à votre Raspberry.
Si vous avez créé le dossier
/Volumes/boot/ssh
vous pouvez vous passer de votre écran.
Alimenter votre Raspberry après avoir branché l’antenne.
Configuration du Raspberry
Vous avez donc connecté votre clavier, souris et vous avez connecté votre Raspberry au routeur WiFi avec le câble Ethernet. Il est indispensable qu’elle soit sur le même réseau que votre ordinateur (j’utilise un Mac pour cet exercice.
Ouvrez un terminal (sous Mac ou Linux)
Profitons pour mettre votre Raspberry à jour et installer vim
sudo apt-get update sudo apt-get upgrade sudo apt-get install vim
Modification du mot de passe
Tapez la commande
sudo passwd pi
et saisissez et confirmer votre nouveau mot de passe
Activation de SSH
Si vous n’avez pas créé le dossier /Volumes/boot/ssh, cette étape est indispensable. Saisissez la commande suivante
sudo raspi-config
(votre Raspberry devrait être en anglais, sur un clavier Suisse-fançais le – est le ‘)
Choisissez l’option 5 Interfacing Options, puis P2 SSH puis yes
Activation de VNC (Optionnel)
Choisissez l’option 5 Interfacing Options, puis P3 VNC puis yes.
Dans mon cas, il a installé plusieurs packages.
Configuration du WiFi
Cette étape est utile si vous ne désirez plus utiliser la câble Ethernet et de connecter votre Raspberry sur le WiFi de votre lieu.
Saisissez la commande suivante
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ajoutez les lignes suivantes (attention aux tablatures) et indiquez le SSID et le mot de passe de votre WiFi
network={ ssid="The_SSID_of_your_wifi" psk="Your_wifi_password" }
redémarrez votre Raspberry. Vous pouvez travailler sans votre câble Ethernet. Bien entendu, si cela ne fonctionne pas, il faudra le reconnecter et vérifier vos saisies. (je continue avec le câble Ethernet)
Configuration de la passerelle (Gateway)
Depuis votre navigateur FireFox ou Chrome, saisissez
http://iotloragateway.local
Sous Windows vous allez devoir trouver l’adresse IP de votre passerelle. Ceci peut-être facilement trouvé, depuis votre routeur (généralement accessible avec l’adresse IP 192.168.0.1), en cherchant iotloragateway, dans la liste des périphériques connectés à votre routeur.
Vous allez devoir saisir le login
nom d’utilisateur (username): pi
mot de passe (password): raspberry
Note: si vous avez changé votre mot de passe avec la command ‘sudo passwd pi’, vous devez saisir le nouveau mot de passe
A noter que la section Internet Connectivity doit être verte avec le texte All Good, contrairement à ce qui est indiqué sur l’image. Si ce n’est pas le cas, vérifier votre connexion à internet.
Configuration
Dans cette étape, vous allez avoir besoin de votre Gateway ID et le Gateway Key depuis votre console TTN. Rendez-vous sur votre console et recherchez la Gateway que nous avons créé précédemment.
Cliquez sur le menu Packet Fowarder Config et recopiez la Gateway ID et la Gateway Key. Dans le premier champs Contact Email Address, indiquez votre adresse e-mail
puis cliquez sur Update Configuration.
Une fois fait, cliquez sur le menu Sytsem Controls et redémarrez (Restart) votre passerelle
Vérification
Depuis votre console TTN, vous devriez voir le statut avec un point vert « connected ». Last seen devrait avoir un temps récent (en seconde). Finalement, vous devriez voir des messages reçus « Received message »
Vous pouvez aussi vérifier le trafic de votre gateway depuis l’onglet « traffic ».
Sur votre page d’accueil de votre passerelle
http://iotloragateway.local/
vous devriez aussi pouvoir voir les messages reçus
A noter que la section Internet Connectivity doit être verte avec le texte All Good, contrairement à ce qui est indiqué sur l’image. Si ce n’est pas le cas, vérifier votre connexion à internet.
Dans mon cas, je n’ai pas de chiffres, car je n’ai pas de nœuds à proximité qui transmettent des données sur ma passerelle
Commandes utiles
sudo systemctl status iot-lora-gateway.service sudo systemctl stop iot-lora-gateway.service sudo systemctl start iot-lora-gateway.service sudo systemctl restart iot-lora-gateway.service journalctl -u iot-lora-gateway.service --no-pager -n 3000 less /opt/iotloragateway/iot-lora-gateway-reset.sh
Supplément
Comment transmettre les données via un autre Raspberry avec un module 4G
Suivez scrupuleusement cet article.
Une fois fait, connecter votre Raspberry avec un câble ethernet et démarrez-les.
Problèmes possibles et solutions
Il se peut qu’en démarrant les deux Pi en même temps, le Raspberry qui fait office de Gateway LoRaWAN, n’arrive pas à être vu par TTN.
Exécutez la commande suivante
sudo systemctl status iot-lora-gateway.service
En premier temps, il devrait vous afficher ceci
pi@iotloragateway:~ $ sudo systemctl status iot-lora-gateway.service ● iot-lora-gateway.service - IOT LoRa Gateway Packet Forwarder Loaded: loaded (/lib/systemd/system/iot-lora-gateway.service; enabled; vendor preset: enabled) Active: activating (start-pre) since Wed 2020-10-21 15:34:29 BST; 15s ago Cntrl PID: 478 (iot-lora-gatewa) Tasks: 2 (limit: 2065) CGroup: /system.slice/iot-lora-gateway.service ├─478 /bin/bash /opt/iotloragateway/iot-lora-gateway-reset.sh └─481 php -f /var/www/iotloragateway/html/updatePacketfwd.php Oct 21 15:34:29 iotloragateway systemd[1]: Starting IOT LoRa Gateway Packet Forwarder...
Puis (ou vous pourriez lire directement ceci)
sudo systemctl status iot-lora-gateway.service ● iot-lora-gateway.service - IOT LoRa Gateway Packet Forwarder Loaded: loaded (/lib/systemd/system/iot-lora-gateway.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-10-21 15:35:06 BST; 42s ago Process: 478 ExecStartPre=/opt/iotloragateway/iot-lora-gateway-reset.sh (code=exited, status=0/SUCCESS) Main PID: 620 (iot-lora-gatewa) Tasks: 6 (limit: 2065) CGroup: /system.slice/iot-lora-gateway.service └─620 /opt/iotloragateway/iot-lora-gateway Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: # INFO: JIT queue contains 0 beacons. Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: ### GPS IS DISABLED! Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: ### [PERFORMANCE] ### Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: # Upstream radio packet quality: 0.00%. Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: ### [ CONNECTIONS ] ### Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: # bridge.eu.thethings.network: Connected Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: # Semtech status report send. Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: ##### END ##### Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: 15:35:39 INFO: [TTN] bridge.eu.thethings.network RTT 108 Oct 21 15:35:39 iotloragateway iot-lora-gateway[620]: 15:35:39 INFO: [TTN] send status success for bridge.eu.thethings.network
C’est que tout est bon.
En revanche, si vous lisez ceci, ce qui devrait être le cas à chaque démarrage, c’est qu’il y a un problème
ERROR: [TTN] Connection to server "" failed, retry in 30 seconds
Il vous faudra redémarrer le service suivant et vérifier
sudo systemctl restart iot-lora-gateway.service sudo systemctl status iot-lora-gateway.service
Pour remédier à ce problème, il faudrait modifier un ligne d’un script. Voici les commentaires du support pi supply
The actual error is that the first line of the reset script runs an update script to ensure the packet forwarder is up to date. This then explains why it’s not then working after the timeout expires as this was what was confusing me as to why it didn’t then kick back into life after it expired and the connection was then there.
I think for your application the best solution in this case would to then be to disable this command that updates on boot, it means if you change details on the TTN console you’d need to then either use the Web UI to get it to update.
If you could comment out the line in the iot-lora-gateway-reset.sh file on line number 4 (php -f command) this should disable the script that seems to be causing issues.
Solutions
Donc pour résoudre ce problème, la meilleurs solution actuelle est d’éditer le fichier
sudo nano /opt/iotloragateway/iot-lora-gateway-reset.sh
et de commenter la ligne 4
#php -f /var/www/iotloragateway/html/updatePacketfwd.php
Il faudra encore que j’optimise ceci.
… à suivre.
Autres solutions à tester
- Lancer la commande ‘sudo systemctl restart iot-lora-gateway.service’ juste après le boot en modifiant crontab
- créer un script géré par crontab, qui va analyser le retour de la commande ‘journalctl -u iot-lora-gateway.service –no-pager -n 3000’ et s’il trouve ERROR: [TTN] Connection to server « » failed , exécuter la commande ‘sudo systemctl restart iot-lora-gateway.service’
… à suivre
Bravo
Vous venez de configurer une nouvelle passerelle.
Dans l’article suivant, je vais vous montrer comment ajouter un Router 3/4G avec le module Quectel à votre passerelle
Soutenez-nous
Si vous avez aimé cet article, faîtes un don de quelques Euro pour le financement de mes projets et du matériel.