这是什么
短信转发器这个东西一般是给备用卡,开一个保号套餐,然后用来接收验证码短信之类的东西来用的。市面上的方案大部分都是用一个安卓手机,开着有这类功能的一个软件来实现。本篇文章给大家另一个实现思路,使用4G cat1模组+wifi来实现相同的功能。
方案选择
因为4G cat1模组本身就是可编程的,所以有两种方案:
- 4G cat1模组自行处理接收短信+推送到服务器的功能。这个方案的问题在于:备用卡大部分为保号套餐,不带流量。所以此方案pass(当然实在想用这个方案的话,我也提供了对应的脚本,点击这句话打开工程,看看注释改改信息刷进去就能用)
外接一个wifi板子,使用wifi芯片通过AT命令控制4G cat1模组,并使用wifi芯片上传消息到服务器
本文采用的是第二种方案
准备材料
- 合宙
ESP32-C3开发板
简约款(合宙淘宝/拼多多官方店9.9元包邮的简约款即可,不用买经典款) - 合宙
Air780E开发板
(购买途径同上) - 焊接工具与必要的排针、排母(上面板子应该附赠排针的)
- 用来接收短信用的卡
- 2.4G Hz的wifi,用来联网
- 对接的服务器有几个选择
- LuatOS社区提供的推送服务器(点击GitHub图标即可登录,然后点击左边的
消息通道
新建一个推送方式) - server酱(免费用户每天只能发送五条)
- 你也可以对接自己的推送服务器,但是代码要自己稍微改改
- LuatOS社区提供的推送服务器(点击GitHub图标即可登录,然后点击左边的
硬件对接
由于Air780E需要按下开机键才能开机,而我们需要上电即开机,所以可以短接此处的焊盘,实现Air780E开发板上电即开机的功能:
接着,我们需要将Air780E开发板
与ESP32-C3开发板
的电源引脚
相连(5V与GND)、将ESP32-C3开发板
的UART1
与Air780E开发板
的MAIN_UART
相连,引脚如下(两组的实际位置是相同的):
分别将两块板子焊接上排针与排母,像这样(能一对一插上就行):
接着别忘了再给Air780开发板上插上SIM卡
全搞定后,直接对齐插上去就行了:
刷入固件与脚本
接下来需要为esp32c3刷入写好的固件与脚本
如果不会烧录,请先看一下esp32c3烧录教程
这里我们需要使用新版的V10xx
固件,可以直接去下载快照版固件
脚本可以在这个仓库下载:chenxuuu/sms_forwarding – GitHub,这个项目使用的工程在script
文件夹中,别选错了
我们需要修改脚本中的notify.lua
,按注释要求改为自己的逻辑:
--你的wifi名称和密码
local wifiName = ""
local wifiPasswd = ""
--这里默认用的是LuatOS社区提供的推送服务,无使用限制
--官网:https://push.luatos.org/ 点击GitHub图标登陆即可
--支持邮件/企业微信/钉钉/飞书/电报/IOS Bark
--是否使用server酱,false则使用LuatOS社区提供的推送服务
local useServerChan = false
--LuatOS社区提供的推送服务 https://push.luatos.org/
--这里填.send前的字符串就好了
--如:https://push.luatos.org/ABCDEF1234567890ABCD.send/{title}/{data} 填入 ABCDEF1234567890ABCD
local luatosPush = "ABCDEF1234567890ABCD"
--server酱的配置,免费用户每天仅可发送五条推送消息
--server酱的SendKey,如果你用的是这个就需要填一个
--https://sct.ftqq.com/sendkey 申请一个
local serverKey = ""
如果需要用自己的推送服务,还可以把下面的http请求改成自己服务器支持的格式
测试功能
烧录脚本和固件后,可以看到设备的日志,正常连上wifi与连上了基站
[time] I/user.air780 got recv AT
[time] I/user.air780 check sim card
[time] D/wlan esp_wifi_init ret 0
[time] D/wlan wifi event 2
[time] D/wlan esp_wifi_start ret 0
[time] D/wlan esp_wifi_connect ret 0
[time] I/user.wlan wait for IP_READY
[time] I/user.air780 got recv AT+CPIN?
[time] I/user.air780 configrate
[time] D/wlan wifi event 4
[time] D/wlan wifi station start
[time] D/wlan wifi connected!!!
[time] I/user.air780 got recv AT+CMGF=0
[time] D/wlan ip event 0
[time] D/wlan IP_EVENT_STA_GOT_IP 192.168.0.128
[time] I/user.wlan ready !!
[time] I/user.notify wait for a new sms~
[time] I/user.air780 got recv AT+CSCS="UCS2"
[time] D/sntp time sync done
[time] I/user.air780 got recv AT+CNMI=2,2,0,0,0
[time] I/user.air780 wait for connection
[time] I/user.air780 got recv AT+CGATT?
[time] I/user.air780 connection status true
[time] I/user.air780 connected! wait sms
接下来我们发一条短信试试,脚本内部对长短信进行了处理,所以长短信也可以完美支持。可以看到设备端的日志:
[time] I/user.air780 connected! wait sms
[time] I/user.sms recv 13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G 22/10/28,11:39:38+32 true 2 1
[time] I/user.air780 found a long sms 2 1
[time] I/user.sms recv 13112341234 网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】 22/10/28,11:39:38+32 true 2 2
[time] I/user.air780 a part of long sms 2 2
[time] I/user.air780 got a long sms 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/user.notify got sms 13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/http HTTP POST
[time] D/http esp_http_client_perform 0
[time] I/user.notify pushed sms notify 200 {"code":0,"message":"","data":{"pushid":"xxxxxx","readkey":"xxxxxxxx","error":"SUCCESS","errno":0}} 13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/user.notify wait for a new sms~
同时我们收到了推送来的消息:
如果是server酱,那么是这样的:
不知道对虚拟运营的卡兼容性怎么样
里面的1001固件总是下载失败是为什么啊 波特率921600 简约版c3 usb口换了 官网的1001可以烧录但是这个不行 luatoos版本2.1.72
没看懂,什么叫“里面的1001固件”和“官网的1001”
就是您文章里说的下载快照版固件连接里的 官网的是说的在https://gitee.com/openLuat/LuatOS/releases里面下载的编号为1001的固件
基于LuatOS的开发板,如air724,esp32能当做WIFI网卡使用吗?
理论上724的at指令和780是兼容的,应该可以无缝替换
按照博主的教程 已成功,测试我的移动卡短信接收正常,民生通讯的卡貌似不支持电信制式的
如果可以使用流量发短信,那就可以做成便携设备了,虽然便携没啥用哈哈哈哈
电信短信走的cdma2000/volte
air780不支持volte,cdma2000更不用说了,基本没什么模组会支持
所以电信卡想收短信,需要开通volte功能,然后用air724这类支持volte的模组才可以
直接用 air724 ,刷一样的脚本,可以用电信卡嘛 ?
不能直接替换,但是我研究出来724UG的了,代码比780E的要简单好多https://github.com/simotsukiyuki/sms_forwarding_724ug_uart
不过我需求不太一样,我是把短信通过uart虚拟串口传到win10工控机上再发邮件
求方案一的脚本
博主可以出方案一的脚本么?
按教程焊好,联通卡没问题,插电很快就能收到短信。
香港移动会连续刷屏10分钟左右如下日志
[2022-11-14 17:52:08.478] I/user.air780 connection status false
[2022-11-14 17:52:09.276] I/user.air780 got recv AT+CGATT?
才能收到
I/user.air780 connection status true
香港卡插手机上2分钟内就有信号。是板子的天线太小了吗?
感谢博主分享,我只有一个780e 能否分享一下只有780e的教程,目前还没买esp32
csdk有了,大佬方案一可以整了
按照教程做了 为什么我接收到的长短信是分开的
学会用GitHub反馈bug:https://github.com/chenxuuu/sms_forwarding/issues/1
跟风买了两块芯片,今天拿出来按博主的教程,正常收到短信了!如果支持一下接到电话也推消息,就好了~
有购买链接吗也想搞来玩一玩
蹲一个老哥出咸鱼
大佬NB
有办法用一个esp32c3拖多个air780e吗?
我再下单一套试试,顺便试试新到的giffgaff卡能不能用
https://github.com/chenxuuu/sms_forwarding/blob/master/script
请问一下 esp32c3 和 air780e 除底层固件外,都需要刷入上面链接中的脚本吗?
看你用的是c3+780at还是纯780脚本了
目前的方案和博主的一致:Air780E+ESP32C3
我的卡也没有流量,需要接入wifi来提供网络支持
请问一下,明明刷入了了符合要求的固件,却还是提示固件类型不符合要求,是怎么回事呢?
log:
[2023-03-04 17:04:44.942] I/user.警告 固件类型或版本不满足要求,请使用esp32c3 v1002及以上版本固件。当前:LuatOS-SoC_V1003_ESP32C3
[2023-03-04 17:04:44.942] I/user.air780 sent at AT
[2023-03-04 17:04:45.154] I/user.air780 sent at AT
[2023-03-04 17:04:45.370] I/user.air780 sent at AT
[2023-03-04 17:04:45.433] I/user.警告 固件类型或版本不满足要求,请使用esp32c3 v1002及以上版本固件。当前:LuatOS-SoC_V1003_ESP32C3
[2023-03-04 17:04:45.550] I/user.air780 sent at AT
[2023-03-04 17:04:45.761] I/user.air780 sent at AT
说明你刷入了和脚本不兼容的固件
看看日志最开始几行打印的符合要求吗
是这样子的
:
[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
fixed
您好,我不懂您的意思,可否解释详细些。
更新脚本看看
在我更新您修改过的脚本后,还是会出现同样的报错。
[2023-03-04 18:27:20.540] DBG: Cannot open serial portCOM4
[2023-03-04 18:27:21.726] I/user.air780 sent at AT
[2023-03-04 18:27:21.758] D/wlan wifi event 4
[2023-03-04 18:27:21.758] D/wlan wifi connected!!!
[2023-03-04 18:27:21.758] I/user.警告 固件类型或版本不满足要求,请使用esp32c3 v1004及以上版本固件。当前:LuatOS-SoC_V1003_ESP32C3
[2023-03-04 18:27:21.931] I/user.air780 sent at AT
[2023-03-04 18:27:22.134] I/user.air780 sent at AT
[2023-03-04 18:27:22.277] I/user.警告 固件类型或版本不满足要求,请使用esp32c3 v1004及以上版本固件。当前:LuatOS-SoC_V1003_ESP32C3
[2023-03-04 18:27:22.339] I/user.air780 sent at AT
[2023-03-04 18:27:22.542] I/user.air780 sent at AT
[2023-03-04 18:27:22.743] I/user.air780 sent at AT
[2023-03-04 18:27:22.743] D/wlan ip event 0
[2023-03-04 18:27:22.743] D/lwip net_lwip_task 1343:2,0,1
[2023-03-04 18:27:22.743] D/lwip CALL net_lwip_check_network_ready index 2
[2023-03-04 18:27:22.743] D/lwip net_lwip_check_network_ready 1423:network ready
[2023-03-04 18:27:22.743] D/lwip net_lwip_check_network_ready 1437:DNS0:223.5.5.5
[2023-03-04 18:27:22.743] D/lwip net_lwip_check_network_ready 1437:DNS1:114.114.114.114
[2023-03-04 18:27:22.774] D/wlan IP_EVENT_STA_GOT_IP 192.168.1.115
[2023-03-04 18:27:22.774] gc1 39.01074
[2023-03-04 18:27:22.774] I/user.wlan ready !!
[2023-03-04 18:27:22.774] gc2 39.42188
[2023-03-04 18:27:22.774] I/user.notify wait for a new sms~
[2023-03-04 18:27:22.774] gc3 39.47559
[2023-03-04 18:27:22.774] I/user.警告 固件类型或版本不满足要求,请使用esp32c3 v1004及以上版本固件。当前:LuatOS-SoC_V1003_ESP32C3
[2023-03-04 18:27:22.949] I/user.air780 sent at AT
[2023-03-04 18:27:23.121] I/user.air780 sent at AT
[2023-03-04 18:27:23.215] D/sntp time sync done
https://nightly.link/openLuat/LuatOS/workflows/esp32c3-idf5/master/esp32c3.zip 这个固件下载地址失效了,还有其他地址可以下载不?
官方的固件,目前只能下载到1003的版本
测试了一个月,目前很稳定,收到短信之后推送的速度也很快。
使用下来发现有两个痛点:
1是长短信分隔的阈值太低了,看到最新代码已经更新了,晚点试试。
2是我的卡是日租卡,0流量的那种,实际用下来每天都会跑几百KB流量,每天会扣1毛话费。这个能告知下是什么原因吗?有没有对应的解决方法呢?
好像可以打电话关闭gprs流量功能
关了收不到短信了。。。还得找客服重新开
我的卡也是没流量的,然后因为它跑了一下网络,运营商就会发短信过来让我开通流量功能,有没有版本关闭这个流量功能呢?
使用最新脚本+最新(七月后发布的)AT固件
关于移动运营商收不到短信的问题,现已查明是我的SIM卡开了PIN码的问题。
博主您好,我也买了一个780e的板子,但是我想把收到的短信通过UART串口输出到电脑上,但是我的板子是只有一个USB公口没有其他引脚的,我想请教一下luatos下有没有办法利用用户虚拟串口输出短信内容?
前几天看了很多资料,也试了例程,但是用户虚拟串口始终没有输出,我想请教一下这个应该是什么原因导致的,谢谢!
不能用虚拟usb串口
可以用了,我后来去官方论坛找到原因了,是要写成uartid = uart.VUART_0这样就行了。
不过还是谢谢大佬,我已经实现了通过电脑的USB虚拟串口收发短信的功能了。
大佬,这个虚拟终端收发短信有相关参考资料不?
你可以来我的博客(https://simotsukiyuki.github.io/post/sms780e/)看全套教程,或者也可以参考https://github.com/simotsukiyuki/SMS780E。
我做了Windows版客户端
博主你好,看了你的教程我有几个疑问(最近才开始接触luat)
1,两个板子合在一起了,那连接电脑用哪个板子的usb口?
2,air780e是只需要刷入core底层核心吗?不用写入任何脚本是吗?
我尝试给air780e刷入了官方的最新780e固件,然后给esp32c刷入你文中链接的固件,和你github仓库的脚本。插入sim卡,
然后usb一头插在电脑,一头插在esp32c的板子上。但是并不能转发短信,
我的操作方式哪里有问题吗?
1.下载固件用自己的usb,供电任意
2. 用AT固件
你好博主,在我准备好一切之后,能收到验证码但是推送不出去
具体日志是这样的: E/http NOT SUPPORT TLS
请问是什么原因
用带https的固件,或者不要用https接口,用http接口
请问那种固件是https的?固件名称上有什么特征?
V1005固件遇到了同样的问题,刷V1004固件后解决,应该是V1005固件的bug
果然如此,脚本不变,V1005和V1006都不行,换回V1004就行
用了大佬的脚本,分享1点心得
现在有卖排针焊接好的版本了,买一个焊好的air780e,和一个普通的ESP32C3,直接对插即可,无需工具
另外请教大佬,邮件的推送怎么写
push.luatos.org服务里自带邮件推送方式
发现一个情况,air780e在接收到短信之前网络指示灯的闪烁频率比较慢,接收到短信后闪烁频率变快,并且在短信结束后一直维持这个频率,不知道大家有没有这个情况,不确定是不是固件的bug
香港公司或者外国发的短信,发件人号码大多是公司名,比如
Amex
,Paypal
,Carousell
等,对应到PDU协议,就是TP-OA节,TON=101。这个时候电话号码不能用BCD编码解码,而是要用gsm7bitdecode,还望楼主可以帮忙完善一下pdu.lua,在if num:sub(1, 2) “91”下面加一个分支:if num:sub(1, 2) “D0”参考:https://en.wikipedia.org/wiki/GSM_03.40#Message_Content
参考PDU:
07915862337418F62410D0C3B0FC5D9F97D96C0000320113324282238CC3B0FC5D9F97D96CD0F04D2EBB40CEB2BD2C07CDD1617919947FD7E5A0F19B5C06DDD3743428ECCEBFDD65500B340CCBDFF57999CD0695DB70F63B5F2ECF41F7349B0D7297ED6539283C5F83CC6F39284D7781B2EFBA1C347E93CBA0F41C24A3C1702E50920E4ACF41F6303B4D0699DF72900CD44EBBEBF4F2DC05
原来如此,我说我giffgaff的卡收到运营商短信发件人怎么是hex码,有空研究下,感谢提供资料
已添加相应处理,代码来自gpt4?
还有就是想问下at固件能取到本机号码吗,毕竟刷luatos固件的时候可以通过mobile.number()拿到,换成at固件反而没有接口了
本机号码就是读卡里电话本第一个号码,国内电话卡出厂都不写入的,根本读不到
请问esp32c刷这个固件,780e刷哪个呢
同问
大佬,为什么esp32和air780单独用能识别,但连在一起就识别不了
请问下如何设置两个通知发送通道同时推送通知呢?
你好大佬,可以用esp8266么。。家里有一堆esp8266,懒得再去买esp32了,谢谢!
不支持8266,也不支持esp32
我的是giffgaff卡, 程序卡在AT+CGATT? 结果一直为false,GPRS无法附着网络
我试着用AT+CPNETAPN=2,giffgaff.com,gg,p改了APN后可以成功附着网络,但是没法收到短信。
我看上面评论博主也是这个卡, 想请教一下是否有必要配置APN?
PS:上面的APN来自运营商官网https://www.giffgaff.com/help/articles/internet-apn-settings-guide
apn正常是自动获取的,我没配置就能用
好的谢谢。 我再研究研究哪里出了问题
giffgaff卡同样的问题,老哥找到方法了吗
我也用的giffgaff卡,完全正常
感谢你的配置解决了我的问题
大佬,是不是全程我只用把esp32插到电脑烧录固件和脚本,air780e是不用写入任何固件的对吗?
为啥我操作了两个版本固件,都是不断重复: I/user.air780 sent at AT
比如:
[2024-03-08 22:56:23.063] I/main LuatOS@ESP32C3 base 23.11 bsp V1006 32bit
[2024-03-08 22:56:23.063] I/main ROM Build: Jan 11 2024 10:59:24
[2024-03-08 22:56:23.068] I/fs script zone as luadb
[2024-03-08 22:56:23.095] D/main loadlibs luavm 114680 14672 14736
[2024-03-08 22:56:23.095] D/main loadlibs sys 155184 59184 59184
[2024-03-08 22:56:23.099] I/user.main sms_forwarding 1.0.0
[2024-03-08 22:56:23.143] E (597) task_wdt: esp_task_wdt_init(593): TWDT already initialized
[2024-03-08 22:56:23.191] I/user.air780 sync at
[2024-03-08 22:56:23.191] I/user.air780 sent at AT
[2024-03-08 22:56:23.395] I/user.air780 sent at AT
[2024-03-08 22:56:23.602] I/user.air780 sent at AT
[2024-03-08 22:56:23.808] I/user.air780 sent at AT
[2024-03-08 22:56:23.997] I/user.air780 sent at AT
[2024-03-08 22:56:24.251] D/wlan wifi event 2
[2024-03-08 22:56:24.251] I/user.wlan wait for IP_READY
[2024-03-08 22:56:24.251] D/wlan wifi station start
[2024-03-08 22:56:24.251] I/user.air780 sent at AT
[2024-03-08 22:56:24.314] D/wlan wifi event 4
[2024-03-08 22:56:24.314] D/wlan wifi connected!!!
[2024-03-08 22:56:24.458] I/user.air780 sent at AT
[2024-03-08 22:56:24.663] I/user.air780 sent at AT
[2024-03-08 22:56:24.853] I/user.air780 sent at AT
[2024-03-08 22:56:25.058] I/user.air780 sent at AT
[2024-03-08 22:56:25.264] I/user.air780 sent at AT
[2024-03-08 22:56:25.311] D/wlan ip event 0
[2024-03-08 22:56:25.311] D/net network ready
[2024-03-08 22:56:25.311] D/wlan sta_ip 192.168.1.19
[2024-03-08 22:56:25.311] gc1 44.71680
[2024-03-08 22:56:25.311] I/user.wlan ready !!
[2024-03-08 22:56:25.311] gc2 45.14355
[2024-03-08 22:56:25.311] I/user.notify wait for a new sms~
[2024-03-08 22:56:25.311] gc3 45.19727
然后接下来就一直都是重复 I/user.air780 sent at AT了,不会停止
请问这是为什么呀?
780没开机
排针没连上
780固件被刷成了非at固件
有个板子坏了
按顺序排查
你好,请问现在解决了吗?我也出现了这个问题
原来是我接错到UART0上了
780E到手需要刷固件吗?
出厂默认如果是AT固件就不用
现在价格有点懵,是我没有找对地方吗还是
合宙自营涨价了,不过你可以去别的tb店买
想问下,luatos固件有办法输入pin码吗?
或者通用一点,luatos固件有办法调底层at指令吗?
AT+CPIN=<pin>
小心锁卡就是了