Pagine

Dtmf exec script

Vediamo come far eseguire uno script digitando un codice dalla tastire DTMF della radio.
Con questa opzione possiamo anche attivare relè, effettuare verifiche su pin GPIO e quant'altro.

Per sfruttare questa funzionalità, svxlink deve essere correttamente installato e avviato.

Create una cartella chiamata local, dentro la cartella /usr/share/svxlink/events.d/

  • sudo mkdir /usr/share/svxlink/events.d/local
Dentro questa cartella creiamo un file chiamato Logic.tcl 
  • sudo nano Logic.tcl
Copiamo le seguenti righe:


  • ###############################################################################
  • #
  • # Generic Logic event handlers (local extension)
  • #
  • ###############################################################################
  • #
  • # This is the namespace in which all functions and variables below will exist.
  • #
  • namespace eval Logic {
  • #
  • # Executed when a DTMF command has been received
  • # cmd - The command
  • #
  • # Return 1 to hide the command from further processing is SvxLink or
  • # return 0 to make SvxLink continue processing as normal.
  • #
  • proc dtmf_cmd_received {cmd} {
  • global active_module
  • if {$active_module != "" && [string index $cmd 0] != "*"} {
  • return 0
  • }
  • if {[string index $cmd 0] == "*"} {
  • set cmd [string range $cmd 1 end]
  • }
  • if {$cmd == "81"} {
  • puts "Eseguo test script 81"
  • playSilence 1000
  • playTone 880 60 150;
  • playTone 440 60 100;
  • exec /home/pi/script/81test.sh &
  • return 1
  • }
  • if {$cmd == "82"} {
  • puts "Eseguo test script 82"
  • playSilence 1000
  • playTone 880 60 150;
  • playTone 440 60 100;
  • exec /home/pi/script/82test.sh &
  • return 1
  • }
  • if {$cmd == "83"} {
  • puts "Eseguo test script 83"
  • playSilence 1000
  • playTone 880 60 150;
  • playTone 440 60 100;
  • exec /home/pi/script/83test.sh &
  • return 1
  • }
  • if {$cmd == "84"} {
  • puts "Esecuzione codice CW"
  • playSilence 1000
  • CW::play "CQ"
  • return 1
  • }
  • return 0
  • }
  • # end of namespace
  • }
  • #
  • # This file has not been truncated
  • #
Tutti gli script devono essere presenti e funzionanti nel percorso specificato alla riga exec. Ho aggiunto più sezioni per rendere meglio l'idea. Togliete quelle che non servono facendo attenzione alle parentesi graffe. L'ultima parte, codice 84, produce un codice cw "CQ".

Preparate e provate gli script prima di avviarli con questo sistema.

Adesso avviate svxlink; sudo svxlink e digitate dalla tastiera della radio il codice DTMF *81#
Verrà attivato lo script /home/pi/script/81test.sh
Alla fine dello script verrà eseguito un secondo di silenzio e poi due toni in rapida sequenza, questo per avere la conferma della corretta ricezione del codice dtmf.

Come già detto, svxlink deve essere attivo per poter sfruttare questa funzionalità. Può essere utile non caricare alcun modulo commentando con # le seguenti righe nel file /etc/svxlink.conf alla sezione della logica interessata, SimplexLogic o RepeaterLogic:
  • #MODULES=ModuleEchoLink
  • #SHORT_IDENT_INTERVAL=10
  • #LONG_IDENT_INTERVAL=60

Cosi facendo, svxlink non si collegherà ad alcun server echolink e il software sarà attivo esclusivamente per questa funzionalità, decoder dtmf.

Con questa logica possiamo attivare svxlink con due file di configurazione diversi, svxlink1.conf e svxlink2.conf. Uno senza commenti, associato ad un codice dtmf, echolink attivo e collegato ai server echolink e l'altro con le righe commentate, echolink non attivo. Cosi facendo svxlink sarà sempre "in ascolto" e riconoscerà i codici dtmf. Aggiungerò alcuni esempi più in la.

Buon divertimento!

Nessun commento: