LoRaWAN


LoRaWAN steht für Long Range Wide Area Network und ist ein energieeffizientes Funk-Protokoll für das Internet der Dinge (IoT). Es ermöglicht die Übertragung kleiner Datenmengen über große Entfernungen mit extrem geringem Energieverbrauch, weshalb batteriebetriebene Geräte wie Sensoren lange Laufzeiten von bis zu 10 Jahren erreichen können. LoRaWAN ist ideal für Anwendungen wie Smart Cities, Smart Farming und Industrie 4.0, bei denen eine vernetzte Erfassung von Daten aus dem Umfeld nötig ist. 


Um LoRaWAN nutzen zu können, benötigen Sie 


  1. ein LoRaWAN-fähiges Gerät (Node / Sensor)
  2. ein Gateway und 
  3. einen LoRaServer mit Netzwerkverbindung


Die Geräte senden ihre Daten an das Gateway, das diese dann (z.B. mittels Python-Script) an den Netzwerkserver überträgt.


ELS-Professional unterstützt LoRaWAN durch Empfang von GPS-Koordinaten. 



1. In der Geräteverwaltung wird bei der Geräteart eines neuen Gerätes "LaRaWAN" eingestellt:



Nach Eingabe der Node-ID kann dieses Gerät einem Einsatzmittel per Drag&Drop zugeteilt werden. Mehr muss in ELS nicht eingestellt werden.



2. Was braucht man


Gerät / Software

Beschreibung

🟦 Meshtastic-Gerät (z. B. T-Beam oder T-Echo)

Sendet LoRa-Mesh-Daten (z. B. GPS-Position)

💻 Computer oder Raspberry Pi

Läuft das Python-Skript, das die Daten weiterleitet

🔌 USB-Kabel

Verbindung zwischen Gerät und Computer

🐍 Python (Version 3.9 oder höher)

Zum Ausführen des Skripts

🌐 Internet- oder Netzwerkzugang

Damit das Skript Daten an den Zielserver senden kann



3. Python installieren

unter Windows

  1. Lade Python herunter:
    👉 https://www.python.org/downloads/


  1. Wichtig: Beim Installieren Häkchen setzen bei
    “Add Python to PATH”


  1. Nach der Installation:
    Öffne die Eingabeaufforderung (cmd) und tippe:

python --version


Wenn etwas wie Python 3.12.x erscheint → alles ok ✅


4. Ordner anlegen

Erstelle auf deinem PC einen Ordner, z. B.

C:\meshtastic\


Öffne diesen Ordner und lege eine neue Datei an mit dem Namen:


meshtastic_gps_forward.py


5. Python-Script für den Empfang der Daten mit der Weiterleitung an ELS:


Kopiere diesen Text und füge ihn dort ein:



import meshtastic
from meshtastic.serial_interface import SerialInterface
import pandas as pd
import time
import socket
import json

def get_gps_data(nodes):
    gps_data = []
    for node_id, node in nodes.items():
        position = node.get('position')
        user = node.get('user', {}).get('longName', 'Unknown')

        entry = {
            "Quelle": "LORAWAN",
            "Node ID": node_id,
            "Name": user,
            "Battery": node.get('batteryLevel', 'N/A')
        }

        if position:
            entry.update({
                "Latitude": position.get('latitude', 'N/A'),
                "Longitude": position.get('longitude', 'N/A'),
                "Altitude": position.get('altitude', 'N/A'),
            })
        else:
            entry.update({
                "Latitude": "No GPS",
                "Longitude": "No GPS",
                "Altitude": "N/A",
            })

        gps_data.append(entry)
    return gps_data

# Verbindung zu Meshtastic
interface = SerialInterface()

# Ziel-IP und Port anpassen!
###################################################################################
TCP_IP = "192.168.0.10"   # IP-Adresse des Zielservers, auf dem ELS als Server läuft (BEISPIEL)
###################################################################################
TCP_PORT = 4750

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print("Verbinde mit Server...")
try:
    sock.connect((TCP_IP, TCP_PORT))
    print("✅ TCP-Verbindung hergestellt.")

    print("Verbunden mit Meshtastic-Gerät...")

    while True:
        nodes = interface.nodes
        gps_data = get_gps_data(nodes)
        json_data = json.dumps(gps_data)

        print("\n📍 Aktuelle GPS-Daten:")
        for n in gps_data:
            print(n)

        try:
            sock.sendall(json_data.encode("utf-8"))
            print("➡️ Daten erfolgreich gesendet.")
        except Exception as e:
            print(f"❌ Fehler beim Senden: {e}")

        time.sleep(5)

except KeyboardInterrupt:
    print("\n⏹️ Programm beendet.")
except Exception as e:
    print(f"❌ Fehler: {e}")
finally:
    interface.close()
    sock.close()



6. Benötigte Software installieren

Öffne wieder die Eingabeaufforderung und gib ein:

cd C:\meshtastic

pip install meshtastic pandas


Wenn alles korrekt installiert wurde, erscheinen keine Fehlermeldungen.


7. Gerät anschließen


  1. Stecke das Meshtastic-Gerät per USB an den Computer.
  2. Warte ein paar Sekunden, bis es erkannt wurde.
    (Windows zeigt es unter „COM3“ oder ähnlich an.)

Wenn das Gerät nicht automatisch erkannt wird, kann man das Skript anpassen:


interface = SerialInterface(devPath="COM3")



8. Skript starten

Im selben Fenster:

python meshtastic_gps_forward.py


Wenn alles funktioniert, sieht man etwas wie:


Verbinde mit Server...

✅ TCP-Verbindung hergestellt.

Verbunden mit Meshtastic-Gerät...

📍 Aktuelle GPS-Daten:

{'Node ID': 1234, 'Name': 'Tracker1', 'Latitude': 52.1, 'Longitude': 13.4}

➡️ Daten erfolgreich gesendet.



9. Daten auf dem Server empfangen

Der Server (PC mit ELS-Professional)
lauscht auf Port 4750 und nimmt die JSON-Daten entgegen.

Ist die übertragene Node-ID in den ELS-Geräteeinstellungen einem Einsatzmittel zugeordnet, so wird dies nun auf der Karte in ELS angezeigt.


10. Programm automatisch starten (optional)

unter Windows:

  1. Erstelle eine Verknüpfung zu:


python.exe "C:\meshtastic\meshtastic_gps_forward.py"


Lege die Verknüpfung in den Autostart-Ordner:


shell:startup


unter Raspberry Pi:

Öffne die Konsole und tippe:


crontab -e


Füge unten hinzu:


@reboot python3 /home/pi/meshtastic_gps_forward.py &



Damit ist das System einsatzbereit.
Das Skript läuft im Hintergrund, liest die GPS-Daten aus dem Meshtastic-Netz
und sendet sie regelmäßig an ELS.