Voici une nouvelle fonction développée en collaboration avec F4HDW Stéphane, cette fonction permet de diffuser des messages d’informations sur votre relais. Ce message pourra ensuite être diffusé avec la balise longue ou sur DTMF. Et là vous aller me dire rien de neuf…
L’ancienne technique que j’utilisais consistait à mettre un message dans un répertoire et de changer le nom du répertoire si le message ne devait plus être diffusé. Ainsi, comme le nom du dossier avait changé, SVXLink ne le trouvait pas et donc ne le lisait pas.
La commande de changement de nom pouvait être par le menu ou alors par dtmf via un script.
Avec cette nouvelle fonction, nous avons complètement changer le mode de fonctionnement en pensant également aux sites qui ne sont pas connectés sur internet ou Hamnet pour prendre la main à distance.
Un répertoire Messages doit être crée dans le dossier fr_FR. Dans ce dossier vous devrez placer le ou les messages à diffuser. Oui, maintenant diffuser plusieurs messages c’est désormais possible.
Et dans le répertoire Messages créer un répertoire old, c’est dans ce répertoire que l’on copiera les anciens messages automatiquement, après que la date de fin de diffusion soit passée.
Voici comment cela fonctionne:
Dans ce fameux dossier Messages, vous devez créer des fichiers son en les nommant d’une manière particulière, le nom indiquera à SVXlink la date et l’heure de début et de fin de diffusion.
Il sera alors possible de programmer à l’avance, les messages à diffuser sur le relais selon les activités ou les événements de votre radio club.
Le format des fichiers son utilisés est le suivant:
Début Fin
<AA><MM><JJ><HH><MM><AA><MM><JJ><HH><MM><NOM>.wav
AA pour année
MM pour mois
JJ pour jour
HH pour heure
MM pour minute
NOM pour le nom du message. ( il n’est pas pris en compte par le programme vous êtes libre d’écrire ce que vous voulez)
Voici ci-dessous un exemple de fichier
17090915001709301900brocanteradioamateur.wav
Il sera diffusé du 9 septembre 2017 à 15h00 jusqu’au 30 septembre 2017 19h00.
Mise en place de la fonction dans SVXLink:
Editer le fichier Logic.tcl et insérer ce code en début de fichier juste avant un autre processus, pour ma part je l’ai mis juste avant
proc send_rgr_sound {} {
Le code:
#
#Lecture du ou des messages d'informations si présent dans le repertoire /fr_FR/Messages/
#
proc read_info {} {
set repertoire "/usr/share/svxlink/sounds/fr_FR/Messages/"
#liste des fichier wav du répertoire choisi, dans l'ordre alphabétique et donc dans l'ordre de date et heure de début
set repertoire "/usr/share/svxlink/sounds/fr_FR/Messages/"
set repOld "/usr/share/svxlink/sounds/fr_FR/Messages/old/"
set listeFichiers [lsort -ascii [glob -nocomplain -directory $repertoire *.wav]]
puts $listeFichiers
set nbFichiers [llength $listeFichiers]
if { $nbFichiers == 0 } {
puts "Pas de Fichiers !!!"
} else {
#Date et heure courantes
set dhCourante [clock seconds]
puts [clock format $dhCourante -format "%y%m%d%H%M"]
foreach nomFichier $listeFichiers {
#fichier sans son dossier
set fichierCourt [file tail $nomFichier]
#extraction des dates et heures
set dhDebutFichier [string range $fichierCourt 0 9]
set dhFinFichier [string range $fichierCourt 10 19]
puts "Début $dhDebutFichier, fin $dhFinFichier"
#test de validité, puis test de date, et c'est fini
if { [string is integer -strict $dhDebutFichier] && [string is integer -strict $dhFinFichier] } {
set dhDeb [clock scan $dhDebutFichier -format "%y%m%d%H%M"]
set dhFin [clock scan $dhFinFichier -format "%y%m%d%H%M"]
if { $dhCourante > $dhFin } {
# suppression des vieux fichiers
if { [file isdirectory $repOld] } {
file rename $nomFichier $repOld
}
} else {
if { $dhCourante >= $dhDeb } {
#puts "Check !!, c'est le moment de jouer le fichier $nomFichier"
set racineFichier [file rootname $fichierCourt]
playMsg "Messages" $racineFichier ;
}
}
}
}
}
}
Nous avons créer un processus qui s’appelle read_info, celui-ci va vérifier les messages à diffuser selon le jour et l’heure du système, si cela correspond, il lit, sinon, si le fichier est périmé, il le déplace dans le répertoire old.
il suffira d’appeler le processus sur demande.
Dans le fichier Logic.tcl
Exemple sur DTMF:
#
#MESSAGES D'INFORMATIONS
#
if {$cmd == "10"} {
read_info
return 1
}
Exemple dans la balise longue:
proc send_long_ident {hour minute} {
global mycall;
global loaded_modules;
global active_module;
variable CFG_TYPE;
if {$CFG_TYPE == "Repeater"} {
playMsg "F1ZKA" "baliselongue";
playSilence 500;
read_info
}
Cette fonction est testée et sera fonctionnelle sur le relais de Vernon F1ZKA.