[0054] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0055] 图1为本发明所述的建立邻居表流程示意图。
[0056] 图2为本发明所述的维护邻居表流程示意图。
[0057] 图3为本发明所述的构建树状结构流程示意图。
[0058] 图4为本发明所述的更新邻居表流程示意图。
[0059] 图5为本发明所述的节点状体转换流程示意图。具体实施方式:
[0060] 本发明提供了一种高效的物联网构建方法,移动设备通过本发明提供的方法能够快速获取网络服务,提高网络的稳定性以及通信性能,从而降低通信延迟和代价,提高服务质量。本发明可应用于农业工程化、智能医疗等诸多领域,具有广泛的应用前景。图1为本发明所述的建立邻居表流程示意图。所述物联网包括一个控制器和两个以上的传感节点,一个控制器和传感节点构成一个树状结构,该树状结构中,控制器为根节点;
[0061] 一个控制器或者一个传感节点由一个地址唯一标识,该地址由硬件ID和坐标构成;一个控制器启动后,构建一个地址,该地址的硬件ID为零,坐标为控制器自己的地理坐标;一个传感节点启动后,构建一个地址,该地址的硬件ID为传感节点自己的硬件ID,坐标为自己的地理坐标;
[0062] 一个传感节点有三种状态,休眠状态、半休眠状态和活跃状态;休眠状态的传感节点不接收任何消息;休眠状态的状态值为0;半休眠状态的传感节点只能接收信标消息、触发消息和新节点消息;半休眠状态的状态值为1;活跃状态的传感节点能接收任何消息;活跃状态的状态值为2;
[0063] 每个控制器或者传感节点保存一个邻居表,每个邻居表项包含地址域、状态域、生命周期域和关系域;关系域值为0或者1;关系域值1表明该传感节点加入了树状结构,关系域值0表明该传感节点没有加入树状结构;
[0064] 控制器、处于活跃状态和半休眠状态的传感节点定期发送信标消息,发送两个信标消息之间的时间间隔为T1;
[0065] 物联网启动后,控制器和所有传感节点均处于活跃状态;控制器通过下述过程建立一个邻居表:
[0066] 步骤101:开始;
[0067] 步骤102:控制器发送一个信标消息,该信标消息的源地址为该控制器的地址,目的地址为广播地址,即地址的每个比特位都为1,负载为状态值2;
[0068] 步骤103:邻居传感节点接收到该信标消息后,保存该信标消息负载中的控制器的地址,查看邻居表,判断是否存在一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,则执行步骤104,否则执行步骤105;
[0069] 步骤104:接收到该信标消息的邻居传感节点选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,该邻居传感节点将该邻居表项的状态域值设置为该信标消息负载中的状态值,生命周期设置为n1×T1,n1为大于1的数字,关系域值为0;执行步骤106;
[0070] 步骤105:接收到该信标消息的邻居传感节点创建一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,该邻居传感节点将该邻居表项的状态域值设置为该信标消息负载中的状态值,生命周期设置为n1×T1,关系域值为0;
[0071] 步骤106:结束。
[0072] 图2为本发明所述的维护邻居表流程示意图。传感节点启动后处于活跃状态,传感节点获取控制器的地址后执行下述过程:
[0073] 步骤201:开始;
[0074] 步骤202:传感节点发送一个信标消息,该信标消息的源地址为该控制器的地址,目的地址为广播地址,即地址的每个比特位都为1,负载为状态值2以及控制器的地址;
[0075] 步骤203:邻居传感节点接收到该信标消息后,保存该信标消息负载中的控制器的地址,查看邻居表;如果存在一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,则执行步骤204,否则执行步骤205;
[0076] 步骤204:接收到该信标消息的邻居传感节点选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,该邻居传感节点将该邻居表项的状态域值设置为该信标消息负载中的状态值,生命周期设置为n1×T1,关系域值为0,执行步骤206;
[0077] 步骤205:接收到该信标消息的邻居传感节点创建一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,该邻居传感节点将该邻居表项的状态域值设置为该信标消息负载中的状态值,生命周期设置为n1×T1,关系域值为0;
[0078] 步骤206:结束。
[0079] 图3为本发明所述的构建树状结构流程示意图。控制器和传感节点建立邻居表后,控制器发起树状结构创建过程:
[0080] 步骤301:开始;
[0081] 步骤302:控制器选择一个邻居表项E1,在所有邻居表项中,邻居表项E1中的地址域的坐标与所述控制器的坐标的距离最近;控制器发送一个构建树消息,该构建树消息的源地址为该控制器的地址,目的地址为邻居表项E1的地址,将邻居表项E1的关系域值设置为1;所述控制器查看邻居表,针对除了邻居表项E1之外的每个邻居表项,控制器执行下述操作:如果邻居表项E1中的地址的坐标与该邻居表项的地址的坐标的距离小于传感节点的传输半径R1,则该控制器发送一个休眠消息,该休眠消息的源地址为该控制器的地址,目的地址为该邻居表项的地址,将该邻居表项的状态值设置为0;
[0082] 步骤303:控制器选择一个邻居表项E2,邻居表项E2的状态值为2,关系域值为0,在所有状态值为2且关系域值为0的邻居表项中,邻居表项E2中的地址域的坐标与所述控制器的坐标的距离最近;控制器发送一个构建树消息,该构建树消息的源地址为该控制器的地址,目的地址为邻居表项E2的地址,将邻居表项E2的关系域值设置为1;控制器查看邻居表,针对除了邻居表项E2之外的每个状态域值为2且关系域值为0的邻居表项,控制器执行下述操作:如果邻居表项E2中的地址的坐标与该邻居表项的地址的坐标的距离小于传感节点的传输半径R1,则该控制器发送一个休眠消息,该休眠消息的源地址为该控制器的地址,目的地址为该邻居表项的地址,将该邻居表项的状态值设置为0;
[0083] 步骤304:控制器查看邻居表,判断是否至少存在一个邻居表项,该邻居表项的状态值为2且关系域值为0,是则执行步骤303,否则执行步骤305;
[0084] 步骤305:判断是否传感节点接收到休眠消息,是则执行步骤306,否则执行步骤307;
[0085] 步骤306:接收到休眠消息的传感节点保存该休眠消息的源地址,选择一个邻居表项,该邻居表项的地址域值等于该构建树消息的源地址,将该邻居表项的关系域值设置为1,然后发送一个信标消息,该信标消息的源地址为该传感节点的地址,目的地址为广播地址,即地址的每个比特位都为1,负载为状态值0以及休眠时间T2,然后该传感节点转为休眠状态;邻居传感节点接收到该信标消息后,选择一个邻居表项,该邻居表项的地址域等于该信标消息的源地址,将该邻居表项的状态域值设置为该信标消息负载中的状态值,关系域值设置为0,生命周期域值设置为n1×T2;执行步骤309;
[0086] 步骤307:接收到构建树消息的传感节点保存该构建树消息的源地址;判断是否至少存在一个邻居表项,该邻居表项的状态值为2且关系域值等于0,是则执行步骤308,否则执行步骤309;
[0087] 步骤308:接收到构建树消息的传感节点选择一个邻居表项,该邻居表项的地址域值等于该构建树消息的源地址,将该邻居表项的关系域值设置为1,然后选择一个邻居表项E3,邻居表项E3的状态值为2,关系域值为0,在所有状态值为2且关系域值为0的邻居表项中,控制器地址的坐标与邻居表项E3的地址域值的坐标的距离最大;该传感节点发送一个构建树消息,该构建树消息的源地址为自己的地址,目的地址为邻居表项E3中的地址域值,将邻居表项E3的关系域值设置为1;该传感节点查看邻居表,对于除了邻居表项E3以外的状态值为2且关系域值为0的每个邻居表项,该传感节点执行下述操作:传感节点发送一个休眠消息,该休眠消息的源地址为自己的地址,目的地址为该邻居表项中的地址域值,将该邻居表项的状态域值设置为0,执行步骤305;
[0088] 步骤309:结束;
[0089] 处于休眠状态的传感节点在休眠n1×T2后,转换为半休眠状态。
[0090] 图4为本发明所述的更新邻居表流程示意图。如果一个节点的状态从休眠状态转换为半休眠状态,它执行下述操作更新邻居表:
[0091] 步骤401:开始;
[0092] 步骤402:传感节点发送一个信标消息,该信标消息的源地址为传感节点自己的地址,目的地址为广播地址,负载为状态值1;
[0093] 步骤403:邻居传感节点接收到该信标消息后,选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,然后将该邻居表项的状态值设置为该信标消息负载中的状态值,生命周期设置为n1×T1;
[0094] 步骤404:结束;
[0095] 如果半休眠状态的传感节点在n2×T1内没有接收到触发消息,n2为大于2的数,则发送一个信标消息,该信标消息的源地址为自己的地址,目的地址为广播地址,负载为状态值0和休眠时间T2,半休眠状态的传感节点转换为休眠状态;邻居传感节点接收到该信标消息后,选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,然后将该邻居表项的状态值设置为该信标消息负载中的状态值,生命周期设置为n1×T2,关系域值设置为0。
[0096] 图5为本发明所述的节点状体转换流程示意图。如果传感节点处于活跃状态的时间超过预定值T3,则执行下述过程:
[0097] 步骤501:开始;
[0098] 步骤502:传感节点选择所有关系域值等于1的邻居表项,同时选择一个邻居表项E4,邻居表项E4的关系域值为0,且邻居表项E4地址域值的坐标与每个关系域值等于1的邻居表项中的地址域值的坐标的距离都小于传输半径R1;如果邻居表项E4的状态等于0,则该传感节点等待直到邻居表项E4的状态域值变为半休眠状态;该传感节点发送一个触发消息,该触发消息的源地址为所述传感节点自己的地址,目的地址为邻居表项E4的地址域值,负载为传感节点自己的邻居表以及休眠时间T2;
[0099] 步骤503:该传感节点发送一个信标消息,该信标消息的源地址为所述传感节点自己的地址,目的地址为广播地址,负载为状态值0以及休眠时间T2,转换为休眠状态;邻居传感节点接收到该信标消息后,选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,将该邻居表项的状态值设置为信标消息负载中的状态值,生命周期设置为n1×T2,关系域值设置为0;
[0100] 步骤504:传感节点接收到触发消息后,将自己的邻居表更新为触发消息负载中的邻居表,在该邻居表中创建一个邻居表项,该邻居表项的地址域值等于该触发消息的源地址,状态域值为0,生命周期域值为n1×T2,关系域值为0;收到触发消息的传感节点从邻居表中删除一个邻居表项,该邻居表项的地址域值等于该传感节点的地址,转变为活跃状态;该传感节点发送一个信标消息,该信标消息的源地址等于自己的地址,目的地址为广播地址,负载为状态值2;邻居传感节点接收到该信标消息后,选择一个邻居表项,该邻居表项的地址域值等于该信标消息的源地址,将该邻居表项的状态值设置为该信标消息负载中的状态值,生命周期设置为n1×T1,关系域值设置为1;
[0101] 步骤505:结束。
[0102] 如果一个邻居表项的生命周期过期,则从邻居表中删除该邻居表项;
[0103] 如果处于半休眠状态的传感节点检测到一个关系域值为1的邻居表项的生命周期过期且没有接收到源地址域值等于该邻居表项的地址域值的新节点消息,该传感节点则查看自己的坐标与该邻居表项的地址域的坐标的距离是否小于阈值D1;如果该传感节点的坐标与该邻居表项的地址域的坐标的距离不小于阈值D1,则该传感节点删除该邻居表项;如果该传感节点的坐标与该邻居表项的地址域的坐标的距离小于阈值D1,该传感节点则转变为活跃状态,删除该邻居表项,发送一个新节点消息,该新节点消息的源地址为自己的地址,目的地址为广播地址,负载为状态域值2;邻居传感节点接收到该新节点消息后,选择一个邻居表项,该邻居表项的地址域值等于该新节点消息的源地址,将该邻居表项的状态域值设置为该新节点消息负载中的状态域值,生命周期设置为n1×T1,关系域值设置为1。
[0104] 实施例1
[0105] 基于表1的仿真参数,本实施例模拟了本发明中的一种高效的物联网构建方法,网络启动后,控制器执行步骤101-106建立邻居表,传感节点执行步骤201-206建立邻居表,然后控制器执行步骤301-309建立树状结构,节点如果从休眠状态改为半休眠状态改变,则执行步骤401-404更新邻居表,节点如果从活跃状态改为休眠状态,则执行步骤501-505更新邻居表以维护树状结构的稳定性,性能分析如下:当节点数量增加时,网络构建延迟有所增加,当节点数量降低时,网络构建延迟有所降低,数据获取的平均延迟为750ms。
[0106] 表1仿真参数
[0107]
[0108]
[0109] 本发明提供了一种高效的物联网构建方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。