Files
gitlab-instance-0a899031_ma…/草稿/EC20发短信.md
2023-04-25 19:19:17 +08:00

3.2 KiB

EC20模块收发短信

使用4g模块,而不是GSM模块

通信运营商允许申请副卡,共享主卡的自费套餐,比如电话/短信/流量

通常副卡要收费10元/月,没有其他费用

但是能拥有一个全新的手机号,用作工作(区分生活)或者注册验证网站也挺好的

这个时候往往会遇到问题:比如出门只带一个手机,,或者出省旅游/出国也需要接发短信

托管sim卡,正常收发短信,就是一个小需求

另外,通过底层的AT指令,还可以实现闪信,也就是0级短信,也成flash sms

本篇文章用到的设备

  • orange pi 3 lts,价格约250

  • EC20 usb模块 价格约180 (+吸盘天线)

实现的功能

  • 短信:文本短信/静默短信/闪信

  • 打电话/tts语音生成

  • 4g流量网络

  • gps定位


串口调试

串口通信,AT指令

windows上下载串口调试助手, 回复关键词 串口可以获取

另外发送短信,有text和pdu模式,需要对文字和手机号进行编码,可以使用转换工具

通信模块的AT指令,基本相同,会有细微的差别,可参考相关手册


python调试串口

使用pyserial设置AT指令

import serial
modem = serial.Serial(port='COM8', baudrate=9600)
modem.write(("AT"+"\r\n").encode())

注意在windows系统上,设备端口是COM8,在linux上的设备一般是/dev/ttyUSB

为什么我不用gammu

gammu是针对通信模块的框架,安装后,可以自动接受短信,守护进程

也可以发短信

并且有前端网页,后端数据集成

但是,对于配置类的约束,个人更倾向于python控制AT指令,封装成api

更好的实现业务逻辑,和改造


使用telegram bot进行转发

设置tg机器人,使用get请求即可

在telegram

  • 申请一个bot机器人,获取token

  • 创建群组,然后获取群组的chatid

就可以实现转发message消息

参考代码

import requests
# bot发消息到tg群组
def sendTg(message):
    baseUrl="https://api.telegram.org/bot"
    toekn="558659722:AA32A3v8gK23q7R7_nsr8V58Iu-_Z6B232SCw"
    chat_id="-861532r23527609"
    text=message
    url=f'{baseUrl}{toekn}/sendMessage?chat_id={chat_id}&text={text}'
    try:
        r = requests.get(url)
    except:
        print('请检查网络')

最后,别用中国移动,趁早携号转网吧