1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import logging
- import serial
- import time
- logging.basicConfig(level=logging.DEBUG)
- class Gsm:
- def __init__(self, port, msisdn, imei=None, pin=None):
- self.port = port
- logging.info('Initializing Gsm cass for port ' + port)
- try:
- self.console = serial.Serial(self.port, 112500, timeout=3)
- except:
- logging.error('Error connecting to ' + self.port)
- self.msisdn = msisdn
- #self.cmd("AT+CMGF=1")
- logging.info('Connection established')
- self.status = self.check_status()
- self.unlock_sim(pin)
- logging.info("Current status: " + str(self.status))
- if imei is not None:
- r = self.set_imei(imei)
- if r:
- self.imei = imei
- logging.info("IMEI Changed")
- def cmd(self, cmd):
- cmd += "\r\n"
- self.console.write(cmd.encode("ascii"))
- time.sleep(0.5)
- return list(map(lambda elem: elem.decode("ascii", errors="replace"), self.console.readlines()))
- def check_status(self):
- r = self.cmd("ATI")
- if "OK" in r:
- return True
- else:
- return False
- def unlock_sim(self, pin):
- status = self.cmd("AT+CPIN?")
- if status == "+CPIN:READY":
- return True
- elif "+CPIN:SIM PIN" in status:
- auth = self.cmd('AT+CPIN="' + pin + '"')
- if "OK" in auth:
- logging.info("Pin correct")
- return True
- else:
- logging.error("Wrong PIN")
- return False
- else:
- logging.error("Unknown PIN error")
- return False
- def set_imei(self, imei):
- r = self.cmd('AT+EMGR=1,7,"' + imei + '"')
- if "OK" in r:
- return True
- else:
- return False
- def fetch_messages(self):
- r = self.cmd("AT+CMGL=REC UNREAD")
- print(r)
- def delete_messages(self):
- r = self.cmd("")
- def parse_message(self, message):
- return True
|