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.serviceTesten
Mosquitto läuft jetzt und kann mit den Clients getestet werden:
# Auf Meldungen an das Topic "test" warten mosquitto_sub -h localhost -v -t testIn einem zweiten Terminal:
# Eine Nachricht an das Topic "test" senden mosquitto_pub -h localhost -t test -m "Hello"Im ersten Terminal erscheint:
test HelloSicherheit
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 PasswortBenutzer 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 adminDas 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:
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.
Svxlink neu starten
zum Testen im Terminal folgendes Eingeben
echo "123#" > /home/pi/remote/pty.RepeaterLogicim Log prüfen oder mit 2ten Terminal ausführen....
Achtung Rechte müssen passen User/group falls nicht geht.
NodeRed
in Arbeit ....