Zum Inhalt springen

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; 
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 ip [exec cat "/tmp/display-state.txt"]
  #puts "### Talker start on TG #$tg: $callsign"

if {($tg == $selected_tg)} {

## Beginn Status Display einlesen 
	if {($ip == "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 ip [exec cat "/tmp/display-state.txt"]

  if {($tg == $selected_tg)} {
  
  ##Beginn Status Display einlesen
	if {($ip == "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

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.