99 lines
2.8 KiB
Lua
99 lines
2.8 KiB
Lua
PROJECT = "sms_forwarder_wifi"
|
||
VERSION = "1.0.0"
|
||
|
||
local sys = require("sys")
|
||
local config = require("config")
|
||
local constants = require("constants")
|
||
local air780 = require("air780_helper")
|
||
local led_helper = require("led_helper")
|
||
local utils = require("utils")
|
||
|
||
require("sysplus")
|
||
require("notification_helper")
|
||
|
||
if wdt then
|
||
wdt.init(9000)
|
||
sys.timerLoopStart(wdt.feed, 3000)
|
||
end
|
||
|
||
log.setLevel(config.log_level)
|
||
log.style(1)
|
||
|
||
log.info("bsp", rtos.bsp())
|
||
log.info("mem_sys", rtos.meminfo("sys"))
|
||
log.info("mem_lua", rtos.meminfo("lua"))
|
||
|
||
-- 每秒完整GC一次,防止内存不足问题
|
||
sys.timerLoopStart(function()
|
||
collectgarbage("collect")
|
||
end, 1000)
|
||
|
||
led_helper.blink_status_led(constants.led_blink_duration.initializing)
|
||
|
||
sys.taskInit(function()
|
||
local logging_tag = "main - 初始化网络"
|
||
log.info(logging_tag, "正在连接无线网络"..config.wifi.ssid)
|
||
wlan.init()
|
||
wlan.setMode(wlan.STATION)
|
||
wlan.connect(config.wifi["ssid"], config.wifi.password)
|
||
sys.waitUntil("IP_READY")
|
||
local ip_address = wlan.getIP()
|
||
log.info(logging_tag, "无线网络连接成功,IP地址:"..ip_address)
|
||
|
||
for index, value in ipairs(config.dns_servers) do
|
||
log.info(logging_tag, "配置第"..index.."个DNS服务器为"..value)
|
||
socket.setDNS(nil, index, value)
|
||
end
|
||
|
||
log.info(logging_tag, "等待时间同步")
|
||
sys.waitUntil("NTP_UPDATE")
|
||
log.info(logging_tag, "时间同步完成")
|
||
end)
|
||
|
||
sys.taskInit(function ()
|
||
local logging_tag = "main - 初始化Air780"
|
||
local at_command_result
|
||
|
||
|
||
if config.disable_netled then
|
||
log.info(logging_tag, "正在关闭NET灯闪烁")
|
||
air780.send_at_command("AT+CNETLIGHT=0")
|
||
end
|
||
|
||
log.info(logging_tag, "初始化完成,等待新短信...")
|
||
|
||
-- 测试短信推送,解除注释可开机时自动模拟推送一条,用于模块独立测试
|
||
-- sys.publish(
|
||
-- constants.air780_message_topic_new_notification_request,
|
||
-- '10086',
|
||
-- '测试短信内容')
|
||
|
||
led_helper.light_status_led()
|
||
end)
|
||
|
||
-- 收到新消息派发推送
|
||
sys.subscribe(constants.air780_message_topic_new_sms_received,
|
||
function(data)
|
||
led_helper.blink_working_led(constants.led_blink_duration.working)
|
||
sms_content = table.concat(data, "\n")
|
||
if sms_content then
|
||
log.info("main", "收到短信:"..sms_content)
|
||
sys.publish(
|
||
constants.air780_message_topic_new_notification_request,
|
||
sms_content)
|
||
led_helper.shut_working_led()
|
||
return
|
||
|
||
else
|
||
log.info("main", "收到来自"..phone_number.."的短信,即将转发...")
|
||
sys.publish(
|
||
constants.air780_message_topic_new_notification_request,
|
||
sms_content)
|
||
led_helper.shut_working_led()
|
||
return
|
||
end
|
||
end)
|
||
|
||
|
||
sys.run()
|