Störung im FM-Funknetz:Mehrere Dienste sind derzeit nicht erreichbar, darunter Livemap, Wiki und Forum. Dashboard und Ticketsystem erreichst du vorübergehend über die Ersatzadressen im Menü. Wir arbeiten an der Lösung und informieren hier, sobald es Neues gibt.
← Alle Beiträge

(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.sh

Bitte 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 done

Datei Ausführbar machen

chmod +x /root/display-status.sh

Kurzer Test? mit STRG + X beenden !!

sh /root/display-status.sh

unter /tmp/display-state.txt datei kontrollieren,

cat /tmp/display-state.txt

Nun die ReflectorLogic.tcl bearbeiten, backup der datei kann nie schaden ;-)

nano /usr/share/svxlink/events.d/local/ReflectorLogic.tcl

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.service

Folgendes Einfügen

[Unit] Description=Abfrage Svxremote Display [Service] ExecStart=/root/display-status.sh [Install] WantedBy=multi-user.target

Systemd neu laden

sudo systemctl daemon-reload

Dienst in den Autostart laden

CODE: ALLES AUSWÄHLEN

sudo systemctl enable display.service

Display Dienst starten und svxlink neu starten

sudo systemctl start display.service sudo systemctl start svxlink.service

have Fun
dj1jay