Zum Inhalt springen

Svxlink via MQTT und NodeRed Fernsteuern

Da ich immer wieder gefragt werde wie man SvxLink steuern kann, wenn man zb kein DTMF Befehl senden kann oder Zugriff auf den Repeater hat.

Hier möchte ich euch eine Möglichkeit vorstellen Svxlink so zu steuern das man denken könnte ihr wählt die DTMF Tasten auf dem Funkgerät, nur das ihr dies zb auf dem Smartphone macht.

Um es lauffähig zu bekommen sind einige Sachen nötig, aber mit Geduld und Spucke bekommt man das hin 😉

Step 1: MQTT Server
Der Server kann auf dem Relais Raspberry oder jeden beliebigen Raspberry im LAN oder auf einen Server installiert werden, mein MQTT-Server läuft auf dem vServer, dies hat den Vorteil das ich keine DYNDNS und Port Freigaben im Netzwerk einstellen muss.
Alle MQTT Clients können sich mittels User und PW am Server anmelden und ihre MQTT Topics abschicken und empfangen.

Installation MQTT

# Pakete installieren
sudo apt-get install mosquitto mosquitto-clients
# Den Broker so einrichten, dass er beim Systemstart ausgeführt wird:
sudo systemctl enable mosquitto.service  

Testen

Mosquitto läuft jetzt und kann mit den Clients getestet werden:

# Auf Meldungen an das Topic "test" warten
mosquitto_sub -h localhost -v -t test

In einem zweiten Terminal:

# Eine Nachricht an das Topic "test" senden
mosquitto_pub -h localhost -t test -m "Hello"

Im ersten Terminal erscheint:

test Hello

Sicherheit

Um den Broker abzusichern und eine Passwort-Abfrage zu installieren sind drei Schritte notwendig.

  1. Mosquitto für Zugriffslisten konfigurieren
  2. Benutzer mit Passwörtern anlegen
  3. Zugriffsrechte vergeben

Mosquitto für Zugriffslisten konfigurieren Die Datei /etc/mosquitto/conf.d/acl.conf mit folgendem Inhalt anlegen:

acl_file /etc/mosquitto/conf.d/acl
password_file /etc/mosquitto/conf.d/passwd
allow_anonymous false  # Kein Zugriff für Benutzer ohne Passwort

Benutzer mit Passwörtern anlegen

Benutzer werden mit ihren Passwörtern in der Datei passwd gespeichert. Angelegt werden sie mit dem Befehl mosquitto_passwd. Er fragt für den angegebenen Benutzernamen ein Passwort ab und speichert es in der Passwort-Datei.

sudo mosquitto_passwd /etc/mosquitto/conf.d/passwd admin

Das wiederholt man mit allen Benutzern, die man gerne hätte.

Zugriffsrechte vergeben

Die Zugriffsrechte werde dann in der acl-Datei festgelegt:

# admin darf alles
user admin
topic readwrite #
topic readwrite $SYS/#
 
# Relais darf alles lesen, aber nur bestimmte Topics schreiben
# um Steuer-Befehle abzusenden
user relais
topic readwrite relais/#
 
# Relais_1 hat auch sein eigenes Topic mit kompletten Rechten
user relais1
topic readwrite relais1/#
 
# Und das gleiche für die Relais_2
user relais2
topic readwrite Relais2/#

Jeder bekommt nur die Rechte, die er wirklich benötigt.
Jetzt noch den Broker neu starten, damit die Config übernommen wird:

sudo systemctl restart mosquitto.service

Weiter gehts mit NodeRed

da es einige gute Anleitungen im Netz gibt so verlinke ich hier mal eine für den Raspberry
KLICK

Soweit so gut !!!

Wenn ihr MQTT und NodeRed nun laufen habt dann müssen wir einen kleine Änderung an der Svxlink.conf vornehmen.

cd /etc/svxlink/
nano svxlink.conf

jetzt wird je nachdem welche Logic (Simplex / Repeater) ihr verwendet der pty Befehl gesetzt.

[RepeaterLogic]
.
DTMF_CTRL_PTY=/home/pi/remote/pty.RepeaterLogic
.

Svxlink neu starten

zum Testen im Terminal folgendes Eingeben

echo "123#" > /home/pi/remote/pty.RepeaterLogic

im Log prüfen oder mit 2ten Terminal ausführen….
Achtung Rechte müssen passen User/group falls nicht geht.

NodeRed

in Arbeit ….

Ein Gedanke zu „Svxlink via MQTT und NodeRed Fernsteuern“

  1. Hallo Jens,
    das wollte ich gerade probieren, aber ich kann wegen fehlender Rechte nichts an das pty Terminal senden.
    Das ist auch logisch, da ja svxlink unter dem User svxlink läuft,der bei der Installation angelegt wurde.
    Ein Versuch mit su -c “echo…..” klappt nicht,da der User svxlink kein Passwort hat?
    Wo ist der Trick?

    73 DG5LM
    Matthias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Welcome to FM-FunkNetz !?