123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- PROJECT = "air780e_forwarder"
- VERSION = "1.0.0"
- log.setLevel("DEBUG")
- log.info("main", PROJECT, VERSION)
- sys = require "sys"
- sysplus = require "sysplus"
- require "sysplus"
- -- 添加硬狗防止程序卡死, 在支持的设备上启用这个功能
- if wdt then
- -- 初始化 watchdog 设置为 9s
- wdt.init(9000)
- -- 3s 喂一次狗
- sys.timerLoopStart(wdt.feed, 3000)
- end
- -- 设置 DNS
- socket.setDNS(nil, 1, "119.29.29.29")
- socket.setDNS(nil, 2, "223.5.5.5")
- -- 设置 SIM 自动恢复, 搜索小区信息间隔, 最大搜索时间
- mobile.setAuto(1000 * 10, 1000 * 60, 1000 * 5)
- -- POWERKEY
- local powerkey_timer = 0
- gpio.setup(
- 35,
- function()
- local powerkey_state = gpio.get(35)
- if powerkey_state == 0 then
- powerkey_timer = os.time()
- else
- if powerkey_timer == 0 then
- return
- end
- local time = os.time() - powerkey_timer
- if time >= 2 then
- log.info("POWERKEY_LONG_PRESS", time)
- sys.publish("POWERKEY_LONG_PRESS")
- else
- log.info("POWERKEY_SHORT_PRESS", time)
- sys.publish("POWERKEY_SHORT_PRESS")
- end
- powerkey_timer = 0
- end
- end,
- gpio.PULLUP,
- gpio.FALLING
- )
- config = require "config"
- util_netled = require "util_netled"
- util_mobile = require "util_mobile"
- util_location = require "util_location"
- util_notify = require "util_notify"
- -- 短信回调
- sms.setNewSmsCb(
- function(num, txt, metas)
- log.info("smsCallback", num, txt, metas and json.encode(metas) or "")
- util_netled.blink(200, 200, 1000)
- util_notify.send({txt, "", "发件人号码: " .. num, "#SMS"})
- end
- )
- sys.taskInit(
- function()
- -- 等待网络环境准备就绪
- sys.waitUntil("IP_READY")
- util_netled.blink(200, 200, 5000)
- -- 开机基站定位
- util_location.getCoord(
- function()
- log.info("publish", "COORD_INIT_DONE")
- sys.publish("COORD_INIT_DONE")
- end
- )
- sys.waitUntil("COORD_INIT_DONE", 1000 * 20)
- -- 开机通知
- util_notify.send("#BOOT")
- -- 定时查询流量
- if config.QUERY_TRAFFIC_INTERVAL and config.QUERY_TRAFFIC_INTERVAL >= 1000 * 60 then
- sys.timerLoopStart(util_mobile.queryTraffic, config.QUERY_TRAFFIC_INTERVAL)
- end
- -- 定时基站定位
- if config.LOCATION_INTERVAL and config.LOCATION_INTERVAL >= 1000 * 10 then
- sys.timerLoopStart(util_location.getCoord, config.LOCATION_INTERVAL)
- end
- -- 电源键短按发送测试通知
- sys.subscribe(
- "POWERKEY_SHORT_PRESS",
- function()
- util_notify.send("#ALIVE")
- end
- )
- -- 电源键长按查询流量
- sys.subscribe("POWERKEY_LONG_PRESS", util_mobile.queryTraffic)
- end
- )
- sys.run()
|