Pour vérifier que votre relais est toujours en ligne sur internet, nous allons ajouter une commande DTMF qui vous renseigne par une annonce vocale sur simple demande.
Copier le fichier Logic.tcl
dans un sous-répertoire local
. Cela nous permet de ne jamais modifier le fichier Local.tcl
livré à l'installation de SvxLink (qui reste disponible à la consultation dans /usr/share/svxlink/events.d/
.)
cd /usr/share/svxlink/events.d/ sudo mkdir local cp Logic.tcl ./local/Logic.tcl
Dans le fichier Logic.tcl
, recherchez la fonction qui va traiter nos commandes distantes lors de la réception de codes DTMF dtmf_cmd_received
, puis intégrer y le bout de code suivant (entre if {$cmd == “25”} { # DTMF 25
et return 1 }
)
sudo nano /usr/share/svxlink/events.d/local/Logic.tcl
#SEND DTMF CODE 25# if {$cmd == "25"} { set result [catch {exec ping -c 1 google.com }]; if {$result == 0} { puts "Internet online :Connected" playMsg "Default/internet_status" "Internet_Connection_Active"; #speeling of the internet public IP address set runcmd [exec curl http://ip.42.pl/short 2>&1]; #Internet IP adress puts "Internet IP Adress : $runcmd" set splitip [split $runcmd .] lassign $splitip ip1 ip2 ip3 ip4 spellWord $ip1; playMsg "Default" "decimal"; spellWord $ip2; playMsg "Default" "decimal"; spellWord $ip3; playMsg "Default" "decimal"; spellWord $ip4; } else { puts "Internet online :Disconnected" playMsg "Default/internet_status" "Internet_Connection_Inactive"; } return 1 } return 0 }
Dans ce code TCL, nous avons également intégrer à partir de la ligne #speeling of the internet public IP address
quelques lignes qui vont permettre de faire la lecture chiffre à chiffre de votre adresse ip publique. Cette lecture utilise la fonction standard spellWord
.
Les deux messages lus sont deux fichiers son wav
à mettre en place dans un sous-repertoire, par exemple /usr/share/svxlink/sounds/fr_FR/internet_status/
.
Fichiers disponibles sur https://github.com/F8ASB