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.
- Mosquitto für Zugriffslisten konfigurieren
- Benutzer mit Passwörtern anlegen
- 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 ….
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