100 lines
3.0 KiB
Python
100 lines
3.0 KiB
Python
import serial
|
|
import time
|
|
import requests
|
|
|
|
def Unicode2HexStr(Unicde_Str):
|
|
Hex_Str = ""
|
|
for i in range(0, len(Unicde_Str)):
|
|
Hex_Str += (hex(ord(Unicde_Str[i])).replace('0x', '').zfill(4))
|
|
return Hex_Str
|
|
|
|
|
|
def decode2HexStr(Unicde_Str):
|
|
strText = (bytes.fromhex(Unicde_Str)).decode('utf-16-be')
|
|
# print(strText)
|
|
return strText
|
|
|
|
# bot发消息到tg群组
|
|
def sendTg(message):
|
|
baseUrl="https://api.telegram.org/bot"
|
|
toekn="558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw"
|
|
chat_id="-861577609"
|
|
text=message
|
|
url=f'{baseUrl}{toekn}/sendMessage?chat_id={chat_id}&text={text}'
|
|
try:
|
|
r = requests.get(url)
|
|
except:
|
|
print('请检查网络代理')
|
|
# https://api.telegram.org/bot558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw/sendMessage?chat_id=-861577609&text=1234
|
|
|
|
def deleteALLsms():
|
|
#删除所有短信
|
|
modem.write(("AT+CMGD=1,4"+"\r\n").encode())
|
|
print(modem.readline())
|
|
time.sleep(1)
|
|
print(modem.readline())
|
|
print('删除所有短信完成')
|
|
def deleteIndexsms(index):
|
|
#删除指定短信
|
|
modem.write((f"AT+CMGD={index}\r\n").encode())
|
|
print(modem.readline())
|
|
time.sleep(1)
|
|
print(modem.readline())
|
|
print(f'删除{index}完成')
|
|
|
|
def viewSMS():
|
|
modem.write(("AT"+"\r\n").encode())
|
|
print(modem.readline())
|
|
time.sleep(1)
|
|
print(modem.readline())
|
|
modem.write(("AT+CMGF=1"+"\r\n").encode())
|
|
print(modem.readline())
|
|
time.sleep(1)
|
|
print(modem.readline())
|
|
modem.write(("AT+CMGL="+'"ALL"'+"\r\n").encode())
|
|
print(modem.readline()) # 命令显示
|
|
|
|
nowIndex=-1
|
|
while True:
|
|
itext = (modem.readline()[:-2]).decode('utf-8') # [:-2]==>先删除\r\n
|
|
if itext.startswith("+CMGL"): # spilt解析手机号码
|
|
textArr=itext.split(",")
|
|
# 手机号
|
|
phoneNUm=textArr[2]
|
|
print(phoneNUm)
|
|
# 短信索引
|
|
smsindex=(textArr[0]).split(":")[1]
|
|
nowIndex=int(smsindex)
|
|
print(smsindex)
|
|
|
|
print(itext)
|
|
sendTg(itext)
|
|
elif itext == "OK":
|
|
print('查询短信列表完成')
|
|
if nowIndex>0 or nowIndex==0:
|
|
deleteIndexsms(str(nowIndex))
|
|
# time.sleep(5)
|
|
break
|
|
else :
|
|
if len(itext)>0:
|
|
try:
|
|
print(decode2HexStr(((itext))))
|
|
sendTg(decode2HexStr(((itext))))
|
|
except:
|
|
# print(itext)
|
|
sendTg(itext)
|
|
modem.close() #关闭终端
|
|
# time.sleep(1)
|
|
|
|
|
|
|
|
while True:
|
|
try:
|
|
modem = serial.Serial(port='/dev/ttyUSB2', baudrate=9600)
|
|
print("短信助手硬件USB接口已连接成功...正在启动")
|
|
viewSMS()
|
|
# time.sleep(1)
|
|
except Exception as e:
|
|
print(e)
|
|
print("请检查短信模块是否插上usb 或 确定端口号是否正确")
|
|
time.sleep(60) #每30s检测1次短信 |