合宙 Air302 模组应用中国移动 NB 卡 cmnbiot2 模板时,T3324 (activeTime) 不为 0 引起的休眠唤醒问题(对于模组想尽快进入低功耗休眠状态时的利用场景)
对于 PSM 的阐明 (尤其 T3324)
问题复现 : 当应用以下代码会呈现意料之外休眠和唤醒,导致无奈实现精准的休眠唤醒
PROJECT = "lowpower"
VERSION = "1.0.0"
_G.sys = require("sys")
sys.taskInit(function()
log.info("===========================", "pm", "lastReson", pm.lastReson())
while not nbiot.isReady() do sys.wait(100) end
log.info("--------------------------------------- begin")
pm.dtimerStart(0, 5 * 60 * 1000)
pm.request(pm.HIB)
if pm.check() then
log.info("pm", "it is ok to hib")
end
log.info("--------------------------------------- end")
end)
sys.run()
意外的唤醒:
luat.pm Go into Sleep2
luat.pm poweron: Wakup Sleep2 by RTC 255
初步解决 : 在代码中设置 TAU 为 0,
nbiot.setPSM(1, 86400, 0)
(模组设置基站核心网 T3324 工夫)
PROJECT = "lowpower"
VERSION = "1.0.0"
_G.sys = require("sys")
sys.taskInit(function()
nbiot.setPSM(1, 86400, 0) -- 留神这里!!log.info("===========================", "pm", "lastReson", pm.lastReson())
while not nbiot.isReady() do sys.wait(100) end
log.info("--------------------------------------- begin")
pm.dtimerStart(0, 5 * 60 * 1000)
pm.request(pm.HIB)
if pm.check() then
log.info("pm", "it is ok to hib")
else
log.info("pm", "force to hib")
pm.force(pm.HIB)
end
log.info("--------------------------------------- end")
end)
sys.run()
模组第一次上电或复位运行驻网,【可能会进入一次 `luat.pm Go into Sleep2`、`luat.pm poweron: Wakup Sleep2 by RTC 255`】之后再次进入 `luat.pm Go into Hib`,尔后模组才将依照唤醒工夫准时唤醒(模组首次驻网设置 T3324 未失效)
最终解决:SIM 卡管理平台设置 T3324 为 0 [Net 状态指示灯燃烧不再闪速]
应用第一次代码打印日志