LoRaWAN Testnetz in zwei Stunden

lorawan-testnetz-in-zwei-stunden

Bedingt durch Neugier und unser Engagement in der Arbeitsgruppe Smart City unseres Branchenverbandes Hannover IT war unser Ziel, schnell ein LoRaWAN Testnetz aufzubauen um Erfahrung bezüglich der konkreten Reichweite unter realen Bedingungen zu sammeln sowie The Things Network als Plattform besser zu verstehen.

Dafür haben wir uns mit fertigen und für den Produktiveinsatz geeigneten Komponenten ausgestattet.

LoraWan Antenne im Karton LORIX One Gateway Unboxing

LoraWan Antenne eingepackt Alle LORIX-One-Komponenten auf einen Blick

Lorix One LORIX One mit Strom versorgt, bootet zum ersten Mal

LoraWan Antenne Vorläufige Position des Gateways

Lorawan Erste Verbindung mit dem FTD zum Gateway

Installation des Gateways

Das LORIX One ist ein in sich geschlossenes System, welches lediglich Anschluss an ein Netzwerk und eine Stromversorgung benötigt. Nachdem wir das Gateway über den mitgelieferten PoE Injektor mit unserem Netzwerk verbunden haben, geben wir dem Gerät ein paar Minuten Zeit um zu booten.

Achtung: das Gateway verwendet 24V passives PoE, sodass ein normaler PoE-Switch (802.3af, 802.3at) nicht als Stromversorgung taugt.

Bei Auslieferung ist eine statische IP Adresse im Lorix ONE gesetzt: 192.168.1.50. Wir konfigurieren diese also kurz statisch auf dem PC der zum Einrichten genutzt wird.
ip address add 192.168.1.1/24 dev enp0s31f6
Wobei enp0s31f6 der Name des verbundenen Netzwerk Interface ist. Ein kurzer ping-Test zeigt uns die Erreichbarkeit des Gateways.

ping 192.168.1.50

Jetzt loggen wir uns per SSH direkt auf dem LORIX System ein und bestätigen die Abfrage nach dem korrekten Host Key mit „yes“. Der vorgegebene Benutzername ist “admin”. Das Passwort ist “lorix4u”.

ssh 192.168.1.50 -l admin

Lorix One

Zunächst ändern wir das Passwort und kopieren unseren SSH Key, um uns in Zukunft ohne Passwort einloggen zu können.

sama5d4-lorix-one-512:~$ passwd
[...]
logout
ssh-copy-id admin@192.168.1.50
[...]
ssh 192.168.1.50 -l admin

Und wir ändern das default root Passwort.

sudo passwd

In unserem Netzwerk werden Adressen per DHCP vergeben. Also passen wir die Konfiguration entsprechend an, wie es im Abschnitt 7.5.2 der Anleitung vorgegeben ist. Konfigurationsdateien müssen dabei mit root-Rechten, also mit vorangestelltem sudo-Befehl bearbeitet werden.

sama5d4-lorix-one-512:~$ sudo vi /etc/network/interfaces

## Neuer Inhalt der Konfigurationsdatei
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# Main wired interface
auto eth0
iface eth0 inet dhcp

sama5d4-lorix-one-512:~$ sudo /etc/init.d/networking restart

Die Verbindung per SSH wird nach den vorangehenden Zeilen getrennt, da das Gerät jetzt versucht, eine neue IP Adresse per DHCP zu beziehen.
Mit der auf dem Gerät aufgedruckten MAC Adresse lässt sich das DHCP Lease leicht finden. Auf unserer PFSense Firewall z.B. im Bereich Status > DHCP Leases.
Die aktive SSH Session kann mittels Shift+~ gefolgt von einem . beendet werden. Danach verbinden wir uns erneut zum LORIX und bestätigen den Host-Key für die neue Adresse mittels yes.

➜  ~ ssh admin@192.168.2.62

Wir korrigieren noch schnell die Zeitzone

ls -la /etc/localtime
lrwxrwxrwx 1 root root 29 Oct 27 15:37 /etc/localtime -> /usr/share/zoneinfo/Universal

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

date
Mon Apr 15 17:24:43 CEST 2019

Das angezeigte Datum ist nicht korrekt. Ein ps aux | grep ntp verrät uns, dass keine Synchronisation mit einem NTP Server stattfindet. Das holen wir nach.

sudo /etc/init.d/ntpd start

date
Tue Jul  2 16:47:16 CEST 2019

Das sieht schon besser aus. Also richten wir ntpd als automatisch gestarteten Dienst ein.

sudo update-rc.d ntpd defaults
System startup links for /etc/init.d/ntpd already exist.

Einen Reboot später läuft der ntp Daemon:

sudo reboot; logout

ps aux | grep ntp
ntp        945  0.1  1.4   5412  1724 ?        Ssl  16:48   0:00 /usr/sbin/ntpd -u ntp:ntp -p /var/run/ntpd.pid -g

Jetzt ist es Zeit, das Gateway an eine Community anzubinden.

Einbinden in The Things Network

Wir möchten unsere Hannover Community im The Things Network erweitern:

Connect Gateways The Things Network

Login The Things Network

Das LORIX One ist bereits für diverse Communities vorbereitet. Die Details kann man im Wiki des Hestellers nachlesen. In Kürze: es wird das Script clouds-manager.sh bereitgestellt, mit dem die verschiedenen Packet-Forwarder gesteuert werden.

sama5d4-lorix-one-512:~$ sudo /etc/init.d/clouds-manager.sh status
Password:
Cloud loriot status:
/opt/lorix/clouds/loriot/loriot-gw (pid 894) is running…

Das loriot Gateway läuft also gerade. Wir stoppen zunächst das Gateway.

sudo /etc/init.d/clouds-manager.sh stop

Und konfigurieren das Cloud Manager Script:

/etc/init.d/clouds-manager.sh configure

==========================================
| LORIX One clouds manager configuration |
==========================================

Actual configuration:
  autostart=true
      cloud=loriot

Do you want to enable autostart at boot time?
[Yes|No]
 > Yes

Which cloud app. do you want to use ?
[loriot|packet-forwarder|ttn|manual]
 > ttn

New configuration:
  autostart=true
      cloud=ttn

Wir nutzten eine Outdoor Antenne, genauer die L-com HyperLink HG908U-PRO. Mit einer Indoor Antenne müsste die Konfiguration wie folgt angepasst werden.

cd /opt/lorix/clouds/ttn/
sudo cp EU_global_conf_2dBi_indoor.json global_conf.json

Jetzt passen wir die allgemeine Konfiguration an, nachdem wir ein Backup des Original erstellt haben:

sudo cp local_conf.json local_conf.json.orig
sudo vi local_conf.json

{
/* Put there parameters that are different for each gateway (eg. pointing one gateway to a test server while the others stay in production) */
/* Settings defined in global_conf will be overwritten by those in local_conf */
    "gateway_conf": {
        "gateway_ID": "0001fcc23d0b63e4",

        "servers": [
            {
                "server_address": "router.eu.thethings.network",
                "serv_port_up": 1700,
                "serv_port_down": 1700,
                "serv_enabled": true
            }
        ],
        "fake_gps": false,
        "ref_latitude": 10,
        "ref_longitude": 20,
        "ref_altitude": -1,
        "contact_email": "info@atmina.de",
        "description": "Hannover City-Center Gateway at ATMINA Solutions"
    }
}

Wir setzen gateway_ID auf eine Kombination aus Zähler (0001) und MAC Adresse des Gateways und ändern die contact_email und description. Die GPS Position setzen wir manuell im TTN Backend. Wir sichern die Konfigurationsdatei, da sie bei einem Update der Softwarepakete überschrieben wird, und starten dann den Forwarder.

sudo cp local_conf.json local_conf.json.atmina
/etc/init.d/clouds-manager.sh start

In der TTN Console legen wir ein neues Gateway an, setzen die gateway_ID auf obigen Wert und legen mit Hilfe der Satellitenkarte die Position fest.

Registrierung The Things Network

Wenige Minuten später können wir unser Gateway mit dem Status „online“ in der Konsole finden. Im Tab „Traffic“ kann live mitverfolgt werden, welche Pakete das Gateway an die TTN Infrastruktur weiterleitet und umgekehrt (uplink, downlink).

Was kommt als nächstes

Insgesamt haben wir in weniger als zwei Stunden ein LoRaWAN Outdoor-Gateway aufgebaut. Wir werden mit der Position der Antenne experimentieren und Reichweiten-Tests mit TTNMapper durchführen. Danach sollen eigene Sensorknoten und eine eigene TTN Application folgen. Wir freuen uns auf regen Austausch auf dem Hannover LoRaWAN Day am 1. November.

Links

Themen:

  • Softwareentwicklung
  • LoRa
  • Technik