Hiermit teile ich gerne mein neuestes Projekt mit euch.
Vorweg:
Ich entschuldige mich schon mal für die vielen Rechtschreibfehler, die ich hoffentlich bei den Überarbeitungen alle finden werde
Falls jemand das Projekt nachbauen möchte würde ich mich über Anregungen / Verbesserungen der Anleitung freuen.
Sie ist sicher weit weg von perfekt...
Problem:
Die Öffnung des Hoftors sowie des Garagentors erfolgte mittels KNX-RF Handsendern der Fa. Gira über Gira KNX RF Gateways.
Trotz Platzierung des KNX-RF Gateways direkt an der Torsäule mit der Antenne frei nach draußen war die Reichweite bescheiden.
Da wir an einer Durchgangsstraße hausen kommt es öfter vor dass man den Verkehr hinter sich aufhält weil das Funksignal erst kurz vor dem Tor empfangen wird und dann das Tor ja auch erst noch gemütlich auffahren muss.
Das ist für alle Nutzer nicht zufriedenstellend und musste abgelöst werden.
Meine overkill-Lösung dafür: LoraWAN
Anforderungen:
Folgende Anforderungen hatte ich an das System gestellt:
- Reichweite des Funksignals vom Handsender mehr als 100 meter vom fahrenden Auto zum Gateway
- Unterscheidung der Handsender um verschiedene Funktionen je nach Nutzer auszulösen
- kompakte Handsender
- lange Batterielaufzeit der Handsender
- einfache Erweiterung um weitere Handsender o.ä.
- Sicherheit (Verschlüsselung)
- System soll autark sein. Mehr dazu unten..
- Lora Gateway soll auch für die Community über TTN nutzbar sein.
Autarkie:
Üblicherweise senden die Lora Gateways ihre Pakete an eine Cloud.
Die bekannteste z.B. TTN (The Things Network)
Autarkie ist bei diesem Anwesen sehr wichtig.
Es wurden enorm viele Anstrengungen in Notstromversorgung, Redundanzen, Überwachung etc. gesteckt.
Somit sollte bei einem potentiellen Internetausfall / größeren Stromausfall, etc.. (was auch immer kommen mag) trotzdem möglich sein u.a. das Tor über die Lora Handsender zu bedienen.
Bei einer Cloudanbindung wäre dies nicht mehr gewährleistet. (Es wäre jedoch um Welten einfacher einzurichten gewesen)
Somit musste lokal eine Serverstruktur zur Kommunikation für Lora aufgebaut werden.
Hardware:
Als Gateway kam ein Lorix One vom Schweizer Hersteller WifX zum Einsatz. https://www.lorixone.io/
Das Gateway hat mich am meisten überzeugt. Es sollte jedoch ebenso mit den vielen anderen GWs funktionieren.
z.B. Kerlink, Tektelic, Dragino, Cisco, RAK, und viele mehr.
Es gibt auch einige Eigenbauprojekte für Raspi, ESP und Co.
Alles in allem gefiel mir der Lorix am besten. Netzwerkkabel rein und rauf aufs Dach.
Der Lorix wird per passive PoE (leider kein richtiges PoE) mit dem mitgelieferten Adapter versorgt.
Somit nur ein Netzwerkkabel für den Lorix nötig.
Wenn möglich sollte man zur Erzielung der größtmöglichen Reichweite das Gateway außen und möglichst hoch am besten bei freier Sicht montieren.
Bei uns sieht das nun so aus:
20220205_142118.jpg
Den Lorix kann man so wie er ist am Mast montieren oder mit diesem Adapter auch einfach an die Wand oder wie hier an einen L-Stein.
Handsender:
Für meinen Geschmack gibt es noch deutlich zu wenig Auswahl an Handsendern für Lora oder sie sind schwer zu finden.
Ich habe mich für die Milesight WS101 Handsender entschieden.
WS101-Lorawan-Smart-Button-01.png
Mit 50 x 50 mm und 18mm dicke würde ich sie noch als Handsender bezeichnen. Habe aktuell nichts kompakteres gesehen. Aber so viel Platz sollte im Auto noch sein.
Es sind sogar Klebepads dabei. Man könnte sie auch unters Armaturenbrett kleben
Bei mir liegt er im Flaschenhalter für schnellen Zugriff.
Kosten:
Man kann vorallem beim Gateway deutlich sparen denke ich wenn man es selbst baut, oder ein günstigeres kauft.
Architektur:
LoraWAN-Architektur.png
Als lokal laufenden LoraWAN Server Stack habe ich mich für Chirpstack entschieden: https://www.chirpstack.io/
Hier findet man auch nochmal einen Überblick über die Serverstruktur: https://www.chirpstack.io/project/architecture/
Chirpstack ist extrem skalierbar und Mandantenfähig. Also eigentlich totaler overkill um damit ein Hoftor zu fahren.
Aber es erfüllt meine Anforderung an ein von außen unabhängiges System durch hausinternen Betrieb.
Serverhardware & OS:
Das ursprüngliche Testsetup wurde auf einem RaspberryPi 3 B+ installiert.
Für den Produktivbetrieb läuft das ganze nun auf einem Intel NUC7i3.
Ist aber im Grunde egal. Es sollte auch mit Docker und Co. funktionieren
Als Betriebssystem läuft Debian 11 auf dem NUC.
Ubuntu wäre laut Chirpstack auch ok.
Es gibt auch rpm für RHEL und Co.
Für Docker gibts wohl auch was: https://hub.docker.com/r/chirpstack/...ateway-bridge/
Die Grundinstallation von Debian und co. erkläre ich jetzt nicht extra.
Wir starten mit einem frischen Debian 11 in meinem Fall..
Ein paar grundlegende Dinge wären auf einem frischen Debian zu empfehlen:
Software:
Chirpstack Packet Multiplexer:
Aufgabe: Der Packet Multiplexer empfängt die Pakete vom Gateway (Lorix z.B.) und leitet sie an mehrere Server weiter.
z.B. einmal auf den Hausinternen Chirpstack und andererseits auch an die TTN Cloud damit die Community das GW nutzen kann.
Der Multiplexer empfängt auch Pakete von TTN und Co. sowie dem hausinternen Chirpstack und gibt sie ans Gateway weiter. (Downlink)
Will man sein Gateway nicht im TTN o.ä. verfügbar machen würde man den Paket Multiplexer nicht benötigen.
Hinzufügen des Chirpstack Repos für Debian:
Chirpstack Packet Multiplexer installieren und Config Verzeichnis & File erstellen:
Nun bearbeiten wir die Configdatei mit einem Editor unserer Wahl. z.B: vim
Beispiele der Configdatei findet man hier: https://github.com/brocaar/chirpstac...t-multiplexer/
Beispielconfig:
Die Gateway ID ist eine eindeutige Nummer vom Gateway. Zu finden u.a. in der WebUI von Lorix.
Nach anpassen der Config starten wir den Packet Multiplexer und prüfen den Status:
Lorix One Config:
In der Weboberfläche vom Lorix wählt man folgenden Forwarder aus:
- UDP Packet Forwarder
Und unter Configuration - Global stellt man als server_address: die IP des Hosts auf dem der Chirpstack läuft ein.
ebenso die Ports.
Bildschirmfoto_2022-02-19_um_00_12_56.jpg
Danach speichern und den Forwarder starten bzw. restarten.
Das Gateway sendet periodisch Heartbeats. Die sollten somit schon am Packet Multiplexer ankommen.
TTN / TTS Registrierung:
Nun erstellt man sich einen kostenloser Account unter https://www.thethingsnetwork.org/
Nach dem Login in der Console kann man unter Gateways -> Add Gateway sein Gateway hinzufügen.
Dafür braucht man nur die UID des Gateways zu wissen.
Bildschirmfoto_2022-02-19_um_00_24_23.jpg
Danach sollte man nach kurzer Zeit schon einige Heartbeats sehen können.
Bildschirmfoto_2022-02-19_um_00_26_14.jpg
Chirpstack Gateway Bridge:
Aufgabe:
Die Gateway Bridge wandelt die Pakete vom Gateway (die sie über den multiplexer bekommt) in JSON und Protobuf zur weitern Verwendung im Network Server um.
Die Daten von Gateway Bridge und Network Server werden über einen MQTT Broker ausgetauscht.
Somit installieren wir als Zwischenschritt nun einen mosquitto Server sofern nicht schon einer im Netzwerk vorhanden ist.
mosquitto installieren:
offene Ports kann man übrigens u.a. mit folgendem Befehl prüfen:
Auf den Funktionstest mit mosquitto gehe ich hier nicht ein. Ich habe das Gefühl die Anleitung wird schon lange genug.
weiter gehts mit der Installation der Gateway Bridge:
Beispielconfig:
Nun noch die Bridge starten und prüfen:
Die nächsten Schritte folgen demnächst hier drunter... stay tuned.
Vorweg:
Ich entschuldige mich schon mal für die vielen Rechtschreibfehler, die ich hoffentlich bei den Überarbeitungen alle finden werde

Falls jemand das Projekt nachbauen möchte würde ich mich über Anregungen / Verbesserungen der Anleitung freuen.
Sie ist sicher weit weg von perfekt...
Problem:
Die Öffnung des Hoftors sowie des Garagentors erfolgte mittels KNX-RF Handsendern der Fa. Gira über Gira KNX RF Gateways.
Trotz Platzierung des KNX-RF Gateways direkt an der Torsäule mit der Antenne frei nach draußen war die Reichweite bescheiden.
Da wir an einer Durchgangsstraße hausen kommt es öfter vor dass man den Verkehr hinter sich aufhält weil das Funksignal erst kurz vor dem Tor empfangen wird und dann das Tor ja auch erst noch gemütlich auffahren muss.
Das ist für alle Nutzer nicht zufriedenstellend und musste abgelöst werden.
Meine overkill-Lösung dafür: LoraWAN
Anforderungen:
Folgende Anforderungen hatte ich an das System gestellt:
- Reichweite des Funksignals vom Handsender mehr als 100 meter vom fahrenden Auto zum Gateway
- Unterscheidung der Handsender um verschiedene Funktionen je nach Nutzer auszulösen
- kompakte Handsender
- lange Batterielaufzeit der Handsender
- einfache Erweiterung um weitere Handsender o.ä.
- Sicherheit (Verschlüsselung)
- System soll autark sein. Mehr dazu unten..
- Lora Gateway soll auch für die Community über TTN nutzbar sein.
Autarkie:
Üblicherweise senden die Lora Gateways ihre Pakete an eine Cloud.
Die bekannteste z.B. TTN (The Things Network)
Autarkie ist bei diesem Anwesen sehr wichtig.
Es wurden enorm viele Anstrengungen in Notstromversorgung, Redundanzen, Überwachung etc. gesteckt.
Somit sollte bei einem potentiellen Internetausfall / größeren Stromausfall, etc.. (was auch immer kommen mag) trotzdem möglich sein u.a. das Tor über die Lora Handsender zu bedienen.
Bei einer Cloudanbindung wäre dies nicht mehr gewährleistet. (Es wäre jedoch um Welten einfacher einzurichten gewesen)
Somit musste lokal eine Serverstruktur zur Kommunikation für Lora aufgebaut werden.
Hardware:
Als Gateway kam ein Lorix One vom Schweizer Hersteller WifX zum Einsatz. https://www.lorixone.io/
Das Gateway hat mich am meisten überzeugt. Es sollte jedoch ebenso mit den vielen anderen GWs funktionieren.
z.B. Kerlink, Tektelic, Dragino, Cisco, RAK, und viele mehr.
Es gibt auch einige Eigenbauprojekte für Raspi, ESP und Co.
Alles in allem gefiel mir der Lorix am besten. Netzwerkkabel rein und rauf aufs Dach.
Der Lorix wird per passive PoE (leider kein richtiges PoE) mit dem mitgelieferten Adapter versorgt.
Somit nur ein Netzwerkkabel für den Lorix nötig.
Wenn möglich sollte man zur Erzielung der größtmöglichen Reichweite das Gateway außen und möglichst hoch am besten bei freier Sicht montieren.
Bei uns sieht das nun so aus:
20220205_142118.jpg
Den Lorix kann man so wie er ist am Mast montieren oder mit diesem Adapter auch einfach an die Wand oder wie hier an einen L-Stein.
Handsender:
Für meinen Geschmack gibt es noch deutlich zu wenig Auswahl an Handsendern für Lora oder sie sind schwer zu finden.
Ich habe mich für die Milesight WS101 Handsender entschieden.
WS101-Lorawan-Smart-Button-01.png
Mit 50 x 50 mm und 18mm dicke würde ich sie noch als Handsender bezeichnen. Habe aktuell nichts kompakteres gesehen. Aber so viel Platz sollte im Auto noch sein.
Es sind sogar Klebepads dabei. Man könnte sie auch unters Armaturenbrett kleben

Kosten:
- Lorix One Gateway: 499,- €
- Wandhalter Lorix : 17,99 €
- Blitzschutz: 29,90 €
- Milesight WS101: 39,90 €
- evtl. Raspberrypi für Software ...
Man kann vorallem beim Gateway deutlich sparen denke ich wenn man es selbst baut, oder ein günstigeres kauft.
Architektur:
LoraWAN-Architektur.png
Als lokal laufenden LoraWAN Server Stack habe ich mich für Chirpstack entschieden: https://www.chirpstack.io/
Hier findet man auch nochmal einen Überblick über die Serverstruktur: https://www.chirpstack.io/project/architecture/
Chirpstack ist extrem skalierbar und Mandantenfähig. Also eigentlich totaler overkill um damit ein Hoftor zu fahren.
Aber es erfüllt meine Anforderung an ein von außen unabhängiges System durch hausinternen Betrieb.
Serverhardware & OS:
Das ursprüngliche Testsetup wurde auf einem RaspberryPi 3 B+ installiert.
Für den Produktivbetrieb läuft das ganze nun auf einem Intel NUC7i3.
Ist aber im Grunde egal. Es sollte auch mit Docker und Co. funktionieren
Als Betriebssystem läuft Debian 11 auf dem NUC.
Ubuntu wäre laut Chirpstack auch ok.
Es gibt auch rpm für RHEL und Co.
Für Docker gibts wohl auch was: https://hub.docker.com/r/chirpstack/...ateway-bridge/
Die Grundinstallation von Debian und co. erkläre ich jetzt nicht extra.
Wir starten mit einem frischen Debian 11 in meinem Fall..
Ein paar grundlegende Dinge wären auf einem frischen Debian zu empfehlen:
Code:
apt install vim htop sudo gnupg net-tools pwgen ntp
Chirpstack Packet Multiplexer:
Aufgabe: Der Packet Multiplexer empfängt die Pakete vom Gateway (Lorix z.B.) und leitet sie an mehrere Server weiter.
z.B. einmal auf den Hausinternen Chirpstack und andererseits auch an die TTN Cloud damit die Community das GW nutzen kann.
Der Multiplexer empfängt auch Pakete von TTN und Co. sowie dem hausinternen Chirpstack und gibt sie ans Gateway weiter. (Downlink)
Will man sein Gateway nicht im TTN o.ä. verfügbar machen würde man den Paket Multiplexer nicht benötigen.
Hinzufügen des Chirpstack Repos für Debian:
Code:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1CE2AFD36DBCCA00 sudo echo "deb [URL]https://artifacts.chirpstack.io/packages/3.x/deb[/URL] stable main" | sudo tee /etc/apt/sources.list.d/chirpstack.list sudo apt update
Code:
apt install chirpstack-packet-multiplexer mkdir /etc/chirpstack-packet-multiplexer && touch /etc/chirpstack-packet-multiplexer/chirpstack-packet-multiplexer.toml
Code:
vim /etc/chirpstack-packet-multiplexer/chirpstack-packet-multiplexer.toml
Beispielconfig:
Code:
[general] # Log level # # debug=5, info=4, warning=3, error=2, fatal=1, panic=0 log_level=4 [packet_multiplexer] # Bind # # The interface and port on which the packet-multiplexer will bind for receiving # data from the packet-forwarder (UDP data). bind="0.0.0.0:1700" # Backends # # The backends to which the packet-multiplexer will forward the # packet-forwarder UDP data. # # Example: [[packet_multiplexer.backend]] # # Host # # # # The host:IP of the backend. host="eu1.cloud.thethings.network:1700" # # # Uplink only # # # This backend is for uplink only. It is not able to send data # # back to the gateways. uplink_only=false # # # Gateway IDs # # # # The Gateway IDs to forward data for. # gateway_ids = [ # "0101010101010101", # "0202020202020202", # ] gateway_ids = ["FCC12DFFFFFFF123"] # ------ Local Chirpstack Network Server ------- # [[packet_multiplexer.backend]] host="localhost:1800" uplink_only=false gateway_ids = ["FCC12DFFFFFFF123"]
Nach anpassen der Config starten wir den Packet Multiplexer und prüfen den Status:
Code:
systemctl start chirpstack-packet-multiplexer systemctl enable chirpstack-packet-multiplexer systemctl status chirpstack-packet-multiplexer
In der Weboberfläche vom Lorix wählt man folgenden Forwarder aus:
- UDP Packet Forwarder
Und unter Configuration - Global stellt man als server_address: die IP des Hosts auf dem der Chirpstack läuft ein.
ebenso die Ports.
Bildschirmfoto_2022-02-19_um_00_12_56.jpg
Danach speichern und den Forwarder starten bzw. restarten.
Das Gateway sendet periodisch Heartbeats. Die sollten somit schon am Packet Multiplexer ankommen.
TTN / TTS Registrierung:
Nun erstellt man sich einen kostenloser Account unter https://www.thethingsnetwork.org/
Nach dem Login in der Console kann man unter Gateways -> Add Gateway sein Gateway hinzufügen.
Dafür braucht man nur die UID des Gateways zu wissen.
Bildschirmfoto_2022-02-19_um_00_24_23.jpg
Danach sollte man nach kurzer Zeit schon einige Heartbeats sehen können.
Bildschirmfoto_2022-02-19_um_00_26_14.jpg
Chirpstack Gateway Bridge:
Aufgabe:
Die Gateway Bridge wandelt die Pakete vom Gateway (die sie über den multiplexer bekommt) in JSON und Protobuf zur weitern Verwendung im Network Server um.
Die Daten von Gateway Bridge und Network Server werden über einen MQTT Broker ausgetauscht.
Somit installieren wir als Zwischenschritt nun einen mosquitto Server sofern nicht schon einer im Netzwerk vorhanden ist.
mosquitto installieren:
Code:
apt install mosquitto mosquitto-clients // create Auth File and first User mosquitto_passwd -c /etc/mosquitto/pwfile chirp-gw-bridge ENTER PASSWORD // add following lines to /etc/mosquitto/mosquitto.conf listener 1883 password_file /etc/mosquitto/pwfile // start and check status systemctl start mosquitto systemctl enable mosquitto systemctl status mosquitto
Code:
netstat -tulpen
weiter gehts mit der Installation der Gateway Bridge:
Code:
apt install chirpstack-gateway-bridge vim /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml
Code:
# This configuration provides a Semtech UDP packet-forwarder backend and # integrates with a MQTT broker. Many options and defaults have been omitted # for simplicity. # # See https://www.chirpstack.io/gateway-bridge/install/config/ for a full # configuration example and documentation. # Gateway backend configuration. [backend] # Backend type. type="semtech_udp" # Semtech UDP packet-forwarder backend. [backend.semtech_udp] # ip & Port to bind the UDP listener to # # Example: 0.0.0.0:1700 to listen on port 1700 for all network interfaces. # This is the listener to which the packet-forwarder forwards its data # so make sure the 'serv_port_up' and 'serv_port_down' from your # packet-forwarder matches this port. udp_bind = "0.0.0.0:1800" # Achtung !!! Hier Port 1800 da auf Port 1700 schon der Multiplexer läuft... # Integration configuration. [integration] # Payload marshaler. # # This defines how the MQTT payloads are encoded. Valid options are: # * protobuf: Protobuf encoding # * json: JSON encoding (easier for debugging, but less compact than 'protobuf') marshaler="protobuf" # MQTT integration configuration. [integration.mqtt] # Event topic template. event_topic_template="gateway/{{ .GatewayID }}/event/{{ .EventType }}" # Command topic template. command_topic_template="gateway/{{ .GatewayID }}/command/#" # MQTT authentication. [integration.mqtt.auth] # Type defines the MQTT authentication type to use. # # Set this to the name of one of the sections below. type="generic" # Generic MQTT authentication. [integration.mqtt.auth.generic] # MQTT server (e.g. scheme://host:Port where scheme is tcp, ssl or ws) server="tcp://127.0.0.1:1883" # Connect with the given username (optional) username="chirp-gw-bridge" # Connect with the given password (optional) password="YOUR-PASSWORD"
Code:
systemctl start chirpstack-gateway-bridge systemctl enable chirpstack-gateway-bridge systemctl status chirpstack-gateway-bridge
Kommentar