Enviar un SMS con un modem USB desde Ubuntu

Ayer leí en el Blog de Javier Castañón (El Camello, el León y el niño. O la evolución del perro al lobo) un interesante post referente a como enviar sms desde la consola, utilizando gsmsendsms, y otro referente a minicom.

En ese momento la cabeza se me puso a mil, pensando en todas las posibilidades que tenía, para realizar:

  • Una pequeña aplicación para enviar mensajes
  • Un sistema de avisos
  • Un sistema de promociones

Así que me puse a leer, a ver que posibilidades había, como hacerlo, en fin esas cosas. Lo intenté con comandos AT. Seguí tanto las indicaciones de
Enviar SMS desde consola con gsmsendsms – gsm-utils en Ubuntu como las de
Enviar SMS desde minicom en Ubuntu con modem GSM. Pero se mezclaba un mensaje con el siguiente, aparecían comandos AT en el mensaje, en fin un fracaso. Seguramente más por mi impaciencia que por otra cosa.

Pero después de un rato (un par de horitas), no se ni porque ni por como, di con Gammu. Gammu, es una utilidad de la línea de comandos, que se utiliza para controlar tu teléfono, y permite realizar una serie de operaciones con él.

Bueno, pasemos a la acción…

Instalar y configurar gammu

Lo primero que tienes que hacer es instalar gammu, esto lo puedes resolver haciendo click en gammu o utilizando el terminal

sudo apt install gammu

Una vez instalado gammu, tienes que averiguar donde tienes conectado el modem usb:

dmesg|grep tty

y te volcará algo como esto:


[ 1917.331663] usb 2-4: GSM modem (1-port) converter now attached to ttyUSB0
[ 1917.331887] usb 2-4: GSM modem (1-port) converter now attached to ttyUSB1
[ 1917.332089] usb 2-4: GSM modem (1-port) converter now attached to ttyUSB2
[ 1917.334716] usb 2-4: GSM modem (1-port) converter now attached to ttyUSB3
[ 1917.336443] usb 2-4: GSM modem (1-port) converter now attached to ttyUSB4

el siguiente paso es configurar gammu, para ello puedes utilizar el configurador:


gammu-config

o simplemente creas un archivo ~/.gammurc con el siguiente contenido:

[gammu]
port = /dev/ttyUSB0
model =
connection = at19200
synchronizetime = yes
logfile =
logformat = nothing
use_locking =
gammuloc =

Sinceramente, yo he intentado conectarme a otro puerto, pero no lo he conseguido. Pero, bueno, hay que tenerlo en cuenta.

Ahora, podemos probar el funcionamiento de gammu con el siguiente comando en el terminal:

gammu getallsms

esto nos devolverá algo así como:

Localización 1, carpeta "", Memoria de la SIM

0 SMS parts in 1 SMS sequences

Y ahora podemos probar a enviar un sms:

gammu sendsms text 123456789
Enter message text and press ^D:
Prueba
Sending SMS 1/1....waiting for network answer..OK, message reference=2

Una vez realizadas todas las pruebas y comprobado el correcto funcionamiento, le toca el paso a Python. Primero instalar Python bindings para Gammu:

sudo apt install python-gammu

y ahora una sencilla aplicación para ir abriendo boca:

import gammu

sm = gammu.StateMachine()
sm.ReadConfig()
sm.Init()
message = {
'Text': 'Mi primera prueba con gammu y python-gammu funciona',
'SMSC': {'Location': 1},
'Number': '123456789',
}
sm.SendSMS(message)

Vía | tensixtyone

Más información | Gammu y Python-Gammu

7 comentarios en “Enviar un SMS con un modem USB desde Ubuntu

  1. Tu Papa Pepe hace 11 años

    Vaya esto es un dato muy bueno, me has dado una idea para scribir un poco sobre esto pero para usuarios un poco menos experimentados.

  2. Rosa Guillén hace 11 años

    Anda, que wapo!..a ver si tengo un ratito y lo pruebo..jeje.Un saludo, compañero!

  3. Shupacabras hace 11 años

    mmm… me interesa hacerlo de forma nativa, yo habia podido hacerlo con un windows instalado en una maquina virtual, pero esto da para probarlo y eliminar el MS, gracias por la data

  4. Nan hace 9 años

    excelente amigo 😀 funciona Como se debe 😀

  5. Martin hace 5 años

    Muy bueno!! Funciona de diez! Gracias!

  6. Edgar hace 3 años

    Pero que modem o tipo de celular se conecta?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *