Llamadas y envío de SMS con modem GSM en Debian
Probado con:
Debian 8.6 (Jessie) Módem ZTE WCDMA Technologies MSM
Comandos AT
Configuración del módem
Debemos comprobar al indroducir nuestro módem GSM USB que se detecta correctamente por Debian.
Será necesario instalarlo en caso de que sea necesario el empleo de tarjetas.
Si aparece una línea en la que se incluye una cadena de texto como esta 19d2:2000
en lugar de 19d2:2003
, esto indica que el dispositivo ha sido reconocido como almacenamiento, para cambiarlo instalaremos el programa usb-modeswitch
Después de instalado el programa ejecutaremos el comando siguiente para que el dispositivo sea reconocido como módem.
Una vez hecho lo anterior reiniciamos la máquina Debian y volvemos a comprobar si el dispositivo se reconoce como módem.
Deberíamos obtener algo como esto 19d2:2003
, para comprobar que el dispositivo se ha detectado como módem GSM, para comprobarlo ejecutamos lo siguiente.
Y entre el resultado deberíamos encontrar algo como esto.
Ahora podemos ir al directorio /dev
y comprobar si realmente aparece la interfaz ttyUSB0 con ls /dev | grep -i usb
. Estas interfaces serie se pueden emplear con un programa que gestione el puerto serie como minicom
.
Cómo realizar una llamada de prueba con minicom y los comando AT
Primero instalamos y configuramos minicom
para que emplee el puerto serie que deseamos, en nuestro ejemplo ttyUSB3.
Seleccionamos ‘Serial port setup’ y en el siguiente menú pulsamos ‘A’ para seleccionar el puerto, para este ejemplo será /dev/ttyUSB3 pulsamos intro dos veces, después seleccionamos ‘Save setup as .. ‘ e introducimos una cadena de caracteres, por ejemplo gsm. Al terminar y salir usaremos el siguiente comando:
Alternativamente también se puede emplear el comando cu
con la opción l
indicando después el puerto de USB, a partir de este momento se podrán enviar los comando AT y ver la respuesta en la pantalla.
Envío de comandos AT
Test de comunicación que debe responder OK
Introducimos el PIN de la tarjeta SIM debe responder OK
Realizamos llamada de prueba al número de teléfono ficticio 123456789.
Existen muchos otros comandos AT interesantes que se pueden emplear y que se pueden consultar en internet, no obstante no me gustaría terminar la entrada sin indicar como cortar la llamada realizada lo que puede ser útil de cara a implementar sistemas que te avisen mediante llamadas perdidas. Con la llamada el primer comando evita que se ignore el comando de hang up y el segundo es el el comando para colgar propiamente dicho.
Recepción y envío de de SMS de forma automatizada
Vamos a emplear smstools
para ello instalamos el software, más información sobre la herramienta aquí.
Para rellenar el archivo de configuración necesitamos saber el puerto como hicimos antes, del timo ttyUSB0
.
La configuración necesita editar un archivo .conf lo haremos así nano /etc/smsd.conf
.
Para añadir lo siguiente,
El campo boudrate
depende del modem, en el caso del ejemplo era un ZTE MF190.
Una vez configurado habrá que reiniciar el servicio con systemctl restart smstools.service
. He observado que es necesario reiniciar una vez más el sericio para que lleguen los SMS.
Se puden leer los SMS recibidos en el directorio configurado por ejemplos así: ls -l /var/spool/sms/incoming
. Si queremos ver que falla es útil revisar el log /var/log/smstools/smsd.log
.
Envío de SMS
Será tan sencillo como situar un archivo de texto en el directorio /var/spool/sms/outgoing
con el formato siguiente.
El teléfono debe incluir el prefijo del país sin el ‘+’ y el texto debajo. Así de sencillo. Cuando la aplicación envía el SMS el programa mueve el fichero de texto a /var/spool/sms/sent
.
Gestores de eventos y alarmas
Se puede encontrar un ejemplo de gestor hecho por el desarrollador en /usr/share/doc/smstools/examples/scripts/smsevent
. Para que funcione hay que indicarle al programa dónde encontrar el gestor/guión. Para ello añadimos con nano /etc/smsd.conf
lo siguiente.
El gestor de alarmas es muy parecido pero se dispara si ocurre un error. Añadimos a /etc/smsd.conf
lo siguiente.