V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nirvanahh
V2EX  ›  分享发现

分享一个 AIR724(电信卡)利用 bark 短信转发的操作, AIR780E 或许也能直接用

  •  1
     
  •   nirvanahh · 2022-11-10 16:07:59 +08:00 · 3043 次点击
    这是一个创建于 773 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前些天跟风上车了 AIR780E ,到手发现不支持电信短信转发,再加上官方二次开发也没放出来(官网显示 11 月 13 号放出),直接吃灰,立马入了个 AIR724 (外接电源工业应用铁盒那种),724 支持电信 VoLTE 状态下的短信收发,最好选择带 USB 接口调试这种,方便固件和脚本的刷写。 参考了几位大佬的脚本,谢谢大佬们的示范,我做了点微不足道的复制粘贴工作

    使用 Air724ug 开发板进行短信转发 https://web.archive.org/web/20221026074816/https://blog.okwlan.com/article/air724ug.html

    使用 Air724UG 作为短信转发器 https://www.lotlab.org/2021/10/17/air724ug-sms-forwarder/

    air724UG + Luat 玩转物联网(一) 环境搭建及固件烧录 https://www.jianshu.com/p/1f7043fff6de

    准备工作:

    1 、724 模块+天线+电源+数据线+驱动+luatoolsV2 调试软件 2 、电信卡(带流量,利用自身流量转发到 bark ) 3 、已部署好的 bark 服务器地址

    实际操作( WIN7 驱动支持不好,工具显示不正常,建议 WIN10 操作):

    1 、装好驱动打开 luatools 对模块进行刷机 选择 luatools\resource\8910_lua_lod\core_V4018\LuatOS-Air_V4018_RDA8910_TTS_NOLVGL_FLOAT.pac 进行下载,重启后进行下一步

    2 、烧写脚本 进入项目管理测试里新建一个项目名称( SMS 之类的) 底层 core 选择 luatools\resource\8910_lua_lod\core_V4018\LuatOS-Air_V4018_RDA8910_TTS_NOLVGL_FLOAT.pac 脚本文件选择 luatools\resource\8910_script\script_LuaTask_V2.4.3\demo\sms 下面的 main.lua 和 testSms.lua 并对 testSms.lua 脚本文件做以下编辑,并把第三行的 BARK_URL 替换成自己的:

    PROJECT = "SMS_Forwarder"

    VERSION = "1.0.0"

    BARK_URL = "http://XXX.XXX.XXX.XXX:8080/ABCDEFGHIJK/" -- 替换成自己的 bark 推送地址

    require "sys"

    require "http"

    require "sms"

    require "common"

    require "cc"

    require "audio"

    require "net"

    -- HTTP 回调,显示调试信息用 function httpCallback(result, prompt, head, body) if result then print("HTTP", prompt, body) else print("HTTP Request Failed. ", prompt) end end

    -- 将消息发送到你的平台 function notifyToBark(msg) http.request( "GET", -- BARK_URL..string.urlEncode(msg), BARK_URL..string.rawurlEncode(msg), -- 对内容中文进行编码 nil, -- 不指定证书 nil, nil, 30000, -- 发送超时,ms httpCallback, -- 回调 nil ) end

    --[[ num:短信号码,ASCII 码字符串格式 data:短信内容,字符串格式 datetime:短信日期和时间,ASCII 码字符串格式 ]]

    function smsCallback(num, data, datetime) print("SMS FROM ", num, " IN ", datetime) print(data)

    data = common.gb2312ToUtf8(data) -- 短信编码要转换为目标平台支持的 UTF-8
    data = string.gsub(data, "*", "\\*") -- Telegram 特殊字符转义
    data = string.gsub(data, "_", "\\_") -- Telegram 特殊字符转义
    notifyToBark(num.." ("..datetime.."):\r\n"..data)
    

    end

    call_in = false

    -- 电话拨入回调,在这里发送通知并接通电话 function call_incoming(num) print("CALL FROM ", num) if not call_in then call_in = true notifyToBark(num.." 给您来电") cc.accept(num) end end

    -- 电话接通回调,这里播放 TTS 通知对方 function call_connected(num) print("CALL CONNECTED") call_in = false --通话中向对方播放 TTS audio.play(7,"TTS","您好,机主无法接听您的来电,请使用短信联系机主。",7,nil,true,2000) --30 秒之后主动结束通话 sys.timerStart(cc.hangUp,30000,num) end

    -- 电话挂断回调,停止 TTS function call_disconnected(discReason) print("CALL DISCONNECTED") call_in = false sys.timerStopAll(cc.hangUp) audio.stop() end

    -- 定时任务:每天发送短信到 10001 查询流量 sys.timerLoopStart( function() sms.send("10001", "108", nil, nil) end , 246060*1000 )

    --加载网络指示灯和 LTE 指示灯功能模块 --根据自己的项目需求和硬件配置决定:1 、是否加载此功能模块; 2 、配置指示灯引脚 --合宙官方出售的 Air720U 开发板上的网络指示灯引脚为 pio.P0_1 ,LTE 指示灯引脚为 pio.P0_4 require "netLed" pmd.ldoset(2,pmd.LDO_VLCD) netLed.setup(true,pio.P0_1,pio.P0_4)

    --设置短信回调 sms.setNewSmsCb(smsCallback)

    --禁用 RNDIS ,防止跑流量 ril.request("AT+RNDISCALL=0,1")

    --注册电话回调 sys.subscribe("CALL_INCOMING", call_incoming) sys.subscribe("CALL_CONNECTED", call_connected) sys.subscribe("CALL_DISCONNECTED", call_disconnected)

    --每 1 分钟查询一次 GSM 信号强度 --每 1 分钟查询一次基站信息 net.startQueryAll(60000, 60000)

    -- 系统初始化 sys.init(0, 0) sys.run()

    勾选 usb 打印 trace 、添加默认 lib 、升级文件包含脚本 选择下载脚本,7-8S 和显示成功,会自动重启,等个半分钟左右就可以发短信和打电话测试了

    6 条回复    2022-11-11 13:04:04 +08:00
    nirvanahh
        1
    nirvanahh  
    OP
       2022-11-10 16:17:13 +08:00
    代码贴出来段七八糟的,搞不懂了,有需要的密我发脚本
    lucifer9
        2
    lucifer9  
       2022-11-10 16:38:36 +08:00
    724 支持 VoLTE ,那它接打电话,语音是能通过程序处理吗?还是必须接 Mic 和 Speaker
    nirvanahh
        3
    nirvanahh  
    OP
       2022-11-10 17:39:31 +08:00
    @lucifer9 我只需要实现短信转发功能,其它的我不太会;这个脚本利用了固件 TTS 文字转语音功能,直接打电话会播报语音,内容和代码里的中文一样。
    EngAPI
        4
    EngAPI  
       2022-11-10 19:35:36 +08:00
    我全电信卡,看来买的 9.9 是吃灰了
    FanError
        5
    FanError  
       2022-11-10 19:49:13 +08:00
    楼主的代码支持双卡吗?前段时间也在看这开发板。
    fenghuang
        6
    fenghuang  
       2022-11-11 13:04:04 +08:00 via Android
    724 和 780 价格差不少呢,最便宜也要 50+
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:23 · PVG 09:23 · LAX 17:23 · JFK 20:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.