Cette configuration est utilisée pour certains concentrateurs de Lorawan basés sur de petits ordinateurs tels que Raspberry Pi ou autres. Par exemple, cela fonctionne bien avec le bouclier RAK831 PI Zero
Et pour le champ IC880A pour Raspberry Pi V2 ou V3.
Téléchargez l'image Raspbian Lite et flashez-la sur votre carte SD à l'aide de Etchecher.
Une fois flashé, vous devez effectuer des modifications sur la partition de démarrage (utilisateurs de Windows, supprimer puis repluger la carte SD)
Créez un fichier ssh factice sur cette partition. Par défaut, SSH est désormais désactivé, ce qui est nécessaire pour l'activer. Utilisateurs de Windows, assurez-vous que votre fichier n'a pas d'extension comme .txt etc.
Si vous devez être en mesure d'utiliser OTG (Accès à la console pour n'importe quel ordinateur en conectant le port PI vers l'ordinateur USB), ouvrez le fichier cmdline.txt . Soyez prudent avec ce fichier, il est très pointilleux avec son formatage! Chaque paramètre est séparé par un seul espace (il n'utilise pas de nouvelles lignes). Insérer modules-load=dwc2,g_ether après rootwait quiet .
Le nouveau fichier cmdline.txt devrait ressembler à ceci
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=37665771-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet modules-load=dwc2,g_ether init=/usr/lib/raspi-config/init_resize.sh
Pour OTG, ajoutez également le bas du fichier config.txt , sur une nouvelle ligne
dtoverlay=dwc2
Et comme je n'aime pas la fonction SD de redimensionnement automatique (je préfère le faire manuellement à partir de raspi-config ), supprimez également du fichier cmdline.txt
init=/usr/lib/raspi-config/init_resize.sh
Le nouveau fichier cmdline.txt devrait ressembler à ceci
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=37665771-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet modules-load=dwc2,g_ether
Enfin, sur la même partition (démarrage), pour permettre à votre PI de se connecter à votre WiFi après le premier démarrage, créez un fichier nommé wpa_supplicant.conf pour permettre au PI d'être connecté sur votre réseau WiFi.
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR-WIFI-SSID"
psk="YOUR-WIFI-PASSWORD"
}
Bien sûr, Changez Country, SSID et PSK avec vos propres paramètres WiFi.
C'est tout, éjectez la carte SD de votre ordinateur, mettez-la dans votre Raspberry Pi Zero. Il faudra jusqu'à 90s pour démarrer (plus court sur les bottes suivantes). Vous pouvez ensuite s'y rendre en utilisant raspberrypi.local comme adresse. Si le WiFi ne fonctionne pas, connectez-le via USB à votre ordinateur, il devrait alors apparaître comme un périphérique Ethernet USB.
N'oubliez pas que le mot de connexion / motw par défaut (SSH ou console série) est PI / Raspberry.
Alors s'il vous plaît pour des raisons de sécurité, vous devez modifier ce mot de passe par défaut
passwd Ce script 1_pi_config.sh préparera votre environnement PI, créera et configurera un utilisateur de Loragw, ajouter un accès à SPI, I2C, UART. Il réduira la mémoire vidéo à 16 Mo pour permettre à la mémoire maximale de faire des choses. Il permette également une excellente préservation des cartes SD LOG2RAM.
wget https://raw.githubusercontent.com/ch2i/LoraGW-Setup/master/1_Pi_Config.sh
chmod ug+x 1_Pi_Config.sh
sudo ./1_Pi_Config.sh Connectez-vous avec l'utilisateur loragw et si vous avez changé le nom d'hôte en loragw-xxyy, utilisez cette commande
git clone https://github.com/ch2i/LoraGW-Setup
cd LoraGW-Setup
Vous devez maintenant enregistrer votre nouveau GW sur TTN avant la prochaine étape, voir l'inscription à la passerelle, le script GW_ID et GW_KEY sera demandé par le script
sudo ./2_Setup.shVoilà, si vous utilisez Pi Zero Shield, la LED 2 doit être vert et vous devriez pouvoir voir votre toute nouvelle passerelle sur TTN
Vérifiez que tout va bien également au démarrage, redémarrez votre passerelle.
sudo reboot
Le pilote WS2812B utilise le canal DMA, et avec une nouvelle version Raspbian, en utilisant DMA 5, vous corrompra votre carte SD. voir ce problème. Il est maintenant résolu mais si vous avez Old GW avec de vieux scripts, assurez-vous de mettre à jour la ligne de script /opt/loragw/monitor_ws2812.py à partir de
strip = Adafruit_NeoPixel ( 2 , gpio_led , 800000 , 5 , False , 64 , 0 , ws . WS2811_STRIP_GRB )à (en utilisant le canal DMA 10 au lieu de 5)
strip = Adafruit_NeoPixel ( 2 , gpio_led , 800000 , 10 , False , 64 , 0 , ws . WS2811_STRIP_GRB ) - GPIO 4 (Blue) Blink => Internet access OK
- GPIO 18 (Yellow) Blink => local web server up & running
- GPIO 24 (Green)
- Blink => packet forwarder is running
- Fixed => Shutdown OK, can remove power
- GPIO 23 (Red)
- Blink every second, one of the previous service down (local web, internet, )
- Middle bink on every bad LoRaWAN packet received
- Lot of short blink => Activity on SD Card (seen a boot for example)
Vous pouvez modifier le comportement du code LED à la fin du script /opt/loragw/monitor.py
Vous pouvez appuyer (et laisser appuyer sur le bouton de poussée de l'interrupteur, les LED deviennent bien rouges et après 2s, commencez à clignoter en bleu. Si vous libérez le bouton lorsqu'ils clignotent en bleu, le PI initiera un arrêt. Alors laissez-le 30S avant de supprimer le pouvoir.
Si vous avez un Raspberry Pi 3 avec ce bouclier IC880A, le fichier /boot/config.txt a été amélioré avec les lignes suivantes:
# When system if Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=24
La LED verte (GPIO24) restera allumée lorsque vous pourrez retirer la puissance de la passerelle. C'est vraiment un excellent indicateur.
Vous pouvez également sélectionner la LED GPIO utilisée pour remplacer la LED d'activité si vous en avez besoin.
# Activity LED
dtoverlay=pi3-act-led,gpio=23
La LED rouge (GPIO23) clignote sur l'activité.
Si vous avez un Raspberry Pi Zero avec ce RAK831, vous pouvez modifier le fichier /boot/config.txt pour choisir l'une des deux fonctionnalités suivantes:
# When system is Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=26
La LED verte (GPIO26) restera allumée lorsque vous pourrez retirer la puissance de la passerelle. C'est vraiment un excellent indicateur.
Vous pouvez également choisir de sélectionner cette LED pour remplacer la LED d'activité si vous en avez besoin.
# Activity LED
dtparam=act_led_gpio=26
La LED Greend (GPIO26) clignote sur l'activité.
Vous ne pouvez sélectionner qu'une des 2 options, pas les deux en même temps.
Le sofware installé est situé sur /opt/loragw , j'ai changé ce nom (original était ttn-gateway) simplement parce que toutes mes passerelles ne sont pas connectées à TTN, donc je voulais avoir une configuration plus générique.
ls -al /opt/loragw/
total 344
drwxr-xr-x 3 root root 4096 Jan 21 03:15 .
drwxr-xr-x 5 root root 4096 Jan 21 01:01 ..
drwxr-xr-x 9 root root 4096 Jan 21 01:03 dev
-rw-r--r-- 1 root root 6568 Jan 21 01:15 global_conf.json
-rwxr-xr-- 1 root root 3974 Jan 21 01:15 monitor-gpio.py
-rwxr-xr-- 1 root root 3508 Jan 21 03:15 monitor.py
-rwxr-xr-- 1 root root 4327 Jan 21 01:15 monitor-ws2812.py
-rwxr-xr-x 1 root root 307680 Jan 21 01:14 mp_pkt_fwd
-rwxr-xr-- 1 root root 642 Jan 21 01:36 start.shLes fonctions de bouton de clignotement LED sont effectuées avec le service Monitor.py (lancé par Systemd au démarrage). Il existe 2 versions de ce service (avec SymLink), une avec LED WS2812B et une autre pour GPIO Classic GPIO, comme celle de ce bouclier IC880A. Donc, si vous voulez changer, vous pouvez le faire comme ça
sudo systemctl stop monitorDans ce cas, vous n'avez pas de RVB WS2812B LED sur le bouclier, mais GPIO Classic One. Le bouton-poussoir GPIO pour éteindre le PI n'est pas non plus sur le même GPIO, vous devez donc configurer le service de moniteur correct.
sudo rm /opt/loragw/monitor.py
sudo ln -s /opt/loragw/monitor-gpio.py /opt/loragw/monitor.pysudo systemctl start monitorsudo journalctl -f -u loragw -- Logs begin at Sun 2018-01-21 14:57:08 CET. --
Jan 22 01:00:41 loragw loragw[240]: ### GPS IS DISABLED!
Jan 22 01:00:41 loragw loragw[240]: ### [PERFORMANCE] ###
Jan 22 01:00:41 loragw loragw[240]: # Upstream radio packet quality: 100.00%.
Jan 22 01:00:41 loragw loragw[240]: # Semtech status report send.
Jan 22 01:00:41 loragw loragw[240]: ##### END #####
Jan 22 01:00:41 loragw loragw[240]: 01:00:41 INFO: [TTN] bridge.eu.thethings.network RTT 52
Jan 22 01:00:41 loragw loragw[240]: 01:00:41 INFO: [TTN] send status success for bridge.eu.thethings.network
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: Disabling GPS mode for concentrator's counter...
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: host/sx1301 time offset=(1516578208s:159048µs) - drift=-55µs
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: Enabling GPS mode for concentrator's counter.
Jan 22 01:01:11 loragw loragw[240]: ##### 2018-01-22 00:01:11 GMT #####
Jan 22 01:01:11 loragw loragw[240]: ### [UPSTREAM] ###
Jan 22 01:01:11 loragw loragw[240]: # RF packets received by concentrator: 0
Jan 22 01:01:11 loragw loragw[240]: # CRC_OK: 0.00%, CRC_FAIL: 0.00%, NO_CRC: 0.00%
Jan 22 01:01:11 loragw loragw[240]: # RF packets forwarded: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # PUSH_DATA datagrams sent: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # PUSH_DATA acknowledged: 0.00%
Jan 22 01:01:11 loragw loragw[240]: ### [DOWNSTREAM] ###
Jan 22 01:01:11 loragw loragw[240]: # PULL_DATA sent: 0 (0.00% acknowledged)
Jan 22 01:01:11 loragw loragw[240]: # PULL_RESP(onse) datagrams received: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # RF packets sent to concentrator: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # TX errors: 0
Jan 22 01:01:11 loragw loragw[240]: ### BEACON IS DISABLED!
Jan 22 01:01:11 loragw loragw[240]: ### [JIT] ###
Jan 22 01:01:11 loragw loragw[240]: # INFO: JIT queue contains 0 packets.
Jan 22 01:01:11 loragw loragw[240]: # INFO: JIT queue contains 0 beacons.
Jan 22 01:01:11 loragw loragw[240]: ### GPS IS DISABLED!
Jan 22 01:01:11 loragw loragw[240]: ### [PERFORMANCE] ###
Jan 22 01:01:11 loragw loragw[240]: # Upstream radio packet quality: 0.00%.
Jan 22 01:01:11 loragw loragw[240]: # Semtech status report send.
Jan 22 01:01:11 loragw loragw[240]: ##### END #####
Jan 22 01:01:11 loragw loragw[240]: 01:01:11 INFO: [TTN] bridge.eu.thethings.network RTT 53
Jan 22 01:01:11 loragw loragw[240]: 01:01:11 INFO: [TTN] send status success for bridge.eu.thethings.network
Construisez d'abord
./build_legacy.sh
Si vous souhaitez utiliser le transfert de paquet hérité, vous devrez modifier le fichier /opt/loragw/start.sh pour remplacer la dernière ligne
./mp_pkt_fwd.sh
par
./poly_pkt_fwd.sh
sudo systemctl stop loragw
sudo systemctl start loragwSi vous avez choisi LOG2RAM pour réduire l'écriture de la carte SD, vous devez modifier une rotation du fichier journal pour éviter que le disque RAM soit complet.
Pour cela, vous devez modifier chaque fichier dans /etc/logrotate.d/ , et sur chaque fichier:
delaycompress (cela évite le vieux journal non compressé)rotate n par Rotate 12 (c'est l'historique du fichier journal maximum)hourly contenant dailymonthly par daily (rotation de rotation chaque jour)Dans ce cas, nous avons obtenu le dernier 12h avec 1 fichier par heure. Bien sûr, vous pouvez ajuster ces paramètres aux pieds dont vous avez besoin, c'est juste un exemple,
file /etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 12
hourly
missingok
notifempty
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 12
hourly
missingok
notifempty
compress
sharedscripts
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Cliquez sur l'image pour voir la vidéo
Voici d'autres fonctionnalités que j'utilise sur mes passerelles: