背景说明
Wi-Fi 门锁为了省电,不工作时会断开 Wi-Fi 模块的电源。因此,当你在 App 上创建临时密码时,密码无法直接发送到门锁,而是暂时保存在服务器上,等待门锁下一次主动联网时“拉取”。
推荐的临时密码处理逻辑
首先,临时密码需要存在MCU中,并包含有效次数以及起止时间,失效后要自动删除,支持多组。当用户尝试开锁时,门锁通电后,不直接拉取临时密码。临时密码为7位,满足这个逻辑后,门锁MCU识别为临时密码,门锁会首先和本地临时密码库进行校对,验证通过就开门,然后模块通电并上报开门记录,再拉取一次最新临时密码,然后断电。如果本地验证不通过,则MCU需要通知模块先拉取一边服务器临时密码,再做校验,通过的话开门,并上报开门记录,失败则验证不通过,不上报。另外,增加输入动态密码解锁成功后,本地临时密码库清空的逻辑,以应对特殊情况门锁断网后,临时密码无法删除的情况。
特殊情况说明
门锁的开锁逻辑是先进行本地密码校验,之后再从服务器同步临时密码。因此可能出现以下情况:
你在 App 中删除了一个尚未到期的临时密码,但此时门锁还未联网同步这条删除指令。
在删除操作之后的第一次开锁,门锁仍会使用本地保存的旧密码进行校验,并成功开门。
这次开锁完成后,门锁才会联网拉取最新的密码状态,从而真正删除该临时密码。
为什么这样设计?
如果每次开锁都强制先联网拉取临时密码,会显著增加开锁等待时间,同时加大门锁的耗电量。采用“先本地校验、后同步”的方式,是在保证安全的前提下,对用户体验和续航的合理优化。