Abilitare la connessione 3G via SMS

Mikrotik OS supporta connessioni 3G tramite chiavetta USB (LITEWIRE U/MINIWIRE U) oppure scheda hsdpa mini-pci-express (MINIWIRE U).

A seconda del tipo di profilo attivato sulla SIM può essere economicamente sconveniente lasciare attiva la connessione 3G 24h/24h.

Ecco un’idea dunque per attivare la connessione 3G solo su richiesta, con un semplice SMS.
Il seguente esempio sono configurazione provate su un MINIWIRE UW con scheda 3G Sierra Wireless MC8775.
Utilizzando hardware differente potrebbe variare il nome della porta e il numero del canale.

Passo 1. Abilitare la ricezione degli SMS in ingresso:

/tool sms
set channel=2 port=usb2 receive-enabled=yes secret=test

“secret”= variabile non utilizzata per i nostri scopi, può essere qualsiasi stringa
i valori “channel” e “port” come detto in precedenza possono variare a seconda dell’hardware utilizzato. Il canale deve essere differente dal canale utlizzato come data-channel nelle configurazioni del ppp-client.

[admin@MINIWIRE UW] > interface ppp-client pr
Flags: X – disabled, R – running
0 X  name=”ppp-out1″ max-mtu=1500 max-mru=1500 mrru=disabled port=usb2
data-channel=0 info-channel=0 apn=”internet” pin=”” user=”” password=””
profile=default phone=”” dial-command=”ATDT” modem-init=”” null-modem=no
dial-on-demand=yes add-default-route=yes use-peer-dns=yes
keepalive-timeout=30 allow=pap,chap,mschap1,mschap2

Visualizzando l’elenco delle porte si può verificare che la porta usb2 viene “used-by” “sms tool”:

[admin@MINIWIRE UW] > port print
Flags: I – inactive
#   NAME                         CHANNELS USED-BY                      BAUD-RATE
0   serial0                             1 Serial Console               auto
1   usb2                                3 sms tool                     960

Passo2. Schedulare uno script che tiene monitorata l’SMS inbox, esamina gli SMS in arrivo e prende azioni a seconda del loro contenuto.

#—Personalizza queste variabili
:local senders [:toarray (“+393352222222″,”+393351111111”)];
:local smsCommand “con”;
#—Inizio Script
:local smsMessage;
:local smsSender;
# loop through all the messages in the inbox #
:foreach i in=[/tool sms inbox find] do={
:set smsMessage [/tool sms inbox get $i message];
:set smsSender [/tool sms inbox get $i phone]
:log info “processing sms – $smsMessage from $smsSender…”;
:if ($smsMessage = $smsCommand) do={
:for n from=0 to=([:len $senders]-1) do={
:if ([:pick $senders $n]=”$smsSender”) do={
:log info “enabling ppp…”
/interface enable ppp-out1
# Now remove the SMS from the inbox #
/tool sms inbox remove $i;
}
}
}
}
#Fine Script

La variabile “senders” specifica l’elenco dei numeri di telefono da cui accettare comandi.
La variabile “smsCommand” indica la parola chiave richiesta per abilitare la connessione 3G.

Se le condizioni sopra indicate sono sono verificate da un SMS presente nella inbox, la connessione 3G viene abilitata e l’SMS eliminato.

Questo script può essere inserito in uno scheduler configurando l’esecuzione ogni X secondi (a seconda della reattività richiesta tra arrivo dell’sms all’abilitazione del 3G).

Tutti gli SMS eventualmente ricevuti che non contengono la parola chiave indicata o non provengono dai mittenti specificati rimangono inerti nell’inbox.

E’ possibile installare un apposito ulteriore script per tenere nella inbox solo gli ultimi X sms ricevuti.

#—Personalizza queste variabili
:local conservaSoloUltimiSMS “10”
#—Inizio Script
:local counter 0
:local ptr 0
:local timeid
:local sender
:foreach i in=[/tool sms inbox find] do={
:set counter ($counter +1)
}
:put (“Conservo solo gli ultimi ” . $conservaSoloUltimiSMS . ” sms”)
:while ($ptr < ($counter-$conservaSoloUltimiSMS)) do={
:set sender [/tool sms inbox get $ptr phone]
:set timeid [/tool sms inbox get $ptr timestamp]
:log info “removing sms n.$ptr $sender”
/tool sms inbox remove [find timestamp=”$timeid”]
:set ptr ($ptr + 1)
}
#—Fine Script

L’esecuzione di questo scripti anch’esso da inserire nello scheduler può avvenire con cadenza giornaliera o settimanale.

N.B. Il traffico dati e gli SMS utilizzano due canali di comunicazione differenti con la porta: la ricezione di SMS non interferisce, non interrompe un’eventuale connessione 3G attiva.