Etat de connexion à internet

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