0%

短信转发工具教程

1. 项目介绍

本工具用于将sim卡接收到的短信转发到指定的通知渠道,如企业微信、电报机器人、邮件、BARK 等。它支持多种转发方式(短信接收端也可以通过短信控制sim卡发送短信),并提供灵活的规则配置,适用于个人及企业使用。

2. 安装与配置

2.1 前置条件

  • 合宙ESP32-C3开发板简约款
  • 合宙Air780E开发板
  • 焊接工具与必要的排针、排母
  • 接收短信的sim卡(中国电信不支持,电信短信走的cdma2000/volte air780不支持volte,cdma2000更不用说了,基本没什么模组会支持)
  • 2.4G Hz的wifi,用来联网
  • 用来推送短信的服务

2.2 硬件连接

  • 由于Air780E需要按下开机键才能开机,而我们需要上电即开机,所以可以将POW按钮与J227元件中间的焊盘短接,实现Air780E开发板上电即开机的功能
  • 接着,我们需要将Air780E开发板与ESP32-C3开发板的电源引脚相连(5V与GND)、将ESP32-C3开发板的UART1与Air780E开发板的MAIN_UART相连,引脚如下(两组的实际位置是相同的)

2.3 刷入固件与脚本

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[2023-03-04 17:26:10.440] ESP-ROM:esp32c3-api1-20210207
[2023-03-04 17:26:10.440] Build:Feb 7 2021
[2023-03-04 17:26:10.440] rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT)
[2023-03-04 17:26:10.440] Saved PC:0x4038b012
[2023-03-04 17:26:10.440] SPIWP:0xee
[2023-03-04 17:26:10.440] mode:DIO, clock div:1
[2023-03-04 17:26:10.440] load:0x3fcd5820,len:0xed4
[2023-03-04 17:26:10.440] load:0x403cc710,len:0x740
[2023-03-04 17:26:10.440] load:0x403ce710,len:0x2b74
[2023-03-04 17:26:10.440] entry 0x403cc710
[2023-03-04 17:26:10.815] I/main LuatOS@ESP32C3 base 22.12 bsp V1003 32bit
[2023-03-04 17:26:10.815] I/main ROM Build: Feb 16 2023 10:44:34
[2023-03-04 17:26:10.815] I/fs script zone as luadb
[2023-03-04 17:26:10.815] D/main loadlibs luavm 131064 13216 13216
[2023-03-04 17:26:10.815] D/main loadlibs sys 124600 53572 53572
[2023-03-04 17:26:10.815] I/user.main sms_forwarding 1.0.0
[2023-03-04 17:26:10.862] E (489) task_wdt: esp_task_wdt_init(593): TWDT already initialized
[2023-03-04 17:26:10.909] I/user.air780 sync at
[2023-03-04 17:26:10.909] I/user.air780 sent at AT
[2023-03-04 17:26:11.112] I/user.air780 sent at AT
[2023-03-04 17:26:11.315] I/user.air780 sent at AT
  • 因为两块单板接反了,上电后将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
      8
      function 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

如果仍有问题,可邮箱联系shumei反馈。
特别感谢!!!chenxu大佬
原创(https://www.chenxublog.com/2022/10/28/19-9-sms-forwarding-air780e-esp32c3.html)

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment