0%

sms_forward

短信转发工具教程

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)