短信转发工具教程
1. 项目介绍
本工具用于将sim卡接收到的短信转发到指定的通知渠道,如企业微信、电报机器人、邮件、BARK 等。它支持多种转发方式(短信接收端也可以通过短信控制sim卡发送短信),并提供灵活的规则配置,适用于个人及企业使用。
2. 安装与配置
2.1 前置条件
- 合宙ESP32-C3开发板简约款
- 合宙Air780E开发板
- 焊接工具与必要的排针、排母
- 接收短信的sim卡(中国电信不支持,电信短信走的cdma2000/volte air780不支持volte,cdma2000更不用说了,基本没什么模组会支持)
- 2.4G Hz的wifi,用来联网
- 用来推送短信的服务
- LuatOS社区提供的推送服务器(点击GitHub图标即可登录,然后点击左边的消息通道新建一个推送方式
- server酱
- shumei (与luatos相同,使用的是shumei的服务器)
2.2 硬件连接
- 由于Air780E需要按下开机键才能开机,而我们需要上电即开机,所以可以将POW按钮与J227元件中间的焊盘短接,实现Air780E开发板上电即开机的功能
- 接着,我们需要将Air780E开发板与ESP32-C3开发板的电源引脚相连(5V与GND)、将ESP32-C3开发板的UART1与Air780E开发板的MAIN_UART相连,引脚如下(两组的实际位置是相同的)
2.3 刷入固件与脚本
- 需要为esp32c3刷入写好的固件与脚本(air780e不需要),如果不会烧录,请先看一下esp32c3烧录教程
- 这里我们需要使用\core_V1004\LuatOS-SoC_V1004_ESP32C3_USB.soc固件(经过验证能正常运行,截至2024/1/22为止其他版本在实际操作中均有问题),请去官网下载
- 脚本可以在这个仓库下载:(https://github.com/chenxuuu/sms_forwarding),这个项目使用的工程在script文件夹中,别选错了
2.4 修改配置
- 我们需要修改脚本中的notify.lua,按注释要求改为自己的逻辑:
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--你的wifi名称和密码,仅2.4G
local wifiName = ""
local wifiPasswd = ""
--短信接收指令的标记(密码)
--[[
目前支持命令([cmdTag]表示你的tag)
C[cmdTag]REBOOT:重启
C[cmdTag]SEND[手机号][空格][短信内容]:主动发短信
]]
local cmdTag = "1234"
--这里默认用的是shumei提供的推送服务,无使用限制
--官网:https://mei-mei.icu/ 点击GitHub图标登陆即可
--支持邮件/企业微信/钉钉/飞书/电报/IOS Bark
--使用哪个推送服务
--可选:meiemi/serverChan/pushover
local useServer = "meimei"
--shuemi提供的推送服务 https://mei-mei.icu/ ,用不到可留空
--这里填.send前的字符串就好了
--如:https://mei-mei.icu/1426F55V965942ABBF153A38B9CD04A3.send/{title}/{data} 填入 1426F55V965942ABBF153A38B9CD04A3
local meimeiPush = ""
--server酱的配置,用不到可留空,免费用户每天仅可发送五条推送消息
--server酱的SendKey,如果你用的是这个就需要填一个
--https://sct.ftqq.com/sendkey 申请一个
local serverKey = ""
--pushover配置,用不到可留空
local pushoverApiToken = ""
local pushoverUserKey = ""
3. 使用指南
- 设备连上USB上电后可以在合宙的串口工具上看到打印的日志,正常连上wifi与基站,短信正常推送
- 使用cmdTag(命令标记)来向设备发送特定格式的短信,让设备执行命令,比如重启或者发送短信
- 重启’C1234REBOOT’
- 主动发送短信’C1234SEND[手机号] [短信内容]’,例:’C1234SEND13800138000 你好,这是一条测试短信’
4. 故障排查
4.1 串口打印出错
1 | [2023-03-04 17:26:10.440] ESP-ROM:esp32c3-api1-20210207 |
- 因为两块单板接反了,上电后将esp32的flash芯片烧坏,更换flash(MX25L3233FM2I-08G)后恢复正常
4.2 无法连上推送服务
- 特殊时期GFW可能会拦截上传到推送服务器的请求(无法确定,2025年两会期间推送服务网站无法打开(页面空白),但luaos的推送可以进行,shumei的服务无法正常推送(后面发现可能和DNS有关,但当时经验不足,已无法验证了))
- Cloudflare的DNS代理打开一段时间后设备无法正常连上推送服务器,与tls证书无关
4.3 短信未能转发
- 由于HTTP请求中的短信内容包含了特殊字符(如 +, ?, &, # 等),这些字符未被正确URL编码,导致HTTP请求格式异常,从而返回’http 400’,正常应该返回 200
- 改进URL编码,短信正常转(否则包含特殊字符的短信无法被转发,也不会报错)
1
2
3
4
5
6
7
8function urlencode(str)
return (str:gsub("([^%w%.%- ])", function(c)
return string.format("%%%02X", string.byte(c))
end):gsub(" ", "%%20")) -- 空格特殊处理为 %20
end
--在notify.lua中调用函数urlencode
local encoded_data = urlencode(data)
local url = "https://mei-mei.icu/" .. meimeiPush .. ".send/sms" .. sms[1] .. "/" .. encoded_data
- 改进URL编码,短信正常转(否则包含特殊字符的短信无法被转发,也不会报错)
如果仍有问题,可邮箱联系shumei反馈。
特别感谢!!!chenxu大佬
原创(https://www.chenxublog.com/2022/10/28/19-9-sms-forwarding-air780e-esp32c3.html)