Esempio n. 1
0
class overmodem:
    def __init__(self,port,in_verbose = True):
        self.port=port
        self.verbose=in_verbose
        self.debug=logging.debug
        self.working_modem=self.start_modem()
    def statusmsg( self, input_string ):
        if self.verbose:
            print "[ STATUS ] " + input_string
    def errormsg( self, input_string ):
        if self.verbose:
            print "[ ERROR ] " + input_string
                    
    def sms(self , phone_number,text):
        self.modem.wait_for_network()
        was_sent = self.modem.send_sms(
            		phone_number,
            		text)
        return was_sent
    def gsm_log(self, modem, str, level):
        self.debug("%s: %s" % (level, str))
   
    def start_modem(self):
        self.statusmsg("Connecting and booting via pyGSM...")
    	result=False
    	try:
    		result=True
    		
    		self.modem = GsmModem(logger=self.gsm_log, port=self.port)
    		self.modem.boot()
    	except Exception as e:
            result=False
            self.statusmsg(e.message)
    	return result
Esempio n. 2
0
 def __init__(self, *args, **kwargs):
     if 'control_port' in kwargs:
         control_port = kwargs.pop('control_port')
         self._control = port.ControlPort()
         self._control.connect(handlers=[(patterns.CALLER_ID, 
                                          self._caller_id)])
     if 'id' in kwargs:
         self.id = kwargs.pop('id')
     GsmModem.__init__(self, *args, **kwargs)
Esempio n. 3
0
 def __init__(self, *args, **kwargs):
     if 'control_port' in kwargs:
         control_port = kwargs.pop('control_port')
         self._control = port.ControlPort(port=control_port)
         self._control.connect(handlers=[(patterns.CALLER_ID, 
                                          self._caller_id),
                                          (patterns.USSD_RESPONSE,
                                           self._ussd_response)])
     if 'id' in kwargs:
         self.id = kwargs.pop('id')
     GsmModem.__init__(self, *args, **kwargs)
Esempio n. 4
0
 def __init__(self, *args, **kwargs):
     if 'control_port' in kwargs:
         control_port = kwargs.pop('control_port')
         self._control = port.ControlPort(port=control_port)
         self._control.connect(handlers=[(
             patterns.CALLER_ID,
             self._caller_id), (patterns.USSD_RESPONSE,
                                self._ussd_response)])
     if 'id' in kwargs:
         self.id = kwargs.pop('id')
     GsmModem.__init__(self, *args, **kwargs)
Esempio n. 5
0
def loadModems(config, logger):
    """
    Updates networks
    """
    for m in config['modems'].keys():
        modemConfig = config['modems'][m]
        modem = GsmModem(
            port=modemConfig['port'],
            baudrate=modemConfig['baudrate'],
            logger=GsmModem.debug_logger,)
        modem.boot()
        networks.update({m: modemConfig})
        networks[m].update({'modem': modem})
Esempio n. 6
0
def getResrictionCode(number, code):
    print('inside getResrictionCode')
    gsm = GsmModem(port=dev)
    sendSMS(gsm, number, code)
    print("clear storage before recieve message")
    clear_storage(gsm)
    rcode = waiting_response(number, gsm)
    return rcode
Esempio n. 7
0
class Command(BaseCommand):
    help = "This command need to be started whenever the application is running, of course after executing runserver."
    print conf['gsm']
    gsm = GsmModem(port=conf['gsm']['port'],
                   logger=GsmModem.debug_logger).boot()

    def handle(self, **options):
        print "Transmitting SMS..."
        cmd = SmsHandler(self.gsm).transmit_sms()
Esempio n. 8
0
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    global gsm
    #Initializing GSM Modem
    gsm = GsmModem(port="/dev/ttyUSB1", logger=GsmModem.debug_logger).boot()

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe(("iot-2/cmd/bluepi/fmt/json", 0))
Esempio n. 9
0
 def start_modem(self):
     self.statusmsg("Connecting and booting via pyGSM...")
 	result=False
 	try:
 		result=True
 		
 		self.modem = GsmModem(logger=self.gsm_log, port=self.port)
 		self.modem.boot()
 	except Exception as e:
 		self.statusmsg(e.message)
 	return result
Esempio n. 10
0
#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4

import time
from pygsm import GsmModem

gsm = GsmModem(port="/dev/ttyUSB2").boot()

csq = gsm.signal_strength()
approx_dBm =  ((-113) + (2 * csq))

csq_marginal = 9
csq_ok = 14
csq_good = 19
csq_excellent = 30

def csq_name(csq):
    if csq <= csq_marginal:
        return 'marginal'
    elif csq <= csq_ok:
        return 'ok'
    elif csq <= csq_good:
        return 'good'
    elif csq <= csq_excellent:
        return 'excellent'
    else:
        return 'searching'

print 'CSQ: ',csq,'/',csq_excellent,'(',approx_dBm,'dBm) - ',csq_name(csq)
Esempio n. 11
0
import time
from pygsm import GsmModem

gsm = GsmModem(port="/dev/ttyUSB0", logger=GsmModem.debug_logger).boot()

print("Waiting for network...")
s = gsm.wait_for_network()

with open("messaggio.txt", "rt") as f:
    messaggio = f.read()

with open("lista.csv", "rt") as f:
    for i, l in enumerate(f):
        gsm.send_sms(l.strip(), messaggio)
        time.sleep(1)

gsm.disconnect()
Esempio n. 12
0
        global gpsd  # bring it in scope
        gpsd = gps(mode=WATCH_ENABLE)  # starting the stream of info
        self.current_value = None
        self.running = True  # setting the thread running to true

    def run(self):
        global gpsd
        while gpsp.running:
            gpsd.next(
            )  # this will continue to loop and grab EACH set of gpsd info to clear the buffer


me = singleton.SingleInstance()
if __name__ == '__main__':
    snapshot_file = '/tmp/bluepisnapshot'
    gsm = GsmModem(port="/dev/ttyUSB1", logger=GsmModem.debug_logger).boot()

    gpsp = GpsPoller()  # create the thread

    iccid = gsm.query("AT^ICCID?", "^ICCID:").strip('"')
    imei = gsm.query("ATI", "IMEI:")
    url = "<bluemix http post url>"
    headers = {'Content-type': 'application/json'}
    msgQ = Queue.Queue()
    try:
        gpsp.start()  # start it up
        while True:
            # It may take a second or two to get good data
            # print gpsd.fix.latitude,', ',gpsd.fix.longitude,'  Time: ',gpsd.utc
            try:
Esempio n. 13
0
    print 'Position: ' + UTC + ', ' + Latitude + ', ' + Longitude + ', ' + Altitude
    # Text to mobile
    Message = ' Position: ' + UTC + ', ' + str(Latitude) + ', ' + str(
        Longitude) + ', ' + str(
            Altitude) + ' http://maps.google.com/?q=' + str(
                Latitude) + ',' + str(Longitude)
    print "Sending to mobile " + MobileNumber + ": " + Message
    gsm.send_sms(MobileNumber, Message)


# Set mobile number here
MobileNumber = "017412312312"
lastmessage = 'Stop'

print "Booting modem ..."
gsm = GsmModem(port="/dev/serial0")
gsm.boot()

print "Modem details:"
reply = gsm.hardware()
print "Manufacturer = " + reply['manufacturer']
print "Model = " + reply['model']

# Try and get phone number
reply = gsm.command('AT+CNUM')
if len(reply) > 1:
    list = reply[0].split(",")
    phone = list[1].strip('\"')
    print "Phone number = " + phone
print
Esempio n. 14
0
import MySQLdb

db = MySQLdb.connect(host="localhost", port=3306, user="******", passwd="ssn", db="smsmail")

cursor=db.cursor()


import time
from pygsm import GsmModem

gsm = GsmModem(
    port="/dev/ttyUSB0",
    logger=GsmModem.debug_logger).boot()


cursor.execute('select * from mails where sent=0')
data=cursor.fetchall()

msg=[]


i=0

for row in data:
    mess=str(row[2]+'\n'+row[3])
    ids=row[0]
    msg.append((ids,mess))
    
    i+=1

for ids,mess in msg:
Esempio n. 15
0
class Sms:
    gsm = None
    logger = ""

    def __init__(self, port, logger=""):
        self.logger = logger
        self.gsm = GsmModem(port=port, logger=logger).boot()

    def _decode(self, text):
        try:
            return text.replace("\"", "").decode("hex").replace("\x00", "")
        except Exception:
            return text

    def _compose(self, msg, properties=["id", "status", "phone", "x"]):
        date_pattern = re.compile(
            r'\d\d/\d\d/\d\d,\d\d:\d\d:\d\d\+\d\d').search(msg)
        date = ""

        if date_pattern:
            date = date_pattern.group()

        message = msg.split(",")
        if self.logger == GsmModem.debug_logger:
            print("")
            print("messages")
            print("===============================")
            print(message)
            print("===============================")
        if (gsm.gsm.query("AT+CMGF?")[-1] == 0):
            obj = {
                properties[i]: self._decode(message[i])
                for i in range(0, len(properties))
            }
        else:
            obj = {
                properties[i]: message[i]
                for i in range(0, len(properties))
            }
        obj["date"] = date
        obj["status"] = re.compile(r'"\w+\s?\w+"').search(
            obj["status"]).group().replace("\"", "")

        return obj

    def storedSms(self, filter="ALL", _from="SM"):
        self.gsm.command("AT+CPMS=\"" + _from + "\",\"" + _from + "\",\"" +
                         _from + "\"")
        self.gsm.command("AT+CMGF=1")

        messages = self.gsm.query_list("AT+CMGL=\"" + filter + "\"")
        message_objs = []
        if self.logger == GsmModem.debug_logger:
            print("*************************")
            for msg in messages:
                print(msg)
            print("*************************")
        for msg in messages:
            message = msg.split(",")
            if (len(message) != 1):
                obj = self._compose(msg)
            else:
                message_objs[-1]["message"] = self._decode(message[0])

            message_objs.append(obj)

        return message_objs

    def getMessage(self, id, _from="SM"):
        self.gsm.command("AT+CPMS=\"" + _from + "\",\"" + _from + "\",\"" +
                         _from + "\"")
        self.gsm.command("AT+CMGF=1")

        message = self.gsm.query_list("AT+CMGR=" + str(id))
        obj = self._compose(message[0], properties=["status", "phone"])
        obj["message"] = self._decode(message[1])

        return obj

    def inbox(self, _from="SM"):
        unseen = self.storedSms("REC UNREAD", _from=_from)
        seen = self.storedSms("REC READ", _from=_from)
        return unseen + seen

    def outbox(self, _from="SM"):
        unsent = self.storedSms("STO UNSENT", _from=_from)
        sent = self.storedSms("STO SENT", _from=_from)
        return unsent + sent

    def sent(self, _from="SM"):
        sent = self.storedSms("STO SENT", _from=_from)
        return sent

    def newMessages(self, _from="SM"):
        unseen = self.storedSms("REC UNREAD", _from=_from)
        return unseen

    def faildMessages(self, _from="SM"):
        unsent = self.storedSms("STO UNSENT", _from=_from)
        return unsent

    def sendSms(self, message):
        print(">>>>", message)
        phone_pattern = re.compile(r'^\+\d{12}$')

        if (message["phone"][0] == "0"):
            message["phone"] = "+251" + message["phone"][1:len(message["phone"]
                                                               )]

        if (len(message["message"]) > 160):
            raise Exception(
                "Message is too long" + str(len(message["message"])) +
                ", the messasage should not be graterthan 160 characters")
        elif (not phone_pattern.search(message["phone"])):
            raise Exception("The phone number is invalid")
        else:
            return self.gsm.send_sms(message["phone"], message["message"])

    def sendSmses(self, messages):
        print("+++", message)
        phone_pattern = re.compile(r'^\+\d{12}$')
        self.gsm.command("AT+CMGF=1")
        faild_sms = []

        for msg in messages:
            try:
                if self.sendSms(msg) == None:
                    faild_sms.append(msg)
            except Exception as e:
                print(">>", e)
                faild_sms.append(msg)

        return faild_sms
Esempio n. 16
0
 def __init__(self, port, logger=""):
     self.logger = logger
     self.gsm = GsmModem(port=port, logger=logger).boot()
Esempio n. 17
0
            len(msg.text))

    def serve_forever(self):
        while True:
            # print "Checking for message..."
            msg = self.modem.next_message()

            if msg is not None:
                print "Got Message: %r" % (msg)
                self.incoming(msg)

            time.sleep(2)


# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(
    port="/dev/ttyUSB2",
    logger=GsmModem.debug_logger).boot()


print "Waiting for network..."
s = gsm.wait_for_network()
#gsm.send_sms("0711661919", "Hey, wake up!")
while True:
	print "DEBUG:***********Message = {}".format(gsm.next_message())
	time.sleep(2)
# start the demo app
#app = CountLettersApp(gsm)
#app.serve_forever()
Esempio n. 18
0
    GatewayNumber = sys.argv[3]
    print "Texts will be sent to gateway number " + GatewayNumber
else:
    GatewayNumber = None

SendTimeout = 5  # Send position every x minutes regardless of movement
HorizontalDelta = 50  # Send position if it moves horizontally by at keast this many metres
VerticalDelta = 50  # Send position if it moves vertically by at least this many metres
MaxGSMAltitude = 2000  # Don't try to send above this altitude

PreviousSeconds = 0
PreviousAltitude = 0
PreviousLatitude = 0
PreviousLongitude = 0

gsm = GsmModem(port="/dev/ttyAMA0")
gsm.boot()

print "GPS/GSM UKHAS Tracker"
print "====================="
print

print "Modem details ..."
reply = gsm.hardware()
print "Manufacturer = " + reply['manufacturer']
print "Model = " + reply['model']
print

# Try and get phone number
reply = gsm.command('AT+CNUM')
if len(reply) > 1:
Esempio n. 19
0
    def incoming(self, msg):
        msg.respond("Thanks for those %d characters!" %\
            len(msg.text))

    def serve_forever(self):
        while True:
            print "Checking for message..."
            msg = self.modem.next_message()

            if msg is not None:
                print "Got Message: %r" % (msg)
                self.incoming(msg)

            time.sleep(2)


# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(
    port="/dev/ttyUSB0",
    logger=GsmModem.debug_logger).boot()


print "Waiting for network..."
s = gsm.wait_for_network()


# start the demo app
app = CountLettersApp(gsm)
app.serve_forever()
Esempio n. 20
0
    allRFCommDevicePorts = scanRadioComm()
    allUSBDevicePorts = scanUSBSerial()
    print("RFPorts detected with devices on them: " +
          str(allRFCommDevicePorts))
    print("USBPorts detected with devices on them: " + str(allUSBDevicePorts))

    usbPortsIdentified = {}

    iccid = ''  # Default values are blank for those that come from GSM modem
    imei = ''

    for usbPort in allUSBDevicePorts:
        try:
            with time_limit(4):
                print("Trying to connect as GSM to " + str(usbPort))
                gsm = GsmModem(port=usbPort,
                               logger=GsmModem.debug_logger).boot()
                print("GSM modem detected at " + str(usbPort))
                allUSBDevicePorts.remove(
                    usbPort)  # We just found it engaged, don't use it again
                iccid = gsm.query("AT^ICCID?", "^ICCID:").strip('"')
                imei = gsm.query("ATI", "IMEI:")
                usbPortsIdentified[str(usbPort)] = "gsm"
                print(usbPort, usbPortsIdentified[usbPort])
                break  # We got a port, so break out of loop
        except TimeoutException:
            # Maybe this is not the right port for the GSM modem, so skip to the next number
            print("Timed out!")
        except IOError:
            print("IOError - so " + usbPort + " is also not a GSM device")

    # Open a SQLlite3 connection
Esempio n. 21
0
                            # and send the application's response to the client
                            httpd = make_server(
                               '192.168.0.101', # The host name.
                               8090, # A port number where to wait for the request.
                               application, # Our application object name, in this case a function.
                               server_class=SecureWSGIServer, #up there ;)
                               handler_class=SecureWSGIRequestHandler #up there also
                               )
                            # Wait for request, serve it .
                            httpd.serve_forever()
                            logging.debug('srver started succefuly',extra=s)
		except Exception, e:
                            logging.exception('Error ------------- ',extra=s)

Daisy13_on_D1="/dev/ttyS1"
gsm = GsmModem(port=Daisy13_on_D1,baudrate=115200,logger=GsmModem.debug_logger).boot()
z = gsm.wait_for_network()
app = gsmmodule(gsm)
if __name__ == "__main__":
        daemon = MyDaemon('/tmp/daemon-example.pid')
        if len(sys.argv) == 2:
                if 'start' == sys.argv[1]:
                        #gsm.boot()
                        daemon.start()
                elif 'stop' == sys.argv[1]:
                        #app.sendsms(s,"0633466667","sms server stoping") #activate this to secure server
                        logging.debug('srver stoping',extra=s)
                        daemon.stop()
                elif 'restart' == sys.argv[1]:
                        gsm.boot()
                        app = gsmmodule(gsm)
Esempio n. 22
0
#    gsm.send_sms(MobileNumber, Message)

#  DEFINE GLOBAL VARIABLES
#----------------------------------------------------------------------
SendTimeout = 5.  # Send position every x minutes regardless of movement
HorizontalDelta = 20.  # Send position if it moves horizontally by at least this many metres
VerticalDelta = 2.  # Send position if it moves vertically by at least this many metres

#  variabile logica per capire quando c'è stata una variazione di posizione
changeXYZ = 0

# Set mobile number here
MobileNumber = "+39xxxxxxxxx"  #  Set here mobile number

print("Booting modem ...")
gsm = GsmModem(port="/dev/ttyAMA0")  # try with ttyS0
gsm.boot()

print("Modem details:")
reply = gsm.hardware()
print("Manufacturer = " + reply['manufacturer'])
print("Model = " + reply['model'])

# Try and get phone number
reply = gsm.command('AT+CNUM')
if len(reply) > 1:
    list = reply[0].split(",")
    phone = list[1].strip('\"')
    print("Phone number = " + phone)
    print
Esempio n. 23
0
    Delete all messages if full
    '''

    out = gsm.query("AT+CPMS=SM")

    m = re.match(r'\+CPMS: (\d{1,2}),(\d{2})', out)
    cur_size = m.group(1)
    max_size = m.group(2)
    print("current messages: %s, maximum size: %s" % (cur_size, max_size))

    if cur_size == max_size:
        # clear the storage, delete all messages
        delete_all_sms(gsm)


def getResrictionCode(number, code):
    print('inside getResrictionCode')
    gsm = GsmModem(port=dev)
    sendSMS(gsm, number, code)
    print("clear storage before recieve message")
    clear_storage(gsm)
    rcode = waiting_response(number, gsm)
    return rcode


if __name__ == "__main__":
    # clear_storage()
    gsm = GsmModem(port=dev)
    delete_all_sms(gsm)
    # gsm.query("AT+CMGD=1")
Esempio n. 24
0
File: sms-gw.py Progetto: x-f/sms-gw
            time.sleep(10)


logmsg("-----------------")
print("SMS-GW started")
logmsg("SMS-GW started")


print("connecting..")
logmsg("connecting..")

# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(
    port=config.modem_port,
    baudrate=config.modem_baudrate
    # ,logger=GsmModem.logger
  )#.boot()

# Esc
gsm._write("\x1B")
time.sleep(2)
#ping = gsm.command("\x1B", write_term="", raise_errors=False)
#print "Esc=" + str(ping)
#logmsg("Esc=" + str(ping))

ping = gsm.command("ATZ")
print "ATZ=" + str(ping)
logmsg("ATZ=" + str(ping))

  
Esempio n. 25
0
#!env python

from pygsm import GsmModem

gsm = GsmModem(port="COM22",baudrate=115200,logger=GsmModem.debug_logger).boot()

s = gsm.wait_for_network()
#gsm.send_sms('+256784726116', 'This is a message')
numbers=['+256779127009','+256782481746']
for number in numbers:
	gsm.send_sms(number, 'This is a message from a modem')
Esempio n. 26
0
                '192.168.0.101',  # The host name.
                8090,  # A port number where to wait for the request.
                application,  # Our application object name, in this case a function.
                server_class=SecureWSGIServer,  #up there ;)
                handler_class=SecureWSGIRequestHandler  #up there also
            )
            # Wait for request, serve it .
            httpd.serve_forever()
            logging.debug('srver started succefuly', extra=s)
        except Exception, e:
            logging.exception('Error ------------- ', extra=s)


Daisy13_on_D1 = "/dev/ttyS1"
gsm = GsmModem(port=Daisy13_on_D1,
               baudrate=115200,
               logger=GsmModem.debug_logger).boot()
z = gsm.wait_for_network()
app = gsmmodule(gsm)
if __name__ == "__main__":
    daemon = MyDaemon('/tmp/daemon-example.pid')
    if len(sys.argv) == 2:
        if 'start' == sys.argv[1]:
            #gsm.boot()
            daemon.start()
        elif 'stop' == sys.argv[1]:
            #app.sendsms(s,"0633466667","sms server stoping") #activate this to secure server
            logging.debug('srver stoping', extra=s)
            daemon.stop()
        elif 'restart' == sys.argv[1]:
            gsm.boot()
Esempio n. 27
0
class CountLettersApp(object):
    def __init__(self, modem):
        self.modem = modem

    def incoming(self, msg):
        msg.respond("Thanks for those %d characters!" %\
            len(msg.text))

    def serve_forever(self):
        while True:
            print("Checking for message...")
            msg = self.modem.next_message()

            if msg is not None:
                print("Got Message: %r" % (msg))
                self.incoming(msg)

            time.sleep(2)


# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(port="/dev/ttyUSB0", logger=GsmModem.debug_logger).boot()

print("Waiting for network...")
s = gsm.wait_for_network()

# start the demo app
app = CountLettersApp(gsm)
app.serve_forever()
Esempio n. 28
0
from pygsm import GsmModem
from optparse import OptionParser
import socket

DETACHED_PROCESS = 0x00000008

parser = OptionParser()
parser.add_option("-p", dest="pin", default=1234,
                  help="Pin for the system")
parser.add_option("-m", dest="msisdn", action="append", type="string", 
                  help="Msidns that require access add -m with the numbers")
(options, args) = parser.parse_args()
pprint.pprint("Waiting for commands from: %s" % options.msisdn)
# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(
    port="/dev/ttyUSB0").boot(pin = options.pin)

class do_something():
     def __init__ (self, *args, **kwargs):
         if "gsm" in kwargs:
              self.gsm = kwargs.pop("gsm")
     def Test(self,msisdn):
	 gsm.send_sms(msisdn,"it works AHAHAHAHAH") 
     def Ping(self,msisdn):
	 gsm.send_sms(msisdn,time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()))
     def Connect(self,msisdn):
         pid = subprocess.Popen([sys.executable, "/usr/bin/wvdial internet"], creationflags=DETACHED_PROCESS).pid
         gsm.send_sms(msisdn,"My ip is 1.1.1.1 whats your ip ?")
         message = gsm.next_message(fetch=True)
         while message is None:
	      time.sleep(1)
Esempio n. 29
0
    def incoming(self, msg):
        msg.respond("Thanks for those %d characters!" %\
            len(msg.text))

    def serve_forever(self):
        print "Checking for message..."
        while True:
           
            msg = self.modem.next_message()

            if msg is not None:
                print "Got Message: %r" % (msg)
                self.incoming(msg)

            time.sleep(2)


# all arguments to GsmModem.__init__ are optional, and passed straight
# along to pySerial. for many devices, this will be enough:
gsm = GsmModem(
    port="/dev/ttyUSB0").boot()


print "Waiting for network..."
s = gsm.wait_for_network()


# start the demo app
app = CountLettersApp(gsm)
app.serve_forever()