专利转让平台_买专利_卖专利_中国高校专利技术交易-买卖发明专利上知查网

全部分类
全部分类
一种物联网数据传输方法

一种物联网数据传输方法

IPC分类号 : H04L29/08

申请号
CN201710200507.5
可选规格
  • 专利类型: 发明专利
  • 法律状态: 有权
  • 申请日: 2017-03-29
  • 公开号: CN106713515A
  • 公开日: 2017-05-24
  • 主分类号: H04L29/08
  • 专利权人: 常熟理工学院

专利摘要

本发明提供了一种物联网数据传输方法,所述物联网中包含四类节点:数据路由器、用户设备、传感节点和执行节点;数据路由器用于路由转发,用户设备为数据消费者,用于获取传感节点感知的数据或者向执行节点发布命令从而实现远程控制,传感节点和数据节点为数据提供者;用户通过该方法可实时查询目标对象节点所处环境的参数,并根据目标对象节点的状态及时向传感器节点发送命令实现对目标对象节点的实时控制和调节,本发明可广泛用于农业环境监测和远程控制等领域。

权利要求

1.一种物联网数据传输方法,其特征在于,所述物联网中包含四类节点:数据路由器、用户设备、传感节点和执行节点;数据路由器用于路由转发,用户设备为数据消费者,用于获取传感节点感知的数据或者向执行节点发布命令从而实现远程控制,传感节点和数据节点为数据提供者;

一个数据路由器与一跳范围内的用户设备、传感节点和执行节点构建成一个簇,数据路由器为簇首节点,用户设备、传感节点和执行节点为簇内节点;簇内节点不执行路由转发功能;用户设备、传感节点和执行节点有一个无线接口,并通过该无线接口与所在簇簇首节点进行通信;数据路由器具有一个无线接口和两个以上的有线接口,通过无线接口与本簇簇内节点进行通信,通过有线接口与其他数据路由器进行通信;

数据路由器有一个路由器ID唯一标识,传感节点和执行节点有一个名字唯一标识,传感节点的名字由名字前缀和名字ID组成;执行节点的名字由名字前缀、名字ID和命令域构成;

消息结构由四部分构成:名字集合域、消息类型值、跳数和负载;其中名字集合域为定义目标数据的数据名字的集合,跳数定义该消息被转发的最大距离;

消息类型值如下所示:

信标消息的消息类型值为0,

发布消息的消息类型值为1,

数据推送消息的消息类型值为2,

数据请求消息的消息类型值为3,

数据响应消息的消息类型值为4,

命令请求消息的消息类型值为5,

命令响应消息的消息类型值为6,

数据路由器维护一个转发表,每个转发表项包括三个域:源路由器ID域值、接口域值和名字前缀集合;

传感节点的名字预先设定,执行节点的名字前缀和名字ID预先设定,具有网络唯一性;执行节点的名字前缀和名字ID具有唯一性;

数据路由器维护一个本簇名字前缀集合,该本簇名字前缀集合为本簇所有传感节点和执行节点的名字前缀的集合,数据路由器通过无线接口定期广播信标消息,该信标消息的名字集合域域值为名字前缀集合,消息类型为0,跳数域值为1,负载为自己的路由器ID;用户设备、传感节点和执行节点启动后,侦听数据路由器广播的信标消息,选择发送信号最强的信标帧的数据路由器为簇首节点,记录簇首节点的路由器ID,将自己标记为簇内节点;用户设备、传感节点和执行节点开始从无线接口定期广播信标消息,传感节点和执行节点广播的信标消息的名字集合域值为自己名字的名字前缀,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;用户设备广播的信标消息的名字集合域值为空,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;簇首节点收到信标消息后,如果信标消息中的路由器ID等于自己的路由器ID,则将信标消息中的名字集合域值加入到维护的名字前缀集合;

簇首节点收到所有簇内节点的信标帧后,获取并保存本簇名字前缀集合;对于该集合中的每个元素设置一个定时器,如果簇首节点在一个元素的定时器过期之前收到了该元素的信标消息,即该元素属于该信标消息的名字集合,那么簇首节点重新设置定时器,否则从本簇名字前缀集合中删除该元素;

然后执行下述步骤建立转发表:

步骤101:开始;

步骤102:簇首节点构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点从每一个与数据路由器相连的有线接口发送该发布消息;

步骤103:邻居数据路由器从接口f接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中创建一个转发表项,该转发表项的源路由器ID为发布消息负载中的路由器ID,接口域值为f,名字前缀集合为发布消息中的名字集合域值;

步骤104:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤106,否则执行步骤105;

步骤105:邻居数据路由器从除了接口f之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤103;

步骤106:结束。

2.根据权利要求1所述的一种物联网数据传输方法,其特征在于,在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1的条件下,如果节点M1从簇CL1移动到CL2,那么节点M1收到簇首节点CH2的信标消息后保存簇首节点CH2的路由器ID,然后执行下述过程:

步骤201:开始;

步骤202:节点M1从无线接口发送一个信标消息,该信标消息的名字集合为它名字的名字前缀,消息类型为0,跳数为1,负载为簇首节点CH2的路由器ID;

步骤203:簇首节点CH2接收到信标消息后,查看自己的本簇名字前缀集合,如果本簇名字前缀集合不包含信标消息中的名字集合中的名字前缀,那么执行步骤204,否则执行步骤207;

步骤204:簇首节点CH2将信标消息中名字集合中的名字前缀加入到自己的本簇名字前缀集合中,然后构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH2从每一个与数据路由器相连的有线接口发送该发布消息;

步骤205:邻居数据路由器从自己的接口f1接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,将该转发表项的接口域值更新为f1,名字前缀集合更新为发布消息中的名字集合域值;

步骤206:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤208,否则执行步骤207;

步骤207:邻居数据路由器从除了接口f1之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤205;

步骤208:结束。

3.根据权利要求2所述的一种物联网数据传输方法,其特征在于,在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1,传感节点或者执行节点M1为簇CL1的簇内节点且簇CL1中只有传感节点或者执行节点M1的名字前缀为NP1条件下,如果传感节点或者执行节点M1从簇CL1移动到CL2,那么簇首节点CH1执行下述过程:

步骤301:开始;

步骤302:如果簇首节点CH1检测到名字前缀NP1的定时器过期,则从本簇名字前缀集合将名字前缀NP1删除;簇首节点CH1构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH1从每一个与数据路由器相连的有线接口发送该发布消息;

步骤303:邻居数据路由器从自己的接口f2接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,然后将该转发表项的接口域值更新为f2,名字前缀集合更新为发布消息中的名字集合域值;

步骤304:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤306,否则执行步骤305;

步骤305:邻居数据路由器从除了接口f2之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤303;

步骤306:结束;

每个簇首节点维护一个数据表,每个数据表项由名字域,数据域和生命周期域;

传感节点定期收集感知到的数据,然后执行下述数据推送操作:

步骤401:开始;

步骤402:传感节点构建数据推送消息,该数据推送消息的名字集合由该传感节点的名字构成,消息类型为2,跳数为1,负载为感知到的数据,然后从无线接口发送该数据推送消息;

步骤403:与传感节点位于相同簇的簇首节点接收到数据推送消息后,在数据表中创建一个数据表项,该数据表项的名字域值为数据推送消息中名字集合的名字,数据域为数据推送消息负载中的数据,生命周期为最大值;

步骤404:结束;

如果簇首节点检测到一个数据表项的生命周期衰减到0,那么删除该数据表项。

4.根据权利要求3所述的一种物联网数据传输方法,其特征在于,每个数据路由器保存一个聚合表,一个聚合表项包括名字集合域和接口域;

用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1需要获取名字集合S1定义的数据,名字集合S1的名字前缀集合为NPS1,那么用户设备U1执行下述过程:

步骤501:开始;

步骤502:用户设备U1构建一个数据请求消息,该数据请求消息的名字集合为S1,消息类型为3,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该数据请求消息;

步骤503:簇首节点CH3从接口f3接收到该数据请求消息后,将数据请求消息中的跳数递减1,然后判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤504,否则执行步骤506;

条件1:数据表项的名字域值属于数据请求消息中的名字集合;

步骤504:簇首节点CH3构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为1,负载为符合条件1的数据表项中的数据域值;簇首节点CH3从接口f3发送数据响应消息;

步骤505:簇首节点CH3从数据请求消息的名字集合中减去数据响应消息中的名字集合;如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤506;

步骤506:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤507;

步骤507:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤508,否则执行步骤509;

步骤508:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤509:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合;簇首节点CH3构建一个名字集合S2,其值为数据请求消息的名字集合,名字集合S2的名字前缀集合为NPS2,然后对于集合NPS2中的任一个名字前缀P,簇首节点CH3进行如下操作:

簇首节点从集合S2中选择名字前缀为P的所有名字并用这些名字构建成名字集合S3,从转发表中选择名字前缀集合包含名字前缀P的所有转发表项,对于每一个名字前缀集合包含名字前缀P的转发表项,簇首节点CH3构建一个数据请求消息,该数据请求消息的名字集合为集合S3,消息类型为3,跳数为d/r+2,负载为空;簇首节点从该转发表项的接口域发送构建的数据请求消息;

步骤510:邻居数据路由器从接口f4接收到该数据请求消息后,将数据请求消息中的跳数递减1,判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤511,否则执行步骤513;

步骤511:邻居数据路由器构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为d/r+2,负载为符合条件1的数据表项中的数据域值,然后从接口f4发送数据响应消息;

步骤512:邻居数据路由器从数据请求消息的名字集合中减去数据响应消息中的名字集合,如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤513;

步骤513:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤514;

步骤514:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤515,否则执行步骤516;

步骤515:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤516:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,如果数据请求消息中的跳数为0,则执行步骤518,否则执行步骤517;

步骤517:邻居数据路由器从转发表中选择名字前缀集合包含数据请求消息名字集合的名字前缀的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含数据请求消息名字集合的名字前缀的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的数据请求消息,执行步骤510;

步骤518:如果用户设备U1接收到数据响应消息,执行步骤520,否则执行步骤519;

步骤519:对于数据响应消息名字集合中的每一个名字N,数据路由器创建一个数据表项,该数据表项的名字域值为名字N,数据域为名字N定义的数据,生命周期设置为最大值;对于每个名字集合为数据响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的数据响应消息,然后从该聚合表项的名字集合中减去数据响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤518;

步骤520:用户设备U1收到所有数据响应消息后,保存数据响应消息中的数据从而获取名字集合S1定义的数据;

步骤521:结束。

5.根据权利要求4所述的一种物联网数据传输方法,其特征在于,用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1想要执行节点执行一种操作,所述执行节点的名字集合为SA1,名字集合SA1的名字前缀集合为NPSA1,那么用户设备U1执行下述过程:

步骤601:开始;

步骤602:用户设备U1构建一个命令请求消息,该命令请求消息的名字集合为SA1,消息类型为5,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该命令请求消息;

步骤603:簇首节点CH3从接口f3接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤606,否则执行步骤604;

步骤604:簇首节点CH3从接口f3转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E的名字前缀和名字ID,则执行元素E的命令域值,然后从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E的名字,消息类型为6,跳数为2,负载为簇首节点CH3的路由器ID;

步骤605:簇首节点CH3接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果簇首节点CH3收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤606;

步骤606:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤607;

步骤607:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤608,否则执行步骤609;

步骤608:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤609:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合;簇首节点CH3构建一个名字集合SA2,其值为命令请求消息的名字集合,名字集合SA2的名字前缀集合为NPSA2,然后对于集合NPSA2中的任一个名字前缀PA,簇首节点CH3进行如下操作:

簇首节点从集合SA2中选择名字前缀为PA的所有名字并用这些名字构建成名字集合SA3,然后从转发表中选择名字前缀集合包含名字前缀PA的所有转发表项,对于每一个名字前缀集合包含名字前缀PA的转发表项,簇首节点CH3构建一个命令请求消息,该命令请求消息的名字集合为集合SA3,消息类型为5,跳数为d/r+2,负载为空,然后从该转发表项的接口域发送构建的命令请求消息;

步骤610:邻居数据路由器从接口f4接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤613,否则执行步骤611;

步骤611:邻居数据路由器从无线接口转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E1的名字前缀和名字ID,则执行元素E1的命令域值;邻居数据路由器从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E1的名字,消息类型为6,跳数为d/r+1,负载为邻居数据路由器的路由器ID;

步骤612:邻居数据路由器接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果邻居数据路由器收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤613;

步骤613:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤614;

步骤614:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤615,否则执行步骤616;

步骤615:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤616:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,如果命令请求消息中的跳数为0,则执行步骤618,否则执行步骤617;

步骤617:邻居数据路由器从转发表中选择名字前缀集合包含命令请求消息名字集合的名字前缀集合的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含命令请求消息名字集合的名字前缀集合的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的命令请求消息,执行步骤610;

步骤618:如果用户设备U1接收到命令响应消息,执行步骤620,否则执行步骤619;

步骤619:对于每个名字集合为命令响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的命令响应消息,从该聚合表项的名字集合中减去命令响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤618;

步骤620:用户设备U1收到所有命令响应消息以确认执行节点已经收到命令请求消息并执行了响应操作;

步骤621,结束。

说明书

技术领域

本发明涉及一种数据传输方法,尤其涉及的是一种物联网数据传输方法。

背景技术

在典型的物联网构架中,一个电子标签具有全球唯一的电子编码,将其附着在物品上标识目标对象。在物品的生存期间,读写器利用射频识别技术(RFID,Radio-frequency identification)读取附着在目标对象的电子标签并将电子编码发送给物联网中间件,物联网中间件将电子编码所标识的目标对象信息数据传输到远程数据库服务器进行存储或者更新。用户通过向物联网中间件发送物品的电子编码来查询目标对象的相关信息,物联网中间件将目标对象的电子编码发送到对象名解析服务器(ONS,Object Name Service)进行解析从而获取目标对象信息所在数据库服务器的统一资源标识(URI,Universal Resource Identifier),即目标对象信息所在数据库服务器的IP地址,然后通过数据库服务器获取目标对象的相关信息数据,并将此数据返回给用户。目前典型的物联网解决方案包括美国的EPC(Electronic Product Code)系统和日本的UID(Ubiquitous ID)系统。

目前的物联网架构能够很好地跟踪目标对象,但仍存在以下不足:

1)用户只能通过数据库服务器来获取目标对象信息,无法实现与目标对象直接地点到点通信;

2)用户只能查询目标对象的信息,无法直接控制目标对象的状态;

3)目标对象信息只能通过读写器被动地读取,目标对象无法根据当前的状态主动请求数据更新或发出警报信息。

发明内容

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种物联网数据传输方法。

技术方案:本发明公开了一种物联网数据传输方法,所述物联网中包含四类节点:数据路由器、用户设备、传感节点和执行节点;数据路由器用于路由转发,用户设备为数据消费者,用于获取传感节点感知的数据或者向执行节点发布命令从而实现远程控制,例如自动关灯,传感节点和数据节点为数据提供者;

一个数据路由器与一跳范围内的用户设备、传感节点和执行节点构建成一个簇,数据路由器为簇首节点,用户设备、传感节点和执行节点为簇内节点;簇内节点不执行路由转发功能;用户设备、传感节点和执行节点有一个无线接口,并通过该无线接口与所在簇簇首节点进行通信;数据路由器具有一个无线接口和两个以上的有线接口,通过无线接口域本簇簇内节点进行通信,通过有线接口与其他数据路由器进行通信;

数据路由器由一个路由器ID唯一标识,传感节点和执行节点由一个名字唯一标识,传感节点的名字由名字前缀和名字ID组成;执行节点的名字由名字前缀、名字ID和命令域构成;

消息结构由四部分构成:名字集合域、消息类型值、跳数和负载;其中名字集合域为定义目标数据的数据名字的集合,跳数定义该消息被转发的最大距离;

消息类型值如下所示:

消息类型消息类型值 信标消息0 发布消息1 数据推送消息2 数据请求消息3 数据响应消息4 命令请求消息5 命令响应消息6

数据路由器维护一个转发表,每个转发表项包括三个域:源路由器ID域值、接口域值和名字前缀集合;

传感节点的名字预先设定,例如Temp,执行节点的名字前缀和名字ID预先设定,例如名字前缀为Light,名字ID为On,具有网络唯一性;执行节点的名字前缀和名字ID具有唯一性;

数据路由器维护一个本簇名字前缀集合,该本簇名字前缀集合为本簇所有传感节点和执行节点的名字前缀的集合,数据路由器通过无线接口定期广播信标消息,该信标消息的名字集合域域值为名字前缀集合,消息类型为0,跳数域值为1,负载为自己的路由器ID;用户设备、传感节点和执行节点启动后,侦听数据路由器广播的信标消息,选择发送信号最强的信标帧的数据路由器为簇首节点,记录簇首节点的路由器ID,将自己标记为簇内节点;用户设备、传感节点和执行节点开始从无线接口定期广播信标消息,传感节点和执行节点广播的信标消息的名字集合域值为自己名字的名字前缀,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;用户设备广播的信标消息的名字集合域值为空,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;簇首节点收到信标消息后,如果信标消息中的路由器ID等于自己的路由器ID,则将信标消息中的名字集合域值加入到维护的名字前缀集合;

簇首节点收到所有簇内节点的信标帧后,获取并保存本簇名字前缀集合;对于该集合中的每个元素设置一个定时器,如果簇首节点在一个元素的定时器过期之前收到了该元素的信标消息,即该元素属于该信标消息的名字集合,那么簇首节点重新设置定时器,否则从本簇名字前缀集合中删除该元素;

然后执行下述步骤建立转发表:

步骤101:开始;

步骤102:簇首节点构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点从每一个与数据路由器相连的有线接口发送该发布消息;

步骤103:邻居数据路由器从接口f接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中创建一个转发表项,该转发表项的源路由器ID为发布消息负载中的路由器ID,接口域值为f,名字前缀集合为发布消息中的名字集合域值;

步骤104:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤106,否则执行步骤105;

步骤105:邻居数据路由器从除了接口f之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤103;

步骤106:结束。

上述过程可以快速建立转发表从而实现数据通信。

本发明所述方法中,在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1的条件下,如果节点M1从簇CL1移动到CL2,那么节点M1收到簇首节点CH2的信标消息后保存簇首节点CH2的路由器ID,然后执行下述过程:

步骤201:开始;

步骤202:节点M1从无线接口发送一个信标消息,该信标消息的名字集合为它名字的名字前缀,消息类型为0,跳数为1,负载为簇首节点CH2的路由器ID;

步骤203:簇首节点CH2接收到信标消息后,查看自己的本簇名字前缀集合,如果本簇名字前缀集合不包含信标消息中的名字集合中的名字前缀,那么执行步骤204,否则执行步骤207;

步骤204:簇首节点CH2将信标消息中名字集合中的名字前缀加入到自己的本簇名字前缀集合中,然后构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH2从每一个与数据路由器相连的有线接口发送该发布消息;

步骤205:邻居数据路由器从自己的接口f1接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,将该转发表项的接口域值更新为f1,名字前缀集合更新为发布消息中的名字集合域值;

步骤206:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤208,否则执行步骤207;

步骤207:邻居数据路由器从除了接口f1之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤205;

步骤208:结束。

本发明所述方法中,在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1,节点M1为簇CL1的簇内节点且簇CL1中只有传感节点或者执行节点M1的名字前缀为NP1条件下,如果节点M1从簇CL1移动到CL2,那么簇首节点CH1执行下述过程:

步骤301:开始;

步骤302:如果簇首节点CH1检测到名字前缀NP1的定时器过期,则从本簇名字前缀集合将名字前缀NP1删除;簇首节点CH1构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH1从每一个与数据路由器相连的有线接口发送该发布消息;

步骤303:邻居数据路由器从自己的接口f2接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,然后将该转发表项的接口域值更新为f2,名字前缀集合更新为发布消息中的名字集合域值;

步骤304:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤306,否则执行步骤305;

步骤305:邻居数据路由器从除了接口f2之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤303;

步骤306:结束;

每个簇首节点维护一个数据表,每个数据表项由名字域,数据域和生命周期域;

传感节点定期收集感知到的数据,然后执行下述数据推送操作:

步骤401:开始;

步骤402:传感节点构建数据推送消息,该数据推送消息的名字集合由该传感节点的名字构成,消息类型为2,跳数为1,负载为感知到的数据,然后从无线接口发送该数据推送消息;

步骤403:与传感节点位于相同簇的簇首节点接收到数据推送消息后,在数据表中创建一个数据表项,该数据表项的名字域值为数据推送消息中名字集合的名字,数据域为数据推送消息负载中的数据,生命周期为最大值,例如10min;

步骤404:结束;

如果簇首节点检测到一个数据表项的生命周期衰减到0,那么删除该数据表项。

上述过程能够实现数据推送过程,从而用户可以快速获取所需数据。

本发明所述方法中,每个数据路由器保存一个聚合表,一个聚合表项包括名字集合域和接口域;

用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1需要获取名字集合S1定义的数据,名字集合S1的名字前缀集合为NPS1,那么用户设备U1执行下述过程:

步骤501:开始;

步骤502:用户设备U1构建一个数据请求消息,该数据请求消息的名字集合为S1,消息类型为3,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该数据请求消息;

步骤503:簇首节点CH3从接口f3接收到该数据请求消息后,将数据请求消息中的跳数递减1,然后判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤504,否则执行步骤506;

条件1:数据表项的名字域值属于数据请求消息中的名字集合;

步骤504:簇首节点CH3构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为1,负载为符合条件1的数据表项中的数据域值;簇首节点CH3从接口f3发送数据响应消息;

步骤505:簇首节点CH3从数据请求消息的名字集合中减去数据响应消息中的名字集合;如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤506;

步骤506:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤507;

步骤507:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤508,否则执行步骤509;

步骤508:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤509:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合;簇首节点CH3构建一个名字集合S2,其值为数据请求消息的名字集合,名字集合S2的名字前缀集合为NPS2,然后对于集合NPS2中的任一个名字前缀P,簇首节点CH3进行如下操作:

簇首节点从集合S2中选择名字前缀为P的所有名字并用这些名字构建成名字集合S3,从转发表中选择名字前缀集合包含名字前缀P的所有转发表项,对于每一个名字前缀集合包含名字前缀P的转发表项,簇首节点CH3构建一个数据请求消息,该数据请求消息的名字集合为集合S3,消息类型为3,跳数为d/r+2,负载为空;簇首节点从该转发表项的接口域发送构建的数据请求消息;

步骤510:邻居数据路由器从接口f4接收到该数据请求消息后,将数据请求消息中的跳数递减1,判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤511,否则执行步骤513;

步骤511:邻居数据路由器构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为d/r+2,负载为符合条件1的数据表项中的数据域值,然后从接口f4发送数据响应消息;

步骤512:邻居数据路由器从数据请求消息的名字集合中减去数据响应消息中的名字集合,如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤513;

步骤513:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤514;

步骤514:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤515,否则执行步骤516;

步骤515:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤516:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,如果数据请求消息中的跳数为0,则执行步骤518,否则执行步骤517;

步骤517:邻居数据路由器从转发表中选择名字前缀集合包含数据请求消息名字集合的名字前缀的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含数据请求消息名字集合的名字前缀的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的数据请求消息,执行步骤510;

步骤518:如果用户设备U1接收到数据响应消息,执行步骤520,否则执行步骤519;

步骤519:对于数据响应消息名字集合中的每一个名字N,数据路由器创建一个数据表项,该数据表项的名字域值为名字N,数据域为名字N定义的数据,生命周期设置为最大值;对于每个名字集合为数据响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的数据响应消息,然后从该聚合表项的名字集合中减去数据响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤518;

步骤520:用户设备U1收到所有数据响应消息后,保存数据响应消息中的数据从而获取名字集合S1定义的数据;

步骤521:结束。

上述过程能够确保用户可以快速获取所需数据。

本发明所述方法中,用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1想要执行节点执行一种操作,例如关灯,所述执行节点的名字集合为SA1,名字集合SA1的名字前缀集合为NPSA1,那么用户设备U1执行下述过程:

步骤601:开始;

步骤602:用户设备U1构建一个命令请求消息,该命令请求消息的名字集合为SA1,消息类型为5,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该命令请求消息;

步骤603:簇首节点CH3从接口f3接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤606,否则执行步骤604;

步骤604:簇首节点CH3从接口f3转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E的名字前缀和名字ID,则执行元素E的命令域值,例如关灯,然后从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E的名字,消息类型为6,跳数为2,负载为簇首节点CH3的路由器ID;

步骤605:簇首节点CH3接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果簇首节点CH3收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤606;

步骤606:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤607;

步骤607:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤608,否则执行步骤609;

步骤608:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤609:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合;簇首节点CH3构建一个名字集合SA2,其值为命令请求消息的名字集合,名字集合SA2的名字前缀集合为NPSA2,然后对于集合NPSA2中的任一个名字前缀PA,簇首节点CH3进行如下操作:

簇首节点从集合SA2中选择名字前缀为PA的所有名字并用这些名字构建成名字集合SA3,然后从转发表中选择名字前缀集合包含名字前缀PA的所有转发表项,对于每一个名字前缀集合包含名字前缀PA的转发表项,簇首节点CH3构建一个命令请求消息,该命令请求消息的名字集合为集合SA3,消息类型为5,跳数为d/r+2,负载为空,然后从该转发表项的接口域发送构建的命令请求消息;

步骤610:邻居数据路由器从接口f4接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤613,否则执行步骤611;

步骤611:邻居数据路由器从无线接口转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E1的名字前缀和名字ID,则执行元素E1的命令域值,例如关灯,;邻居数据路由器从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E1的名字,消息类型为6,跳数为d/r+1,负载为邻居数据路由器的路由器ID;

步骤612:邻居数据路由器接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果邻居数据路由器收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤613;

步骤613:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤614;

步骤614:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤615,否则执行步骤616;

步骤615:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤616:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,如果命令请求消息中的跳数为0,则执行步骤618,否则执行步骤617;

步骤617:邻居数据路由器从转发表中选择名字前缀集合包含命令请求消息名字集合的名字前缀集合的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含命令请求消息名字集合的名字前缀集合的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的命令请求消息,执行步骤610;

步骤618:如果用户设备U1接收到命令响应消息,执行步骤620,否则执行步骤619;

步骤619:对于每个名字集合为命令响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的命令响应消息,从该聚合表项的名字集合中减去命令响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤618;

步骤620:用户设备U1收到所有命令响应消息以确认执行节点已经收到命令请求消息并执行了响应操作;

步骤621。

用户通过上述过程能够让执行节点快速准确地执行远程命令。

有益效果:本发明提供了一种物联网数据传输方法,用户通过该方法可实时查询目标对象节点所处环境的参数,并根据目标对象节点的状态及时向传感器节点发送命令实现对目标对象节点的实时控制和调节,本发明可广泛用于农业环境监测和远程控制等领域。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1为本发明所述的建立转发表流程示意图。

图2为本发明所述的移动流程示意图。

图3为本发明所述的移动切换流程示意图。

图4为本发明所述的数据推动流程示意图。

图5为本发明所述的获取数据流程示意图。

图6为本发明所述的执行命令流程示意图。

具体实施方式:

本发明提供了一种物联网数据传输方法,用户通过该方法可实时查询目标对象节点所处环境的参数,并根据目标对象节点的状态及时向传感器节点发送命令实现对目标对象节点的实时控制和调节,本发明可广泛用于农业环境监测和远程控制等领域。

图1为本发明所述的建立转发表流程示意图。所述物联网中包含四类节点:数据路由器、用户设备、传感节点和执行节点;数据路由器用于路由转发,用户设备为数据消费者,用于获取传感节点感知的数据或者向执行节点发布命令从而实现远程控制,例如自动关灯,传感节点和数据节点为数据提供者;

一个数据路由器与一跳范围内的用户设备、传感节点和执行节点构建成一个簇,数据路由器为簇首节点,用户设备、传感节点和执行节点为簇内节点;簇内节点不执行路由转发功能;用户设备、传感节点和执行节点有一个无线接口,并通过该无线接口与所在簇簇首节点进行通信;数据路由器具有一个无线接口和两个以上的有线接口,通过无线接口域本簇簇内节点进行通信,通过有线接口与其他数据路由器进行通信;

数据路由器由一个路由器ID唯一标识,传感节点和执行节点由一个名字唯一标识,传感节点的名字由名字前缀和名字ID组成;执行节点的名字由名字前缀、名字ID和命令域构成;

消息结构由四部分构成:名字集合域、消息类型值、跳数和负载;其中名字集合域为定义目标数据的数据名字的集合,跳数定义该消息被转发的最大距离;

消息类型值如下所示:

消息类型消息类型值 信标消息0 发布消息1 数据推送消息2 数据请求消息3 数据响应消息4 命令请求消息5 命令响应消息6

数据路由器维护一个转发表,每个转发表项包括三个域:源路由器ID域值、接口域值和名字前缀集合;

传感节点的名字预先设定,例如Temp,执行节点的名字前缀和名字ID预先设定,例如名字前缀为Light,名字ID为On,具有网络唯一性;执行节点的名字前缀和名字ID具有唯一性;

数据路由器维护一个本簇名字前缀集合,该本簇名字前缀集合为本簇所有传感节点和执行节点的名字前缀的集合,数据路由器通过无线接口定期广播信标消息,该信标消息的名字集合域域值为名字前缀集合,消息类型为0,跳数域值为1,负载为自己的路由器ID;用户设备、传感节点和执行节点启动后,侦听数据路由器广播的信标消息,选择发送信号最强的信标帧的数据路由器为簇首节点,记录簇首节点的路由器ID,将自己标记为簇内节点;用户设备、传感节点和执行节点开始从无线接口定期广播信标消息,传感节点和执行节点广播的信标消息的名字集合域值为自己名字的名字前缀,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;用户设备广播的信标消息的名字集合域值为空,消息类型为0,跳数域值为1,负载为簇首节点的路由器ID;簇首节点收到信标消息后,如果信标消息中的路由器ID等于自己的路由器ID,则将信标消息中的名字集合域值加入到维护的名字前缀集合;

簇首节点收到所有簇内节点的信标帧后,获取并保存本簇名字前缀集合;对于该集合中的每个元素设置一个定时器,如果簇首节点在一个元素的定时器过期之前收到了该元素的信标消息,即该元素属于该信标消息的名字集合,那么簇首节点重新设置定时器,否则从本簇名字前缀集合中删除该元素;

然后执行下述步骤建立转发表:

步骤101:开始;

步骤102:簇首节点构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点从每一个与数据路由器相连的有线接口发送该发布消息;

步骤103:邻居数据路由器从接口f接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中创建一个转发表项,该转发表项的源路由器ID为发布消息负载中的路由器ID,接口域值为f,名字前缀集合为发布消息中的名字集合域值;

步骤104:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤106,否则执行步骤105;

步骤105:邻居数据路由器从除了接口f之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤103;

步骤106:结束。

上述过程可以快速建立转发表从而实现数据通信。

图2为本发明所述的移动流程示意图。在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1的条件下,如果节点M1从簇CL1移动到CL2,那么节点M1收到簇首节点CH2的信标消息后保存簇首节点CH2的路由器ID,然后执行下述过程:

步骤201:开始;

步骤202:节点M1从无线接口发送一个信标消息,该信标消息的名字集合为它名字的名字前缀,消息类型为0,跳数为1,负载为簇首节点CH2的路由器ID;

步骤203:簇首节点CH2接收到信标消息后,查看自己的本簇名字前缀集合,如果本簇名字前缀集合不包含信标消息中的名字集合中的名字前缀,那么执行步骤204,否则执行步骤207;

步骤204:簇首节点CH2将信标消息中名字集合中的名字前缀加入到自己的本簇名字前缀集合中,然后构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH2从每一个与数据路由器相连的有线接口发送该发布消息;

步骤205:邻居数据路由器从自己的接口f1接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,将该转发表项的接口域值更新为f1,名字前缀集合更新为发布消息中的名字集合域值;

步骤206:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤208,否则执行步骤207;

步骤207:邻居数据路由器从除了接口f1之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤205;

步骤208:结束。

图3为本发明所述的移动切换流程示意图。在簇CL1的簇首节点为CH1,簇CL2的簇首节点CH2,传感节点或者执行节点M1的名字前缀为NP1,节点M1为簇CL1的簇内节点且簇CL1中只有传感节点或者执行节点M1的名字前缀为NP1条件下,如果节点M1从簇CL1移动到CL2,那么簇首节点CH1执行下述过程:

步骤301:开始;

步骤302:如果簇首节点CH1检测到名字前缀NP1的定时器过期,则从本簇名字前缀集合将名字前缀NP1删除;簇首节点CH1构建一个发布消息,发布消息的名字集合域为本簇名字前缀集合,消息类型为1,跳数为d/r,d为网络直径,r为传输半径,负载为自己的路由器ID;簇首节点CH1从每一个与数据路由器相连的有线接口发送该发布消息;

步骤303:邻居数据路由器从自己的接口f2接收到该发布消息后,将发布消息中的跳数值递减1,在转发表中查找源路由器ID值等于发布消息负载中的路由器ID的转发表项,然后将该转发表项的接口域值更新为f2,名字前缀集合更新为发布消息中的名字集合域值;

步骤304:邻居数据路由器判断发布消息中的跳数值是否为0,如果是,执行步骤306,否则执行步骤305;

步骤305:邻居数据路由器从除了接口f2之外的所有与其他数据路由器相连的有线接口发送该发布消息,执行步骤303;

步骤306:结束;

每个簇首节点维护一个数据表,每个数据表项由名字域,数据域和生命周期域。

图4为本发明所述的数据推动流程示意图。传感节点定期收集感知到的数据,然后执行下述数据推送操作:

步骤401:开始;

步骤402:传感节点构建数据推送消息,该数据推送消息的名字集合由该传感节点的名字构成,消息类型为2,跳数为1,负载为感知到的数据,然后从无线接口发送该数据推送消息;

步骤403:与传感节点位于相同簇的簇首节点接收到数据推送消息后,在数据表中创建一个数据表项,该数据表项的名字域值为数据推送消息中名字集合的名字,数据域为数据推送消息负载中的数据,生命周期为最大值,例如10min;

步骤404:结束;

如果簇首节点检测到一个数据表项的生命周期衰减到0,那么删除该数据表项。

上述过程能够实现数据推送过程,从而用户可以快速获取所需数据。

图5为本发明所述的获取数据流程示意图。每个数据路由器保存一个聚合表,一个聚合表项包括名字集合域和接口域;

用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1需要获取名字集合S1定义的数据,名字集合S1的名字前缀集合为NPS1,那么用户设备U1执行下述过程:

步骤501:开始;

步骤502:用户设备U1构建一个数据请求消息,该数据请求消息的名字集合为S1,消息类型为3,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该数据请求消息;

步骤503:簇首节点CH3从接口f3接收到该数据请求消息后,将数据请求消息中的跳数递减1,然后判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤504,否则执行步骤506;

条件1:数据表项的名字域值属于数据请求消息中的名字集合;

步骤504:簇首节点CH3构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为1,负载为符合条件1的数据表项中的数据域值;簇首节点CH3从接口f3发送数据响应消息;

步骤505:簇首节点CH3从数据请求消息的名字集合中减去数据响应消息中的名字集合;如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤506;

步骤506:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤507;

步骤507:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤508,否则执行步骤509;

步骤508:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤509:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为数据请求消息的名字集合;簇首节点CH3构建一个名字集合S2,其值为数据请求消息的名字集合,名字集合S2的名字前缀集合为NPS2,然后对于集合NPS2中的任一个名字前缀P,簇首节点CH3进行如下操作:

簇首节点从集合S2中选择名字前缀为P的所有名字并用这些名字构建成名字集合S3,从转发表中选择名字前缀集合包含名字前缀P的所有转发表项,对于每一个名字前缀集合包含名字前缀P的转发表项,簇首节点CH3构建一个数据请求消息,该数据请求消息的名字集合为集合S3,消息类型为3,跳数为d/r+2,负载为空;簇首节点从该转发表项的接口域发送构建的数据请求消息;

步骤510:邻居数据路由器从接口f4接收到该数据请求消息后,将数据请求消息中的跳数递减1,判断数据表中是否存在满足条件1的数据表项,如果是,执行步骤511,否则执行步骤513;

步骤511:邻居数据路由器构建一个数据响应消息,该数据响应消息的名字集合为符合条件1的数据表项的名字域集合,消息类型为4,跳数为d/r+2,负载为符合条件1的数据表项中的数据域值,然后从接口f4发送数据响应消息;

步骤512:邻居数据路由器从数据请求消息的名字集合中减去数据响应消息中的名字集合,如果数据响应消息的名字集合等于数据请求消息中的名字集合,那么执行步骤518,否则执行步骤513;

步骤513:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤518,否则执行步骤514;

步骤514:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为数据请求消息的名字集合域值的超集,那么执行步骤515,否则执行步骤516;

步骤515:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,执行步骤518;

步骤516:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为数据请求消息的名字集合,如果数据请求消息中的跳数为0,则执行步骤518,否则执行步骤517;

步骤517:邻居数据路由器从转发表中选择名字前缀集合包含数据请求消息名字集合的名字前缀的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含数据请求消息名字集合的名字前缀的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的数据请求消息,执行步骤510;

步骤518:如果用户设备U1接收到数据响应消息,执行步骤520,否则执行步骤519;

步骤519:对于数据响应消息名字集合中的每一个名字N,数据路由器创建一个数据表项,该数据表项的名字域值为名字N,数据域为名字N定义的数据,生命周期设置为最大值;对于每个名字集合为数据响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的数据响应消息,然后从该聚合表项的名字集合中减去数据响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤518;

步骤520:用户设备U1收到所有数据响应消息后,保存数据响应消息中的数据从而获取名字集合S1定义的数据;

步骤521:结束。

上述过程能够确保用户可以快速获取所需数据。

图6为本发明所述的执行命令流程示意图。用户设备U1为簇CL3的簇内节点,簇CL3的簇首节点为CH3;如果用户节点U1想要执行节点执行一种操作,例如关灯,所述执行节点的名字集合为SA1,名字集合SA1的名字前缀集合为NPSA1,那么用户设备U1执行下述过程:

步骤601:开始;

步骤602:用户设备U1构建一个命令请求消息,该命令请求消息的名字集合为SA1,消息类型为5,跳数为d/r+2,d为网络直径,r为传输半径,负载为簇首节点CH3的路由器ID;用户设备U1从无线接口发送该命令请求消息;

步骤603:簇首节点CH3从接口f3接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤606,否则执行步骤604;

步骤604:簇首节点CH3从接口f3转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E的名字前缀和名字ID,则执行元素E的命令域值,例如关灯,然后从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E的名字,消息类型为6,跳数为2,负载为簇首节点CH3的路由器ID;

步骤605:簇首节点CH3接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果簇首节点CH3收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤606;

步骤606:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤607;

步骤607:如果簇首节点CH3检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤608,否则执行步骤609;

步骤608:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤609:簇首节点CH3创建一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合;簇首节点CH3构建一个名字集合SA2,其值为命令请求消息的名字集合,名字集合SA2的名字前缀集合为NPSA2,然后对于集合NPSA2中的任一个名字前缀PA,簇首节点CH3进行如下操作:

簇首节点从集合SA2中选择名字前缀为PA的所有名字并用这些名字构建成名字集合SA3,然后从转发表中选择名字前缀集合包含名字前缀PA的所有转发表项,对于每一个名字前缀集合包含名字前缀PA的转发表项,簇首节点CH3构建一个命令请求消息,该命令请求消息的名字集合为集合SA3,消息类型为5,跳数为d/r+2,负载为空,然后从该转发表项的接口域发送构建的命令请求消息;

步骤610:邻居数据路由器从接口f4接收到该命令请求消息后,将命令请求消息中的跳数递减1,然后判断自己维护的本簇名字前缀集合与命令请求消息名字集合的名字前缀集合是否为空,如果是,执行步骤613,否则执行步骤611;

步骤611:邻居数据路由器从无线接口转发命令请求消息,如果接收到命令请求消息的执行节点的名字前缀和名字ID等于命令请求消息的名字集合的一个元素E1的名字前缀和名字ID,则执行元素E1的命令域值,例如关灯,;邻居数据路由器从无线接口发送一个命令响应消息,该命令响应消息名字集合为元素E1的名字,消息类型为6,跳数为d/r+1,负载为邻居数据路由器的路由器ID;

步骤612:邻居数据路由器接收到命令响应消息后,从命令请求消息的名字集合中减去所有收到的命令响应消息中的名字集合,如果邻居数据路由器收到的命令响应消息个数等于命令请求消息名字集合的元素个数,那么执行步骤618,否则执行步骤613;

步骤613:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的接口域值为f3,名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤618,否则执行步骤614;

步骤614:如果邻居数据路由器检测到存在一个聚合表项,该聚合表项的名字集合域值为命令请求消息的名字集合域值的超集,那么执行步骤615,否则执行步骤616;

步骤615:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,执行步骤618;

步骤616:邻居数据路由器创建一个聚合表项,该聚合表项的接口域值为f4,名字集合域值为命令请求消息的名字集合,如果命令请求消息中的跳数为0,则执行步骤618,否则执行步骤617;

步骤617:邻居数据路由器从转发表中选择名字前缀集合包含命令请求消息名字集合的名字前缀集合的所有转发表项,对于每一个接口域值不等于f4且名字前缀集合包含命令请求消息名字集合的名字前缀集合的转发表项,邻居数据路由器从该转发表项的接口域发送接收到的命令请求消息,执行步骤610;

步骤618:如果用户设备U1接收到命令响应消息,执行步骤620,否则执行步骤619;

步骤619:对于每个名字集合为命令响应消息名字集合的超集的聚合表项,数据路由器从该聚合表项的接口域转发接收到的命令响应消息,从该聚合表项的名字集合中减去命令响应消息的名字集合;如果该聚合表项的名字集合为空,则删除该聚合表项;执行步骤618;

步骤620:用户设备U1收到所有命令响应消息以确认执行节点已经收到命令请求消息并执行了响应操作;

步骤621。

用户通过上述过程能够让执行节点快速准确地执行远程命令。

实施例1

基于表1的仿真参数,本实施例模拟了本发明中的物联网数据传输方法,性能分析如下:当用户与目的节点距离较远时,平均通信代价和延迟也随之增加,通信半径增加时,平均通信代价和延迟也随之降低。平均通信代价为8,路由延迟为80ms。

表1仿真参数

本发明提供了一种物联网数据传输方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。

一种物联网数据传输方法专利购买费用说明

专利买卖交易资料

Q:办理专利转让的流程及所需资料

A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。

1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。

2:按规定缴纳著录项目变更手续费。

3:同时提交相关证明文件原件。

4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。

Q:专利著录项目变更费用如何缴交

A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式

Q:专利转让变更,多久能出结果

A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。

动态评分

0.0

没有评分数据
没有评价数据
×

打开微信,点击底部的“发现”

使用“扫一扫”即可将网页分享至朋友圈

×
复制
用户中心
我的足迹
我的收藏

您的购物车还是空的,您可以

  • 微信公众号

    微信公众号
在线留言
返回顶部