本申请涉及物联网终端模组sdk技术领域,尤其涉及一种终端lwm2m会话心跳方法、系统和存储介质。
背景技术:
现有的nb终端与iot平台通过lwm2m会话连接,每个lwm2m会话都有生存期,在lwm2m会话的生存期结束后,nb终端必须发送特定lwm2m会话心跳报文延续lwm2m会话,否则lwm2m会话被关闭。由于lwm2m会话心跳会增加nb终端的苏醒次数,增加了nb终端的能耗。
技术实现要素:
有鉴于此,本申请的目的是提供终端lwm2m会话心跳方法、系统和存储介质,以降低nb终端的能耗。
本申请所采用的第一技术方案是:
一种终端lwm2m会话心跳方法,包括:
设置会话定时器,所述终端在会话定时器计时结束后向平台发送lwm2m会话心跳报文;
确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
获取所述会话定时器的剩余时间;
确定所述会话定时器的剩余时间小于等于所述心跳标值,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器;
其中,所述运行阶段包括苏醒阶段、准备休眠阶段和休眠阶段。
进一步,所述主动苏醒发送报文时间间隔的更新方法为:
确定所述终端在最近一次苏醒阶段主动发送上行报文,获取第一上行报文时间和第二上行报文时间,所述第一上行报文时间为最近一次苏醒阶段第一条上行报文发送的时间,所述第二上行报文时间为最近一次苏醒阶段的上一次苏醒阶段的第一条上行报文时间;
将所述第一上行报文时间减去所述第二上行报文时间,得到第一时长;
获取第二时长,所述第二时长为上一次计算得到的主动苏醒发送报文时间间隔;
根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔。
进一步,所述根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔这一步骤,包括:
将所述第一时长和所述第二时长相加得到总时长;
计算所述第一时长在总时长中的第一权重,计算所述第二时长在总时长中的第二权重;
将所述第一时长乘以所述第一权重得到第一权重时长;
将所述第二时长乘以所述第二权重得到第二权重时长;
将所述第一权重时长和所述第二权重时长相加得到主动苏醒发送报文时间间隔。
进一步,所述终端lwm2m会话心跳方法还包括:
确定所述会话定时器到期,根据所述第一时长、所述第二时长和校正因子计算主动苏醒发送报文时间间隔,所述校正因子用于提高所述第一时长在主动苏醒发送报文时间间隔计算中所占比例。
进一步,所述的终端lwm2m会话心跳方法,还包括:
获取所述lwm2m会话的生存期;
确定所述会话定时器的剩余时间小于等于所述lwm2m会话的生存期和第一阈值的乘积,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器。
本申请所采用的第二技术方案是:
一种终端lwm2m会话心跳系统,包括:
定时模块,用于设置会话定时器,所述会话定时器用于在计时结束后控制所述终端向平台发送lwm2m会话心跳报文;
更新模块,用于确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
标值模块,用于将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
获取模块,用于获取所述会话定时器的剩余时间;
心跳模块,根据所述会话定时器的剩余时间、所述心跳标值和所述lwm2m会话的生存期,对所述lwm2m会话进行心跳处理。
进一步,所述主动苏醒发送报文时间间隔的更新方法为:
确定所述终端在最近一次苏醒阶段主动发送上行报文,获取第一上行报文时间和第二上行报文时间,所述第一上行报文时间为最近一次苏醒阶段第一条上行报文发送的时间,所述第二上行报文时间为最近一次苏醒阶段的上一次苏醒阶段的第一条上行报文时间;
将所述第一上行报文时间减去所述第二上行报文时间,得到第一时长;
获取第二时长,所述第二时长为上一次计算得到的主动苏醒发送报文时间间隔;
根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔。
进一步,所述根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔,包括:
将所述第一时长和所述第二时长相加得到总时长;
计算所述第一时长在总时长中的第一权重,计算所述第二时长在总时长中的第二权重;
将所述第一时长乘以所述第一权重得到第一权重时长;
将所述第二时长乘以所述第二权重得到第二权重时长;
将所述第一权重时长和所述第二权重时长相加得到主动苏醒发送报文时间间隔。
本申请所采用的第三技术方案是:
一种终端lwm2m会话心跳系统,包括:
存储器,用于存储程序;
处理器,用于加载所述程序以执行所述的终端lwm2m会话心跳方法。
本申请所采用的第四技术方案是:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的终端lwm2m会话心跳方法。
本申请实施例在终端的准备休眠阶段会计算终端的主动苏醒发送报文时间间隔和跟踪区更新时间间隔,并将两者中的较小值作为心跳标值,在确定会话定时器的剩余时间小于等于心跳标值后,会控制终端向平台发送lwm2m会话心跳报文并重置会话定时器,从而减少了在终端休眠过程中由于会话定时器计时结束引起的终端休眠终止,降低了终端的能耗。
附图说明
图1为本申请实施例一种终端lwm2m会话心跳方法的流程图。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。
下面结合附图和具体实施例对本申请做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。此外,对于以下实施例中所述的若干个,其表示为至少一个。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本申请的实施例,并且除非另外要求,否则不会对本申请的范围施加限制。
nb-iot是iot领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网。nb-iot支持待机时间长、对网络连接要求较高设备的高效连接。在低功耗广域网中,nb终端需要与iot平台进行通讯,通讯可以使用lwm2m进行会话连接,lwm2m是轻量级m2m,由开发移动联盟提出,是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务。lwm2m会话心跳报文是nb终端向iot平台发送的证明nb终端在线的凭证。每个lwm2m会话都有生存期,在lwm2m会话的生存期结束后,nb终端必须发送特定lwm2m会话心跳报文延续lwm2m会话,否则lwm2m会话被关闭。因此,如果要保持nb终端和iot平台的通讯,nb终端需要定期向iot平台发送lwm2m会话心跳报文,而发送lwm2m会话心跳报文需要nb终端处于苏醒状态,因此维持lwm2m会话延长了nb终端的苏醒时间和苏醒次数,增加了nb终端的能耗。
本申请实施例提供了一种终端lwm2m会话心跳方法,参照图1,包括:
s100、设置会话定时器,所述终端在会话定时器计时结束后向平台发送lwm2m会话心跳报文;
s200、确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
s300、将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
s400、获取所述会话定时器的剩余时间;
s500、确定所述会话定时器的剩余时间小于等于所述心跳标值,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器;
一般而言,nb终端的运行阶段包括苏醒阶段、准备休眠阶段和休眠阶段,终端会不断循环三种阶段,苏醒阶段为终端的活动阶段;准备休眠阶段为终端从苏醒阶段到休眠阶段的过渡阶段;休眠阶段为终端的低能耗阶段,通过进入休眠阶段可以大大降低终端的能耗。当nb终端处于psm模式下,其在跟踪区需要更新或者终端需要上行报文的情况下会被唤醒,若使得终端的lwm2m会话心跳与跟踪区更新和上行报文中的至少一者同步,即可减少终端因为lwm2m会话心跳而苏醒的次数,降低终端的能耗。
因此,可以选择在终端的准备休眠阶段,获取终端的主动苏醒发送报文时间间隔和跟踪区更新时间间隔,在得到终端的主动苏醒发送报文时间间隔和跟踪区更新时间间隔之后,可以选取终端的主动苏醒发送报文时间间隔和跟踪区更新时间间隔中的较小值作为心跳标值。由于终端的主动苏醒发送报文时间间隔和跟踪区更新时间间隔中的较小值即为最接近的下次终端苏醒时间,因此心跳标值即为终端下次苏醒的时间间隔。在终端中设置有会话定时器,会话定时器用于对lwm2m会话的生存期进行计时,在会话定时器的剩余时间小于心跳标值的情况下,说明下一次的lwm2m会话心跳处于终端的休眠阶段,可以将lwm2m会话心跳时间提前,并重置lwm2m会话心跳的会话定时器,从而避免会话定时器在下一次终端苏醒前到期,将会话定时器的更新的节奏与上行报文发送的节奏或跟踪区更新的节奏同步。
由于主动苏醒发送报文时间间隔是一个统计值,用于统计两次上行报文中间的时间间隔,因此需要通过不断获取最新的主动苏醒发送报文时间间隔来计算更新主动苏醒发送报文时间间隔。
在一些实施例中,根据终端最近一次上行报文的时间间隔和上一次主动苏醒发送报文时间间隔来更新主动苏醒发送报文时间间隔。基于该计算方法,由于需要最近一次上行报文的时间间隔来对主动苏醒发送报文时间间隔进行更新,因此上行报文更新的触发条件为终端在本次苏醒阶段主动上行报文。上行报文更新的公式如下:
其中,wkiavg(now)为更新后的主动苏醒发送报文时间间隔,wkiavg(last)为第二时长,即上一次统计得到的主动苏醒发送报文时间间隔,sendst(now)为第一上行报文时间,即本次报文发送的时间,sendst(last)为第二上行报文时间,即上一次报文发送的时间,sendst(now)-sendst(last)即可获得第一时长,即本次计算得到的主动苏醒发送报文时间间隔,通过上一次统计得到的主动苏醒发送报文时间间隔和本次计算得到的主动苏醒发送报文时间间隔,可以得到下一次报文发送时间间隔的预测值,即更新后的主动苏醒发送报文时间间隔。第一上行报文时间是本次苏醒阶段的第一条上行报文发送的时间,由于上行报文可能大于一条,取第一条的发送时间用于计算终端的主动苏醒发送报文时间间隔更为准确。第二上行报文时间是除了本次苏醒阶段以外最近一次主动发送上行报文的苏醒阶段的第一条上行报文发送的时间。
由于主动苏醒发送报文时间间隔一开始默认设置为0,即以0为初始值,如果采用上述方法进行主动苏醒发送报文时间间隔的更新,第一次得到的主动苏醒发送报文时间间隔为接近一半的主动苏醒发送报文时间间隔,后续通过不断地迭代才能逐渐减少由于初始值导致地主动苏醒发送报文时间间隔的误差。
在一些实施例中,为了减少初始值误差对于主动苏醒发送报文时间间隔的影响,在计算第一时长和第二时长的平均值的时候,即计算上一次统计得到的主动苏醒发送报文时间间隔和本次计算得到的主动苏醒发送报文时间间隔的平均值的时候,会根据第一时长和第二时长的大小计算权重,对第一时长和第二时长进行加权平均得到更新后的主动苏醒发送报文时间间隔,具体计算如下:
wkiavg(now)=α×wkiavg(last) β×(sendst(now)-sendst(last))
其中,第一时长加上第二时长可以得到总时长,α为第一权重,即第一时长在总时长中占的权重,β为第二权重,即第二时长在总时长中占的权重。
主动苏醒发送报文时间间隔一开始默认设置为0,通过权重计算的方法可以使得主动苏醒发送报文时间间隔在第一个周期便达到理想值附近,而使用等比例平均值的计算方法则要使用多个周期才能达到理想值附近。
由于更新后的主动苏醒发送报文时间间隔是基于第一时长和第二时长进行计算的,而第一时长反映的是一个在前的统计时间间隔,第二时长反映的是最近计算得到的时间间隔,在终端改变上行报文发送策略之后,该计算方法并不能很好地跟踪新的上行报文发送策略。
因此在一些实施例中,当终端被会话定时器唤醒时,不仅要上行心跳报文,同时需要对主动苏醒发送报文时间间隔进行校正,校正公式如下:
wkiavg(now)=wkiavg(last) (sendst(now)-sendst(last))×(1 10%)
其中,wkiavg(now)为更新后的主动苏醒发送报文时间间隔,wkiavg(last)为最新一次的主动苏醒发送报文时间间隔,sendst(now)为当前时间,即本次报文发送的时间,sendst(last)为第二上行报文时间。在校正公式中加入了校正因子10%,可以使得主动苏醒发送报文时间间隔更快更新以适应新的上行报文发送策略。
同时为了减少lwm2m会话心跳唤醒终端的概率,在一些实施例中,会设定一个lwm2m会话心跳条件,在确定会话定时器的剩余时间,即lwm2m会话的剩余时间小于lwm2m会话生存期乘以第一阈值的乘积,就发送lwm2m会话心跳并重置会话定时器。例如取第一阈值为10%,当确定lwm2m会话的剩余生存期小于lwm2m会话的总生存期的10%,就lwm2m会话心跳并重置会话定时器。通过设置一个阈值进行判断,可以减少lwm2m会话心跳唤醒终端的概率。
本申请实施例还提供了一种终端lwm2m会话心跳系统,包括:
定时模块,用于设置会话定时器,所述会话定时器用于在计时结束后控制所述终端向平台发送lwm2m会话心跳报文;
更新模块,用于确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
标值模块,用于将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
获取模块,用于获取所述会话定时器的剩余时间;
心跳模块,根据所述会话定时器的剩余时间、所述心跳标值和所述lwm2m会话的生存期,对所述lwm2m会话进行心跳处理。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
应当认识到,本申请的实施例系统中所包含的层、模块、单元和/或平台等可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,本申请实施例系统中所包含的层、模块、单元和/或平台所对应执行的数据处理流程,其可按任何合适的顺序来执行,除非本文另外指示或以其他方式明显地与上下文矛盾。本申请实施例系统中所包含的层、模块、单元和/或平台所对应执行的数据处理流程可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
本申请实施例还提供了一种终端lwm2m会话心跳系统,包括:
存储器,用于存储程序;
处理器,用于加载所述程序以执行上述的终端lwm2m会话心跳方法。
所述系统可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请系统中所包含的层、模块、单元和/或平台所对应执行的数据处理流程可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
此外,本申请实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行上述方法实施例中任一个技术方案所述的一种交互信息处理方法步骤。对于所述存储介质,其可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。可见,上述方法实施例中的内容均适用于本存储介质实施例中,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
以上所述,只是本申请的较佳实施例而已,本申请并不局限于上述实施方式,只要其以相同的手段达到本申请的技术效果,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。在本申请的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
1.一种终端lwm2m会话心跳方法,其特征在于,包括:
设置会话定时器,所述终端在会话定时器计时结束后向平台发送lwm2m会话心跳报文;
确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
获取所述会话定时器的剩余时间;
确定所述会话定时器的剩余时间小于等于所述心跳标值,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器;
其中,所述运行阶段包括苏醒阶段、准备休眠阶段和休眠阶段。
2.根据权利要求1所述的终端lwm2m会话心跳方法,其特征在于,所述主动苏醒发送报文时间间隔的更新方法为:
确定所述终端在最近一次苏醒阶段主动发送上行报文,获取第一上行报文时间和第二上行报文时间,所述第一上行报文时间为最近一次苏醒阶段第一条上行报文发送的时间,所述第二上行报文时间为最近一次苏醒阶段的上一次苏醒阶段的第一条上行报文时间;
将所述第一上行报文时间减去所述第二上行报文时间,得到第一时长;
获取第二时长,所述第二时长为上一次计算得到的主动苏醒发送报文时间间隔;
根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔。
3.根据权利要求2所述的终端lwm2m会话心跳方法,其特征在于,所述根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔这一步骤,包括:
将所述第一时长和所述第二时长相加得到总时长;
计算所述第一时长在总时长中的第一权重,计算所述第二时长在总时长中的第二权重;
将所述第一时长乘以所述第一权重得到第一权重时长;
将所述第二时长乘以所述第二权重得到第二权重时长;
将所述第一权重时长和所述第二权重时长相加得到主动苏醒发送报文时间间隔。
4.根据权利要求2所述的终端lwm2m会话心跳方法,其特征在于,所述终端lwm2m会话心跳方法还包括:
确定所述会话定时器到期,根据所述第一时长、所述第二时长和校正因子计算主动苏醒发送报文时间间隔,所述校正因子用于提高所述第一时长在主动苏醒发送报文时间间隔计算中所占比例。
5.根据权利要求1所述的终端lwm2m会话心跳方法,其特征在于,所述的终端lwm2m会话心跳方法,还包括:
获取所述lwm2m会话的生存期;
确定所述会话定时器的剩余时间小于等于所述lwm2m会话的生存期和第一阈值的乘积,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器。
6.一种终端lwm2m会话心跳系统,其特征在于,包括:
定时模块,用于设置会话定时器,所述会话定时器用于在计时结束后控制所述终端向平台发送lwm2m会话心跳报文;
更新模块,用于确定所述终端的运行阶段为准备休眠阶段,更新所述终端的主动苏醒发送报文时间间隔并获取所述终端的跟踪区更新时间间隔;
标值模块,用于将所述主动苏醒发送报文时间间隔和所述跟踪区更新时间间隔中较小的一个作为所述终端的心跳标值;
获取模块,用于获取所述会话定时器的剩余时间;
心跳模块,用于确定所述会话定时器的剩余时间小于等于所述心跳标值,向所述平台发送lwm2m会话心跳报文并重置所述会话定时器。
7.根据权利要求6所述的一种终端lwm2m会话心跳系统,其特征在于,所述主动苏醒发送报文时间间隔的更新方法为:
确定所述终端在最近一次苏醒阶段主动发送上行报文,获取第一上行报文时间和第二上行报文时间,所述第一上行报文时间为最近一次苏醒阶段第一条上行报文发送的时间,所述第二上行报文时间为最近一次苏醒阶段的上一次苏醒阶段的第一条上行报文时间;
将所述第一上行报文时间减去所述第二上行报文时间,得到第一时长;
获取第二时长,所述第二时长为上一次计算得到的主动苏醒发送报文时间间隔;
根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔。
8.根据权利要求7所述的一种终端lwm2m会话心跳系统,其特征在于,所述根据所述第一时长和所述第二时长,计算主动苏醒发送报文时间间隔,包括:
将所述第一时长和所述第二时长相加得到总时长;
计算所述第一时长在总时长中的第一权重,计算所述第二时长在总时长中的第二权重;
将所述第一时长乘以所述第一权重得到第一权重时长;
将所述第二时长乘以所述第二权重得到第二权重时长;
将所述第一权重时长和所述第二权重时长相加得到主动苏醒发送报文时间间隔。
9.一种终端lwm2m会话心跳系统,其特征在于,包括:
存储器,用于存储程序;
处理器,用于加载所述程序以执行如权利要求1-5任一项所述的终端lwm2m会话心跳方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的终端lwm2m会话心跳方法。
技术总结