远距离低功耗网络中终端节点离线的检测方法及装置与流程

文档序号:12908297阅读:361来源:国知局
远距离低功耗网络中终端节点离线的检测方法及装置与流程

本发明涉及通信技术领域。更具体地说,本发明涉及一种远距离低功耗网络中终端节点离线的检测方法及装置。



背景技术:

远距离低功耗网络(英文简称:lpwan,英文全称:lowpowerwideareanetwork)是一种新型的组网的技术,远距离低功耗网络至少包括终端节点和网格两个部分,其中,终端节点用于遵守lpwan协议规范,实现点对点远距离传输。网关:负责接收终端节点的上行链路数据,然后将数据聚集到一个各自单独的回程连接,解决多路数据并发问题,实现数据收集和转发。终端节点采用单跳与一个或多个网关通信,所有的终端节点均是双向通信。

远距离低功耗网络具有以下几个方面的特点:

距离:常见的近距离无线通信技术,如wi-fi、蓝牙等,通信距离一般几十米。而远距离低功耗网络的通信距离可达几公里,甚至几十公里。

数据传输速率:电脑、手机上网浏览网页、视频等应用需求追求的是高数据速率,速度越快越好。而另一方面,远距离低功耗网络,通讯频次低,传输的数据量也非常少,如抄表等。

功耗:高数据速率带来的是高功耗,需要有充足的电源供应。而远距离低功耗网络的数据速率低,终端节点仅需要少量的电能就可以维持工作,这样就可以使用电池供电或其他的能量收集的方式供电,这有助于在一定范围内使终端节点可以大规模地接入网络。

正是由于上述远距离、低功耗的特性导致终端节点与网关之间无法建立起长连接,而导致终端节点由于终端节点通信讯号丢失、电池耗尽等原因时,无法及时告知网关,导致离线信息延迟,造成了不必要损失。

现有的远距离低功耗网络中终端节点离线的检测方法包括:

1、多线程监控法,对远距离低功耗网络中的每个终端节点创建一条任务线程,以监控该终端节点是否离线,本方法的弊端在于,当远距离低功耗网络中的终端节点数量超过一定数量时,相应的线程的数量就超出了一般计算机的信息处理能力,进而导致计算机宕机,而为了适应不断增加的终端节点数量,运营商就必须将无法承受负荷的计算机更换处理能力更强的计算机,增加了运营商的成本。

2、轮训法,遍历远距离低功耗网络中的每个终端节点,检测终端节点是否离线,本方法的弊端在于,随着远距离低功耗网络中的终端节点数量的增多,必然导致遍历一次的时间增大,对单个终端节点而言,就存在检测不及时的问题。



技术实现要素:

本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。

本发明还有一个目的是提供一种远距离低功耗网络中终端节点离线的检测方法及装置,以克服需要对每个终端节点设置对应的线程,带来的增加运营商成本的问题,以及遍历所有终端节点带来的两次检测时间过长的问题。

为了实现根据本发明的这些目的和其它优点,根据本发明的一个方面,提供一种远距离低功耗网络中终端节点离线的检测方法,包括:

s1、确定各终端节点的下一次传输数据的预定时间,对任意一个终端节点,将该终端节点的下一次传输数据的预定时间存入第一数据库表;

s2、确定本次检索时间,根据所述本次检索时间检索所述第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点。

优选地,所述步骤s1中确定各终端节点的下一次传输数据的时间的步骤,包括:

设置各终端节点的唯一标识,确定各终端节点的传输数据的周期;

对任意一个终端节点,根据该终端节点的上一次传输数据的时间以及所述传输数据的周期,确定该终端节点的下一次传输数据的预定时间。

优选地,所述确定本次检索时间的步骤包括:

确定检索周期;

根据上一次检索时间以及所述检索周期,获得所述本次检索时间。

优选地,所述根据所述本次检索时间检索所述第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点的步骤,包括:

比较所述本次检索时间与所述第一数据库表中各终端节点的下一次传输数据的预定时间;

将下一次传输数据的预定时间早于所述本次搜索时间的终端节点,作为所述离线的终端节点。

优选地,所述将该终端节点的下一次传输数据的时间存入第一数据库表的步骤,包括:

创建第一数据库表,在所述第一数据库表中添加第一字段和第二字段;

在所述第一字段中添加该终端节点的唯一标识;

在所述第二字段中更新该终端节点的下一次传输数据的预定时间。

优选地,

所述在所述第二字段中更新该终端节点的下一次传输数据的预定时间的步骤,包括:

将该终端节点的下一次传输数据的预定时间转换为第一字符串;

在所述第二字段中更新所述第一字符串;

所述根据所述本次检索时间检索所述第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点的步骤,包括:

将所述本次检索时间转换为第二字符串;

比较所述第一字符串与第二字符串的大小,将小于所述第二字符串的第一字符串对于的终端节点作为所述离线的终端节点。

优选地,所述确定各终端节点的传输数据的周期步骤,之后还包括:

创建第二数据库表,在所述第二数据库表中添加第三字段和第四字段;

在所述第三字段中添加各终端节点的唯一标识,在所述第四字段中添加各终端节点的传输数据的周期。

优选地,根据该终端节点的上一次传输数据的时间以及所述传输数据的周期,确定该终端节点的下一次传输数据的预定时间的步骤,之前还包括:

根据该终端节点发送的数据的时间戳,获得该终端节点的上一次传输数据的时间;

根据该终端节点的唯一标识,查询所述第二数据库表,在所述第二数据库表中获得该终端节点的传输数据的周期。

优选地,在所述第二数据库表中添加第五字段,根据所述终端节点是否离线,在所述第三字段中更新所述终端节点的在线/离线状态。

根据本发明的另一个方面,还提供一种远距离低功耗网络中终端节点离线的检测装置,包括:

预定时间获取模块,用于确定各终端节点的下一次传输数据的预定时间,对任意一个终端节点,将该终端节点的下一次传输数据的预定时间存入第一数据库表;

离线确定模块,用于确定本次检索时间,根据所述本次检索时间检索所述第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点。

本发明至少包括以下有益效果:

1.可动态调整实时性级别,可支持分钟级别、秒级、毫秒级等别;

2.任意一个终端节点之间的报警周期可独立进行配置,互相之间不影响;

3.消耗资源少,检测只需启动1个线程;

4.支持持久化,实施成本低,可基于目前主流关系数据库(例如mysql、oracle等开源或商业数据库)。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

图1为本发明实施例的远距离低功耗网络中终端节点离线的检测方法的流程示意图;

图2为本发明实施例的远距离低功耗网络中终端节点离线的检测装置的结构框图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

需要说明的是,下述实施方案中所述实验方法,如无特殊说明,均为常规方法,所述试剂和材料,如无特殊说明,均可从商业途径获得;在本发明的描述中,术语“横向”、“纵向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

本发明实施例涉及以下定义:

数据库表是数据库中一个非常重要的对象,是其他对象的基础。根据信息的分类情况,一个数据库中可能包含若干个数据库表。没有数据库表,关键字、主键、索引等也就无从谈起。在数据库画板中可以显示数据库中的所有数据库表(即使不是用powerbuilder创建的表),创建数据库表,修改表的定义等数据库表是数据库中一个非常重要的对象,是其他对象的基础。数据库表(或称表)是数据库最重要的组成部分之一。数据库只是一个框架,数据库表才是其实质内容。

主键(primarykey):表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键(pk),用于强制表的实体完整性。

业务主键(自然主键):在数据库表中把具有业务逻辑含义的字段作为主键,称为“自然主键(naturalkey)”。

逻辑主键(代理主键):在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,称为“代理主键”。

复合主键(联合主键):通过两个或者多个字段的组合作为主键。

现有的远距离低功耗网络中终端节点离线的检测方法包括:

1、多线程监控法,对远距离低功耗网络中的每个终端节点创建一条任务线程,以监控该终端节点是否离线,本方法的弊端在于,当远距离低功耗网络中的终端节点数量超过一定数量时,相应的线程的数量就超出了一般计算机的信息处理能力,进而导致计算机宕机,而为了适应不断增加的终端节点数量,运营商就必须将无法承受负荷的计算机更换处理能力更强的计算机,增加了运营商的成本。

2、轮训法,遍历远距离低功耗网络中的每个终端节点,检测终端节点是否离线,本方法的弊端在于,随着远距离低功耗网络中的终端节点数量的增多,必然导致遍历一次的时间增大,对单个终端节点而言,就存在检测不及时的问题。

为了克服现有技术的上述问题,本发明实施例提供一种远距离低功耗网络中终端节点离线的检测方法,如图1所示,包括:

s1、确定各终端节点的下一次传输数据的预定时间,对任意一个终端节点,将该终端节点的下一次传输数据的预定时间存入第一数据库表;

在具体实施时,确定各终端节点的下一次传输数据的预定时间,可以通过事先对远距离低功耗网络中的终端节点设置的运行参数获得,例如,设置终端节点在每天早上8点、10点以及15点各发送一次传输数据,根据现在时刻是13点,即可确定各终端节点下一次传输数据的预定时间是15点,还可以通过对各终端节点的历史传输数据的时间进行推算,例如某终端节点每天在早上10点15分发送一次数据,根据现在时刻是早上8点10分,即可确定该终端节点的下一次传输数据的预定时间是2小时5分钟后的10点15分,本发明实施例中的第一数据库表用于存储各终端节点的下一次传输数据的预定时间,本发明将所有终端节点的下一次传输数据的预定时间统计在一个数据库表中,只需通过单任务线程的简单语句即可查询出关键词。

s2、确定本次检索时间,根据所述本次检索时间检索所述第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点。

在具体实施时,确定本次检索时间的方式既可以是周期性地设置检索时间,例如每30分钟进行一次检索,例如,上一次检索时间是10点20分,那么本次检索时间就是10点50分,也可以由使用者根据需求随时进行确定,由于第一数据库表中包含所有终端节点下一次传输数据的预定时间,只要将本次检索时间和上述的预定时间进行比较,即可获得离线的终端节点。例如,本次检索时间是10点40分,而检索第一数据库表发现,终端节点1的下一次传输数据的预定时间是10点20分,终端节点2的下一次传输数据的预定时间是10点50分,终端节点3的下一次传输数据的预定时间是11点05分,那么就可以知道终端节点1本应该在10点20分传输数据,但直到10点40分都没有传输,判断终端节点1处于离线状态。

需要说明的是,本发明实施例通过将各终端节点下一次传输数据的预定时间存入第一数据库表中,方便后续对关键字—终端节点的下一次传输数据的预定时间的检索,通过结合检索时间,即可快速通过单一线程查询出远距离低功耗网络中所有离线的终端节点。即克服了需要对每个终端节点设置对应的线程,带来的增加运营商成本的问题,也克服了遍历所有终端节点带来的两次检测时间过长的问题。

在上述各实施例的基础上,步骤s1中确定各终端节点的下一次传输数据的时间的步骤,包括:

设置各终端节点的唯一标识,确定各终端节点的传输数据的周期;

在具体实施时,设置各终端节点的唯一标识的时间既可以在终端节点出厂时设置完毕,也可以在组网时由网管设置,本发明不对设置个终端节点的唯一标识的时间段进行限制,确定各终端节点的传输数据的周期的目的在于将各终端节点有序地传输数据,需要说明的是,根据“周期”一词的解释,是指若一组事件或现象按同样的顺序重复出现,则把完成这一组事件或现象的时间或空间间隔,称为周期。也就是说,本发明并不对终端节点相邻两次传输数据的时间间隔之差进行限制,既可以是相等的,也可以是不等的,例如,远距离低功耗网络中的终端节点1,周期既可以是1h发送一次数据,也可以是第i个周期为1h,第i+1个周期为1.5h,第i+2个周期为2h,第i+3个周期为1h…,以此类推,本发明不对周期的长短和间隔进行限制。

对任意一个终端节点,根据该终端节点的上一次传输数据的时间以及传输数据的周期,确定该终端节点的下一次传输数据的预定时间。

在具体实施时,若某个终端节点上一次传输数据的时间是9点20时,同时传输数据的周期为1h,那么就可以确定终端节点下一次传输数据的预定时间为10点20,需要说明的是,本发明中的任意一个终端节点,在成功传输数据后,会实时更新下一次传输数据的时间,以方便在检索时间可以迅速对所有终端是否离线的状态进行判断。

有上述实施例可知,本发明可动态对每个终端节点单独设置传输数据的周期以及下一次传输数据的预定时间,终端节点之间互不影响。

在上述各实施例的基础上,终端节点的传输数据的周期的精度可以是小时、分钟、秒、毫秒级别,根据不同的使用情况选择不同的时间精度。

在上述各实施例的基础上,确定本次检索时间的步骤包括:

确定检索周期;

在具体实施时,检索周期既可以是一个固定不变地时间间隔,也可以是一个变化的时间间隔,例如,在某些特殊时段,各终端节点传输数据的频率会明显大于其他时段的频率,这个时候就可以该特殊时段,将检索周期设置的较短,以便更迅速地找出离线的终端节点。

根据上一次检索时间以及检索周期,获得本次检索时间。通过将检索周期与上一次检索时间相加,即可获得本次检索时间。

在上述各实施例的基础上,根据本次检索时间检索第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点的步骤,包括:

比较本次检索时间与第一数据库表中各终端节点的下一次传输数据的预定时间;

将下一次传输数据的预定时间早于本次搜索时间的终端节点,作为离线的终端节点。

需要说明的是,本发明实施例只需要将第一数据库中各终端节点的下一次传输数据的预定时间与检索时间进行对比,即可快速获得离线的终端节点。本发明实施例的检索离线的方法消耗资源少,只需要启动1各线程,实施成本低。

在上述实施例的基础上,将该终端节点的下一次传输数据的时间存入第一数据库表的步骤,包括:

创建第一数据库表,在第一数据库表中添加第一字段和第二字段;

在第一字段中添加该终端节点的唯一标识;

在第二字段中更新该终端节点的下一次传输数据的预定时间。

一个第一数据库表的结构如表1所示。

表1第一数据库表的结构表

表1示出的第一数据库表的id字段用于描述第一数据库表的名称,由id的字段说明可知,第一数据库表属于非业务主键,所谓业务主键(natrualkey)是对与前端可见的,用来索引和关联的,而非业务主键,也成为逻辑主键(surrogatekey),是唯一标识一条记录,用来关联,但采用逻辑主键关联具有查询更快的作用,dev_eui用于说明每个终端节点的唯一编号地址,例如,某终端节点的唯一编号地址为kjdsf001,而time_key则用于描述每个终端节点的下一次传输数据的预定时间,通过在第一数据库表中,设置上述信息,只需通过简单的查询语句即可迅速找到离线的设备。

在上述实施例的基础上,在第二字段中更新该终端节点的下一次传输数据的预定时间的步骤,包括:

将该终端节点的下一次传输数据的预定时间转换为第一字符串;

在第二字段中更新第一字符串。

在具体实施时,例如某终端节点的唯一标识为:iegf21,该终端节点的下一次传输数据的预定时间是2017年6月1日的10:00:00,以yyyymmddhhmmss的形式转换为第一字符串:“20170601100000”,然后在将第一数据库表中的dev_eui字段中查找“iegf21”,将该终端节点的time_key字段配置“20170601100000”。

根据本次检索时间检索第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点的步骤,包括:

将本次检索时间转换为第二字符串;

比较第一字符串与第二字符串的大小,将小于第二字符串的第一字符串对于的终端节点作为离线的终端节点。

例如,本次时间是2017年6月1日的14:00:00,以yyyymmddhhmmss的形式转换为第二字符串:“20170601140000”,然后通过关键的sql查询语句:select*from预报警表wheretime_key<’20170601140000’进行查询第一数据库表,返回已经超时的设备的信息,需要注意的是,time_key查询要使用“<”比较条件。查询出来的数据全部是已经超时离线的设备。

在上述各实施例的基础上,确定各终端节点的传输数据的周期步骤,之后还包括:

创建第二数据库表,在第二数据库表中添加第三字段和第四字段;

在第三字段中添加各终端节点的唯一标识,在第四字段中添加各终端节点的传输数据的周期。

一个第二数据库表的结构如表2所示。

表2第二数据库表的结构表

表2示出的第二数据库表的id字段用于描述第二数据库表的名称,由id的字段说明可知,第二数据库表也属于非业务主键,所谓业务主键(natrualkey)是对与前端可见的,用来索引和关联的,而非业务主键,也成为逻辑主键(surrogatekey),是唯一标识一条记录,用来关联,但采用逻辑主键关联具有查询更快的作用,dev_eui用于说明每个终端节点的唯一编号地址,例如,某终端节点的唯一编号地址为gqorj572,而alarm_cycle则用于描述每个终端节点的传输数据的周期,通过在第二数据库表中,设置上述信息,只需通过简单的查询语句即可迅速找到或设置每个终端节点的传说数据的周期。

在上述实施例的基础上,根据该终端节点的上一次传输数据的时间以及传输数据的周期,确定该终端节点的下一次传输数据的预定时间的步骤,之前还包括:

根据该终端节点发送的数据的时间戳,获得该终端节点的上一次传输数据的时间;

在具体实施例时,远距离低功耗网络中各终端节点在传输数据时,都会携带时间戳,这在本领域属于公知常识,时间戳就是指终端节点传输数据的时刻,当服务器接收到数据时,即可通过时间戳知晓该数据是终端节点什么时候传输的。

根据该终端节点的唯一标识,查询第二数据库表,在第二数据库表中获得该终端节点的传输数据的周期。

本实施例通过将各终端节点的传输数据的周期以字段的形式汇总在一个数据库表,即第二数据库表中,实现了对各终端节点的传输数据的周期独立设置的益处,各终端节点之间互不影响。

在上述实施例的基础上,在第二数据库表中添加第五字段,根据终端节点是否离线,在第三字段中更新终端节点的在线/离线状态。

在本实施例中,第二数据库表的结构如表3所示。

表3第二数据库表的结构表

通过在第二数据库表中增加用于显示终端设备是否离线的字段,后期可通过简单的sql查询语句获知哪些设备是离线,哪些设备是在线,非常方便。

下面结合一个具体实施例对本发明提供的远距离低功耗网络中终端节点离线的检测方法进行阐述:

设检索周期以秒为最小单位,针对第二数据库表的alarm_cycle字段信息配置,假设某终端节点的离线周期为2分钟,那么对应配置数据信息就为120,数据库字段alarm_cycle字段的值为120;

当完成上述配置,在此之后收到终端节点发送的第一条数据,开始启动计算该终端节点是否离线:假设服务器收到该终端节点发送上来的数据,收到此数据的操作系统时间2017/5/1010:00:00,系统根据终端节点的dev_eui(唯一标识信息),查询第二数据库中的设备报警配置字段alarm_cycle,设当前alarm_cycle字段的值为120,单位为秒。根据当前时间2017/5/1010:00:00并加上120秒为2017/5/1010:02:00,然后基于yyyymmddhhmmss此方式对时间进行格式化转化成字符串为“20170510100200”,最后往第一数据库表插入一条记录,sql语句为:

“insertinto第一数据库表(dev_eui,time_key)values(‘终端节点dev_eui‘,““20170510100200’)“

启动一个后台定时任务线程,设置此定时任务周期为一秒一次(也可以根据实时性要求设置为更小时间粒度周期)。此任务所执行的主要工作如下:首先,获取当前时间,假设当前值为2017/5/1010:05:00,然后通过日期格式化yyyymmddhhmmss进行转换,把日期类型转换成字符串类型,则当前值为20170510100500。接着通过关键的sql查询语句select*from第一数据库表wheretime_key<’20170510100500’进行查询,返回已经超时的终端节点的信息。这里特别注意time_key查询一定要使用“<”比较条件。查询出来的数据全部是已经超时离线的设备,在第二数据库中修改这些设备的status字段并标记为离线。

本发明还提供一种远距离低功耗网络中终端节点离线的检测装置,如图2所示,包括:

预定时间获取模块,用于确定各终端节点的下一次传输数据的预定时间,对任意一个终端节点,将该终端节点的下一次传输数据的预定时间存入第一数据库表;

离线确定模块,用于确定本次检索时间,根据本次检索时间检索第一数据库表中各终端节点的下一次传输数据的预定时间,获得离线的终端节点。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1