-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.py
92 lines (75 loc) · 2.64 KB
/
Main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import serial
import time
import sys
class Modem(object):
def __init__(self):
self.port_id = 0
while self.port_id <= 10:
try:
self.open(port_id=self.port_id)
break
except serial.serialutil.SerialException:
self.port_id += 1
if self.port_id >= 10:
print('Something goes wrong with connection to ports')
sys.exit(333)
else:
self.stat()
def open(self, port_id):
self.ser = serial.Serial(port='/dev/ttyUSB%s' % port_id, baudrate=460800, timeout=5)
self.ser.write('ATZ\r')
time.sleep(1)
self.ser.write('AT+CMGF=1\r')
time.sleep(1)
self.ser.write('AT+CNMI=2,1,0,0,0\r')
time.sleep(1)
self.ser.write('AT+CPMS="ME","ME","ME"\r')
def stat(self):
print('--STAT-- \nreadable: %s, writable: %s seekable: %s\nport: %s' %
(self.ser.readable(), self.ser.writable(), self.ser.seekable(), '/dev/ttyUSB%s' % self.port_id))
print('all data on port:\n%s' % self.ser.readlines())
def GetReadSMS(self):
self.ser.write('AT+CMGL="REC READ"\r')
#time.sleep(2)
data = self.ser.readall().strip('\r')
#print('DATA:\n' + data)
data_lines = data.splitlines()
res = {}
for i, data in enumerate(data_lines):
if data.startswith('+CMGL'):
spn = data.find('+7') # start_phone_number
key = data[spn:spn + 12]
value = data_lines[i + 1]
res[key] = value
return res
def GetUnReadSMS(self):
self.ser.write('AT+CMGL="REC UNREAD"\r')
time.sleep(2)
data = self.ser.readall().strip('\r')
#print('DATA:\n' + data)
data_lines = data.splitlines()
res = {}
for i, data in enumerate(data_lines):
if data.startswith('+CMGL'):
spn = data.find('+7') # start_phone_number
key = data[spn:spn + 12]
value = data_lines[i + 1]
res[key] = value
return res
def SendSMS(self, numb, mes):
self.ser.write('AT+CMGS="%s"\r' % numb)
time.sleep(1)
self.ser.write('%s\r' % mes)
time.sleep(1)
self.ser.write(chr(26))
print('SMS sent to %s' % numb)
def clearMemory(self):
self.ser.write('AT+CMGD=1,4\r')
def checkNewSMS(self):
self.ser.readall()
if __name__ == "__main__":
m = Modem()
#print(m.GetReadSMS())
#print(m.GetUnReadSMS())
print(m.checkNewSMS())
#h.SendSMS(numb='+79516490617', mes='time to party')