__init__.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import logging
  2. import serial
  3. class Gsm:
  4. def __init__(self, port, msisdn, imei=None, pin=None):
  5. self.port = port
  6. logging.info('Initializing G clsm cass for port ' + port)
  7. try:
  8. self.console = serial.Serial(self.port, 112500, timeout=3)
  9. except:
  10. logging.error('Error connecting to ' + self.port)
  11. self.msisdn = msisdn
  12. self.cmd("AT+CMGF=1")
  13. self.status = self.check_status()
  14. self.unlock_sim(pin)
  15. loggin.info("Current status: " + self.status)
  16. if imei is not None:
  17. r = self.set_imei(imei)
  18. if r:
  19. self.imei = imei
  20. loggin.info("IMEI Changed")
  21. def cmd(self, cmd):
  22. self.console.write(cmd.encode("ascii"))
  23. return list(map(lambda elem: elem.decode("ascii", errors="replace"), port.readlines()))
  24. def check_status(self):
  25. r = self.cmd("ATI")
  26. if "OK" in r:
  27. return True
  28. else:
  29. return False
  30. def unlock_sim(self, pin):
  31. status = self.cmd("AT+CPIN?")
  32. if status == "+CPIN:READY":
  33. return True
  34. elif "+CPIN:SIM PIN" in status:
  35. auth = self.cmd('AT+CPIN="' + pin + '"')
  36. if "OK" in auth:
  37. loggin.info("Pin correct")
  38. return True
  39. else:
  40. logging.error("Wrong PIN")
  41. return False
  42. else:
  43. logging.error("Unknown PIN error")
  44. return False
  45. def set_imei(self, imei):
  46. r = self.cmd('AT+EMGR=1,7,"' + imei + '"')
  47. if "OK" in r:
  48. return True
  49. else:
  50. return False
  51. def fetch_messages(self):
  52. r = self.cmd("AT+CMGL=REC UNREAD")
  53. print(r)
  54. def delete_messages(self):
  55. r = self.cmd("")
  56. def parse_message(self, message):
  57. return True