(Update)Abhilfe bei Aussetzern beim Svx Remote Display
Übernommen aus dem Forum.Fm-funknetz.de
Es kommt leider hin und wieder zu Aussetzern von Svxlink wenn das Display nicht im Netzwerk erreichbar ist.
Hier kommt die kleine Abhilfe.
Anlegen der Datei display-status.sh
nano /root/display-status.shBitte die passende IP des Display's eintragen welche euch auf dem Display angezeigt oder bekannt ist.
#!/bin/bash ## Display IP eintragen ip='192.168.178.51' while true do if ( nc -zv $ip 80 2>&1 >/dev/null ); then echo 'online' > /tmp/display-state.txt; echo $ip > /tmp/display-ip.txt; else echo 'offline' > /tmp/display-state.txt; fi ### Abfrage alle 120s sleep 120 doneDatei Ausführbar machen
chmod +x /root/display-status.shKurzer Test? mit STRG + X beenden !!
sh /root/display-status.shunter /tmp/display-state.txt datei kontrollieren,
cat /tmp/display-state.txtNun die ReflectorLogic.tcl bearbeiten, backup der datei kann nie schaden ![]()
nun wird mittel if else in der Start und Stop Sektion folgendes erweitert
# # Executed on talker start # # tg -- The talk group # callsign -- The callsign of the talker node # proc talker_start {tg callsign} { variable selected_tg ## Beginn Verzeichnis hinzufügen set ip1 [exec cat "/tmp/display-state.txt"] set ip [exec cat "/tmp/display-ip.txt"] #puts "### Talker start on TG #$tg: $callsign" if {($tg == $selected_tg)} { ## Beginn Status Display einlesen if {($ip1 == "offline")} { puts "display offline" } else { ## Ende Status Display einlesen exec curl -i -s -o /dev/null http://$ip/control?cmd=GPIO,14,0 & curl http://$ip/control?cmd=LCD,1,1,%22auf%20TG$tg%20ist%22 & curl http://$ip/control?cmd=LCD,2,1,%22%20%20%20$callsign%22; ## Beginn Status Display einlesen Nr2 puts "Display online " } ## Ende Status Display einlesen Nr2 } } # Executed on talker stop # # tg -- The talk group # callsign -- The callsign of the talker node # proc talker_stop {tg callsign} { variable selected_tg variable ::Logic::CFG_CALLSIGN #puts "### Talker stop on TG #$tg: $callsign" set systemTime [clock seconds] set last [clock format $systemTime -format %H:%M:%S]; ## Hinzufügen der Display Status Pfades set ip1 [exec cat "/tmp/display-state.txt"] set ip [exec cat "/tmp/display-ip.txt"] if {($tg == $selected_tg)} { ##Beginn Status Display einlesen if {($ip1 == "offline")} { puts "Display Offline" } else { puts "Display online" ## Ende Status Display einlesen ## Display Ansteuerung via HTTP schon vorhanden (muss alles in eine Zeile) exec curl -i -s -o /dev/null http://$ip/control?cmd=GPIO,14,1 & curl http://$ip/control?cmd=LCD,1,1,%22Lastheard%20TG$tg%22 & curl http://$ip/control?cmd=LCD,2,1,%22$callsign%20$last%22; # Eine Klammer Hinzufügen } } }Die IP zum Display muss im Befehl wieder angepasst werden, falls der Code komplett kopiert wird.
Ins Verzeichnis wechseln und Starter anlegen
cd /lib/systemd/system nano display.serviceFolgendes Einfügen
[Unit] Description=Abfrage Svxremote Display [Service] ExecStart=/root/display-status.sh [Install] WantedBy=multi-user.targetSystemd neu laden
sudo systemctl daemon-reloadDienst in den Autostart laden
CODE: ALLES AUSWÄHLEN
sudo systemctl enable display.serviceDisplay Dienst starten und svxlink neu starten
sudo systemctl start display.service sudo systemctl start svxlink.servicehave Fun
dj1jay