标签:
armbian
使用armbian系统接收和发送短信并转发短信至微信
本文档使用 MrDoc 发布
-
+
首页
使用armbian系统接收和发送短信并转发短信至微信
### 硬件准备 N1盒子(刷入armbian) EC20 模块(CE-FDG) USB转接板 ### pushplus推送加 pushplus(推送加)是集成了微信、短信、邮件、企业微信、HiFlow连接器、钉钉、飞书等渠道的信息推送平台 只需要调用一个简单的API接口,即可帮助你迅速完成消息推送,使用简单方便 ### 获取token 先找到微信公众号关注下,点击进入[pushplus推送加](https://pushplus.plus/login.html"),使用微信扫码登录,找到发送消息(一对一消息),在网页上发送消息测试一下,能收到的话就可以了 ### EC 模块初始化和配置 将含有EC20模块的转接板插入USB口,使用命令 ```javascript ls /dev/ttyUSB* ``` 查看当前系统中的 tty 模拟 usb 的设备,如果当前机器只有 ec20 模块的话大概会看到 ttyUSB1/ttyUSB2/ttyUSB3, 有些还会有 ttyUSB4 甚至更高,根据移远文档的说明,通常 ttyUSB2 是 AT 命令口,这也是本文主要用到的接口 确定转接板链接正常后安装 minicom ```javascript apt install minicom ``` 然后通过命令连接到模块执行 AT 命令 ```javascript minicom -D /dev/ttyUSB2 ``` 输入 ATI 按回车可以看到模块返回的模块信息,大概如下 ```javascript Quectel EC20F Revision: EC20CEFAGR06A10M4G ``` 需要注意的是有些模块可能没有 ttyUSB2, 但是有 ttyUSB3 和 ttyUSB4, 这时可以尝试使用 ttyUSB3. 如果设备插了多个模块和转接板,则后面的数字是顺延排列的,所以其实叫什么名无所谓,可以全都发一下 AT 指令试一下. 然后输入 ```javascript AT+QPRTPARA=3 ``` 重置模块设置,然后输入 ```javascript AT+CFUN=1,1 ``` 重启模块,重启时模块会和机器短暂断开连接,如果长时间链接不上可以执行 ```javascript ls /dev/ttyUSB* ``` 看下数字是否发生变化,有时数字会往后顺延,这时需要重新拔插 usb 或者直接连接新的接口. 然后输入 ```javascript AT+COPS? AT+QNWINFO ``` 查询是否已经注册到运营商网络,大概会返回如下信息 ```javascript AT+COPS? +COPS: 0,0,"CHN-UNICOM",7 OK AT+QNWINFO +QNWINFO: "FDD LTE","46001","LTE BAND 3",1650 OK ``` 到这里 EC 模块就算是配置好了,如果没有你的 SIM 卡没有注册成功的话,先排除是否是欠费了,没有的话可以尝试开启 VOLTE, 操作方式的话还请 google 搜索 ### 配置短信接收和转发 首先通过 ```javascript apt install gammu-smsd ``` 安装,然后修改 ```javascript /etc/gammu-smsdrc ``` 改后内容大致如下 ```javascript # Configuration file for Gammu SMS Daemon # Gammu library configuration, see gammurc(5) [gammu] # Please configure this! port = /dev/ttyUSB2 connection = at19200 # Debugging #logformat = textall # SMSD configuration, see gammu-smsdrc(5) [smsd] service = files logfile = syslog RunOnReceive = /bin/bash /root/gammu-receive.sh PhoneID = 可填写自己的手机信息来区分 # Increase for debugging information debuglevel = 0 # Paths where messages are stored inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/ ``` 其中 gammu-receive.sh 是收到短信时用来转发的脚本,其实在 gammu-smsd 官方文档中可以找到,至于发到哪里怎么发送可以自行发挥,也可以使用其它语言编写,其原理就是 gammu-smsd 收到短信时会执行 RunOnReceive 的命令,短信的信息将已 env 的方式传递,这里提供我转发至 微信 的脚本内容 ### 编写脚本 ```javascript vim /root/gammu-receive.sh ``` 填写以下内容 ```javascript #!/usr/bin/env bash declare -i i MSGS MSGS=${SMS_MESSAGES} DEVICE="自己的设备名称" SOCKET="${PHONE_ID}" FROM="${SMS_1_NUMBER}" DATE=$(date '+%Y-%m-%d %H:%M:%S') CONTENT="Device:${DEVICE} Socket:${SOCKET} From:${FROM} Date:${DATE} ------ " i=1 while [ $i -le $MSGS ]; do declare "PART"="SMS_${i}_TEXT" CONTENT="${CONTENT}${!PART}" i=$(($i+1)) done CONTENT=${CONTENT//&/%26} CONTENT=${CONTENT//</%3C} CONTENT=${CONTENT//>/%3E} # 配置token token=复制你的token到这里 # 发送消息到微信 curl -d "token=${token}=${FROM}&content=${CONTENT}&template=markdown" -X POST https://www.pushplus.plus/send ``` 脚本中的 PHONE_ID 就是上方 /etc/gammu-smsdrc 内的 PhoneID, 如果有多个模块可以用来分辨接收设备,此外所有路径尽量使用绝对路径,配置好之后注意设置转发脚本的权限 ```javascript chmod 0755 /root/gammu-receive.sh ``` 配置好后通过如下命令启动 ```javascript systemctl start gammu-smsd ``` ### 发送短信 这里网上大多数人看到的教程内都是使用 ```javascript echo "a test sms from ec20" | gammu sendsms TEXT 186XXXXXXXX ``` 这种方式发送短信,但其实当 gammu-smsd 启动后会将 ttyUSB 占用,此时会提示 busy 错误,除非每次发送短信之前都将 gammu-smsd 停止. 其实安装 gammu-smsd 的时候大概率会一同安装 gammu-smsd-inject(没有的话可以去 github 上找或者尝试通过 apt 安装) 然后只需要将命令换成 ```javascript echo "a test sms from ec20" | gammu-smsd-inject TEXT 186XXXXXXXX ``` 即可,只是 gammu-smsd-inject 发送会有延迟,因为其原理是将其书写成一个文件,gammu-smsd 会定时扫描发送 ### 其他 有些人会有修改 imei 的需求这里提供 2 个命令,一个是读取 ```javascript imeiAT+EGMR=0,7 ``` 以及一个修改 ```javascript imeiAT+EGMR=1,7,"IMEI" ``` ### 参考链接 [矢澤にこ](https://blog.ni-co.moe/public/592.html "矢澤にこ")
armbian
linux
短信
微信
admin
Linux
2024年9月4日 15:23
转发
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
下载Markdown文件
分享
链接
类型
密码
更新密码