119 lines
3.2 KiB
Markdown
119 lines
3.2 KiB
Markdown
## EC20模块收发短信
|
|
|
|
> 使用4g模块,而不是GSM模块
|
|
|
|
通信运营商允许申请`副卡`,共享主卡的自费套餐,比如电话/短信/流量
|
|
|
|
通常副卡要收费10元/月,没有其他费用
|
|
|
|
但是能拥有一个全新的手机号,用作工作(区分生活)或者注册验证网站也挺好的
|
|
|
|
这个时候往往会遇到问题:比如出门只带一个手机,,或者出省旅游/出国也需要接发短信
|
|
|
|
托管sim卡,正常`收发短信`,就是一个小需求
|
|
|
|
另外,通过底层的AT指令,还可以实现`闪信`,也就是`0级短信`,也成`flash sms`
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251726778.jpeg" title="" alt="" width="229">
|
|
|
|
本篇文章用到的设备
|
|
|
|
- orange pi 3 lts,价格约250
|
|
|
|
- EC20 usb模块 价格约180 (+吸盘天线)
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251727812.png" title="" alt="" width="248">
|
|
|
|
实现的功能
|
|
|
|
- 短信:文本短信/静默短信/闪信
|
|
|
|
- 打电话/tts语音生成
|
|
|
|
- 4g流量网络
|
|
|
|
- gps定位
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251727855.png" title="" alt="" width="315">
|
|
|
|
---
|
|
|
|
## 串口调试
|
|
|
|
> 串口通信,AT指令
|
|
|
|
windows上下载`串口调试助手`, 回复关键词 `串口`可以获取
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251727862.png" title="" alt="" width="231">
|
|
|
|
另外发送短信,有`text和pdu模式`,需要对文字和手机号进行编码,可以使用转换工具
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251728200.png" title="" alt="" width="265">
|
|
|
|
通信模块的AT指令,基本相同,会有细微的差别,可参考相关手册
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251728491.png" title="" alt="" width="281">
|
|
|
|
---
|
|
|
|
## python调试串口
|
|
|
|
> 使用pyserial设置AT指令
|
|
|
|
```python
|
|
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消息
|
|
|
|
<img src="https://hackrobot-1258475618.cos.ap-shenzhen-fsi.myqcloud.com/202304251728792.jpeg" title="" alt="" width="292">
|
|
|
|
参考代码
|
|
|
|
```python
|
|
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('请检查网络')
|
|
```
|
|
|
|
最后,别用`中国移动`,趁早携号转网吧
|