Huawei as SMS gateway on FreeBSD

Have you tried to send SMS using U3G modens? In this topic I will show a example how to send SMS using U3G modens in FreeBSD.

FreeBSD has built in support for this device, just add

u3g_load=”YES”

to your /boot/loader.conf and reboot or issue:

kldload u3g

as root.

Here’s sample Python script to read SMS data. It uses pySerial.

[code language=”python”]

# encoding: utf-8
import serial
import time
import types

# converts UCS2 to UNICODE
def ucs(t):
w = ""
for i in range(len(t)/4):
w += unichr(int(t[i*4:i*4+4],16))
return w

# sends AT command to modem and receives result
def at(k):
global ser

ser.write(k+"\r")
buf = ""
while buf[-6:] != "\r\nOK\r\n":
buf += ser.read(1)
buf = buf[len(k)+3:].split("\r\n")[:-2]
return buf

# reads SMSes from modem and prints it on screen
def getSMS():
sms = at("AT+CMGL=\"ALL\"")
while len(sms) >= 2:
meta = sms[0].split(",")
idx = meta[0][6:].strip()
sender = ucs(meta[2][1:-1])
w = ""
data = ucs(sms[1])
sms = sms[2:]
print "From: %s\nContent:\n%s\n—" % (sender,data)
komenda("AT+CMGD="+idx)

# change your port below
ser = serial.Serial("/dev/ttyU0.0",115200,timeout=5,rtscts=True)
ser.open()
at("AT")
# at("AT+CPIN=****") # enter PIN if you have one
at("AT+CMGF=1") # puts modem in text mode
at("AT+CPMS=\"SM\"") # change SMS storage
at("AT+CSCS=\"UCS2\"") # change encoding
while True:
getSMS()
time.sleep(0.5)

[/code]

publicado
Categorizado como FreeBSD

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *