Il y a quelques mois, j'avais installé une gateway Lorawan Dragino LG308 dans dans les combles de ma maison .
Mais ce modèle n'etait pas prévu pour supporter des conditions extrêmes (chaud, le froid, la poussière, humidité), et elle a fini par me lâcher au bout de deux ans de service.
Après démontage de la passerelle, j'ai remarqué la présence d'un module Lorawan, qui par chance est compatible Raspberry (On retrouve d'ailleurs ce module sur le site Dragino) :
Cool, je vais donc recycler ce module Lorawan Dragino sur un RPI3B pour me fabriquer une nouvelle gateway Lorawan "maison".
Quelques photos du matériel:
- La gateway LG308 HS avec la carte "fille" Lorawan (en haut)
- Le Rasbperry RPI3b qui être utilisé avec la carte Lorawan
Et voila le RPI avec la carte Lorawan de la gateway Dragino:
Ca s'assemble correctement:
Installation Linux
A présent, il faut installer un OS Linux sur une carte SD pour pouvoir utiliser le Raspberry:
On télécharge l'image officielle Raspberry Pi OS version Lite, car nous avons simplement besoin d'un Linux "de base"
Plus d'infos ici : https://www.raspberrypi.org/software/operating-systems/
L'étape suivante consiste a copier l'image du système (.img) sur la carte SD:
Attention de bien choisir le block device correspondant à carte SD et pas le disque dur de votre système principal ! (paramtre "of=xxxxxx")
$ sudo dd if=2021-03-04-raspios-buster-armhf-lite.img of=/dev/mmcblk0 bs=1M
$ sudo sync
Démarrage du RPI : Au boot, l'interface réseau utilisera DHCP pour la configuration IP, mais le serveur SSH n'est pas démarré par défaut.
Pour changer ce comportement et activer le SSH, il faut monter la partition /mnt de la carte SD et de créer un fichier vide nommé 'ssh' a la racine.
Bien utile quand on a pas d'écran et de clavier, ou qu'on est un peu présse!
Vous pouvez à présent démarrer le RPI avec la carte SD et vous connecter en SSH
(login: pi, password: raspberry).
Utiliser "sudo su -" pour passer root
- Activation de l'interface spi avec "raspi-config"
La carte Lorawan utilise le bus SPI pour communiquer avec le RPI.
Il faut donc activer cette interface avec l'outil raspi-config:
- En résumé
On a installé une version Lite de Raspberry Pi OS sur une carte SD, forcé le démarrage du serveur SSH, activé l'interface SPI.
On peut passer à la suite...
Installation du packet forwarder
Le "packet forwarder" sert à communiquer avec la carte Lorawan (chipset Lora SX1301 + GPS), et les transmettre aux serveurs IoT Lorawan.
On retrouve ici une vue d'ensemble de l'architecture cible :
Nous devons donc installer ce composant logiciel (packet_forwarder), pour que les packets Lorawan soient traités par le RPI :
- Téléchargement et installation du Lora packet forwarder
$ wget http://www.dragino.com/downloads/downloads/LoRa_Gateway/PG1301/software/lorapktfwd.deb
$ sudo dpkg -i lorapktfwd.deb
- Configuration
Editer le fichier /etc/lora-gateway/local_conf.json et adapter la configuration:
{
"gateway_conf": {
"gateway_ID": "b827abcde123ffff",
"server_address": "192.168.1.251",
"gps_tty_path": "/dev/ttyAMA0",
}
}
- server_address
Adresse IP de votre serveur Lorawan (chirpstack local ou TTN)
J'ai utilisé 192.168.1.251, car j'ai installé un serveur ChirpStack dans mon réseau privé.
- gateway_ID
Il est conseillé de générer la gateway_ID a partir de l'adresse MAC de l'interface réseau, et en y ajoutant ffff à la fin. exemple:
$ ip link show eth0 | grep link | awk '{print $2"ffff"}' | sed 's/://g'
$ b827abcfe123ffff
Vous pouvez a présent redémarrer le processus "lorapktfw" :
$ root@raspberrypi:~# systemctl enable lorapktfw
$ root@raspberrypi:~# systemctl start lorapktfw
$ root@raspberrypi:~# journalctl -fu lorapktfwd
-- Logs begin at Thu 2021-03-04 23:04:24 GMT. --
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # TX errors: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON queued: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON sent so far: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # BEACON rejected: 0
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ ### [PPS] ###
Apr 20 21:49:33 raspberrypi lora_pkt_fwd[1560]: REPORT~ # SX1301 time (PPS): 362436013
Apr 20 21:49:34 raspberrypi systemd[1]: lorapktfwd.service: Succeeded.
Apr 20 21:49:34 raspberrypi systemd[1]: Stopped packet forwarder.
Apr 20 21:50:27 raspberrypi systemd[1]: Starting packet forwarder...
Apr 20 21:50:32 raspberrypi systemd[1]: Started packet forwarder.
Les logs indiquent que le service lora_pkg_fwd a bien démarré !
Bravo! vous devriez voir votre gateway en status "activé" dans votre serveur Lorawan IOT ( TTN ou Chirpstack local)