1.一种多媒体传感网的实现方法,其特征在于,所述传感网包括传感节点,传感节点包括三种,多媒体传感节点、普通传感节点和汇聚传感节点;多媒体传感节点配置能够采集多媒体数据的硬件,所述硬件能够产生,保存和提供多媒体数据;普通传感节点用于执行转发功能,不能提供多媒体数据,汇聚传感节点保存和提供多媒体数据;
一种类型的数据由一个名称ID唯一标识,数据属性包含版本号和数据所在区域,数据所在区域由横坐标区间和纵坐标区间标识;一个数据名称由名称ID和数据属性构成;
每个传感节点具有唯一的硬件ID,该硬件ID为该传感节点的MAC地址,坐标为预先配置;
传感节点SN1的坐标为(x1,y1),x1和y1为正整数;传感节点SN2的坐标为(x2,y2),x2和y2是正整数;传感节点SN1和传感节点SN2的距离d1由公式(1)定义;
长方形区域由横坐标区间[x3,x4]和纵坐标区间[y3,y4]定义,传感节点SN1到该长方形区域的距离d2由公式(2)定义;
每个传感节点保存一个邻居表,一个邻居表项包含硬件ID域、坐标域、队列长度域、剩余能量域和生命周期域;
传感节点采用消息来实现通信,每个消息由消息类型来确定,每个消息结构由消息类型来确定;消息类型如下所示:传感节点采用信标消息来建立邻居表,信标消息包含消息类型、源硬件ID域、源坐标域和负载域,信标消息的消息类型为1;
传感节点通过下述过程建立邻居表:
步骤101:开始;
步骤102:传感节点定期广播信标消息,该信标消息的消息类型为1,源硬件ID和坐标分别为该传感节点的硬件ID和坐标,负载包括该传感节点当前可用的队列长度以及剩余能量;
步骤103:邻居传感节点收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该信标消息的源硬件ID,则执行步骤104,否则执行步骤105;
步骤104:收到信标消息的邻居传感节点选择一个邻居表项,该邻居表项的硬件ID等于该信标消息的源硬件ID,将该邻居表项的坐标域更新为该信标消息的源坐标,队列长度域和剩余能量域分别更新为该信标消息负载中的当前可用队列长度和剩余能量,将生命周期设置为最大值,执行步骤106;
步骤105:收到信标消息的邻居传感节点创建一个邻居表项,该邻居表项的硬件ID等于该信标消息的源硬件ID,将该邻居表项的坐标域为该信标消息的源坐标,队列长度域和剩余能量域分别为该信标消息负载中的当前可用队列长度和剩余能量,生命周期设置为最大值;
步骤106:结束。
2.根据权利要求1所述的一种多媒体传感网的实现方法,其特征在于,传感节点SN1的邻居表中有N个邻居表项,N为正整数;针对横坐标区间[x5,x6]和纵坐标区间[y5,y6]所确定的长方形区域R5,传感节点SN1利用公式(3)计算第i个邻居表项相对于长方形区域R5的权值Wi-R5,i取值1~N;
Wi-R5=n1·(1-qi/qmax)+n2·ei/emax+n3·(1-di-R5/dSN1-R5) 公式(3)公式(3)中,n1,n2和n3是调节系数,且n1+n2+n3=1,qi是第i个邻居表项的队列长度域值;qmax为一个队列的最大长度,ei为第i个邻居表项的剩余能量域值,emax为一个传感节点启动时的最大能量值,di-R5为第i个邻居表项的坐标域值与长方形区域R5之间的距离,dSN1-R5为传感节点SN1的坐标与长方形区域R5之间的距离,且满足di-R5/dSN1-R5<1;
传感节点SN1的邻居表中有N个邻居表项,针对汇聚传感节点AN1,传感节点SN1利用公式(4)计算第j个邻居表项相对于汇聚传感节点AN1的权值Wj-AN1,j取值1~N;
Wj-AN1=m1·(1-qj/qmax)+m2·ej/emax+m3·(1-dj-AN1/dSN1-AN1) 公式(4)公式(4)中,m1,m2和m3是调节系数,且m1+m2+m3=1,qj是第j个邻居表项的队列长度域值,qmax为一个队列的最大长度,ej为第j个邻居表项的剩余能量域值,emax为一个传感节点启动时的最大能量值,dj-AN1为第j个邻居表项的坐标域值与汇聚传感节点AN1之间的距离,dSN1-AN1为传感节点SN1的坐标与汇聚传感节点AN1之间的距离,且满足dj-AN1/dSN1-AN1<1。
3.根据权利要求1所述的一种多媒体传感网的实现方法,其特征在于,每个传感节点维护一个汇聚节点表,每个汇聚节点表项包含坐标域,硬件ID域和生命周期域;
传感节点采用发布消息来建立汇聚节点表,发布消息包含消息类型域、源硬件ID域、源坐标域和负载域,发布消息的消息类型域值为2;
一个汇聚传感节点启动后,通过下述过程建立汇聚节点表:
步骤201:开始;
步骤202:汇聚传感节点发送一个发布消息,该发布消息的消息类型为2,源硬件ID域值为该汇聚传感节点的硬件ID,源坐标域值等于该汇聚传感节点的坐标,负载为生命周期域值;
步骤203:接收到发布消息的传感节点查看汇聚节点表,判断是否存在一个汇聚节点表项,该汇聚节点表项的硬件ID等于该发布消息的源硬件ID,如果存在,则执行步骤204,否则执行步骤206;
步骤204:接收到发布消息的传感节点选择一个汇聚节点表项,该汇聚节点表项的硬件ID等于该发布消息的源硬件ID,判断该汇聚节点表项的生命周期与该发布消息负载中的生命周期之差的绝对值是否小于预定值TS1,如果是,则执行步骤208,否则执行步骤205;
步骤205:接收到发布消息的传感节点选择一个汇聚节点表项,该汇聚节点表项的硬件ID等于该发布消息的源硬件ID,该传感节点将该汇聚节点表项的生命周期设置为该发布消息负载中的生命周期值,执行步骤207;
步骤206:接收到发布消息的传感节点创建一个汇聚节点表项,该汇聚节点表项的硬件ID等于该发布消息的源硬件ID,坐标域值等于该发布消息的源坐标,生命周期设置为该发布消息负载中的生命周期值;
步骤207:接收到发布消息的传感节点将该发布消息转发到邻居传感节点,执行步骤
203;
步骤208:结束。
4.根据权利要求1所述的一种多媒体传感网的实现方法,其特征在于,每个汇聚传感节点保存一个数据表,每个数据表项包含名称ID域、版本号域、坐标域、数据域和生命周期域;
多媒体传感节点采用上传消息来上传产生的多媒体数据;
上传消息由消息类型域、数据名称域、数据属性域、目的硬件ID域、最终硬件ID域、最终坐标域和数据域构成;
数据C1由名称ID NID1唯一标识,数据C1的数据属性A1的版本号为v1,数据所在区域由横坐标区间[x5,x6]和纵坐标区间[y5,y6]标识;数据名称NA1由名称ID NID1和数据属性A1构成;
多媒体传感节点MN1的坐标为(xMN1,yMN1)且满足x5≤xMN1≤x6,y5≤yMN1≤y6,它产生数据C1后通过下述过程上传数据C1:步骤301:开始;
步骤302:多媒体传感节点MN1查看汇聚节点表,选择一个汇聚节点表项,多媒体传感节点MN1在所有汇聚节点表项中距离该汇聚节点表项的坐标距离最近,该汇聚节点表项所标识的汇聚传感节点为AN2;多媒体传感节点MN1构建一个数据名称,该数据名称的数据ID为NID1,数据属性的版本号为v1,数据所在区域由横坐标区间[xMN1,xMN1]和纵坐标区间[yMN1,yMN1]标识;多媒体传感节点MN1查看邻居表,对于每个邻居表项,多媒体传感节点MN1根据公式(4)计算该邻居表项相对于汇聚传感节点AN2的权值,选择权值最大的邻居表项;多媒体传感节点MN1发送一个上传消息,该上传消息的消息类型为3,名称域值为构建的名称,目的硬件ID等于该邻居表项的硬件ID,最终硬件ID和最终坐标分别等于选中的汇聚节点表项的硬件ID和坐标域值,数据域值等于数据C1;
步骤303:接收到上传消息的传感节点判断自己的硬件ID是否等于该上传消息的目的硬件ID,如果是,则执行步骤304,否则执行步骤305;
步骤304:接收到上传消息的传感节点丢弃该上传消息,执行步骤310;
步骤305:接收到上传消息的传感节点判断自己的硬件ID是否等该上传消息的最终硬件ID,如果是,则执行步骤307,否则执行步骤306;
步骤306:接收到上传消息的传感节点选择一个汇聚节点表项,该汇聚节点表项的硬件ID等于该上传消息的最终硬件ID,该汇聚节点表项所标识的汇聚传感节点为AN2;对于每个邻居表项,该传感节点根据公式(4)计算该邻居表项相对于汇聚传感节点AN2的权值,选择权值最大的邻居表项,将该上传消息的目的硬件ID更新为该邻居表项的硬件ID域值,转发该上传消息,执行步骤303;
步骤307:接收到上传消息的传感节点查看数据表,如果存在一个数据表项,该数据表项的名称ID等于该上传消息名称域值的名称ID,坐标域值的横坐标等于该上传消息名称域值的横坐标区间的下限,坐标域值的纵坐标等于该上传消息名称域值的纵坐标区间的下限,则执行步骤308,否则执行步骤309;
步骤308:接收到上传消息的传感节点选择一个数据表项,该数据表项的名称ID等于该上传消息名称域值的名称ID,坐标域值的横坐标等于该上传消息名称域值的横坐标区间的下限,坐标域值的纵坐标等于该上传消息名称域值的纵坐标区间的下限,将该数据表项的版本号更新为该上传消息名称域值的版本号,将数据域值更新为该上传消息的数据域值,将生命周期设置为最大值,执行步骤310;
步骤309:接收到上传消息的传感节点创建一个数据表项,该数据表项的名称ID等于该上传消息名称域值的名称ID,坐标域值的横坐标等于该上传消息名称域值的横坐标区间的下限,坐标域值的纵坐标等于该上传消息名称域值的纵坐标区间的下限,版本号等于该上传消息名称域值的版本号,数据域值等于该上传消息的数据域值,生命周期设置为最大值;
步骤310:结束。
5.根据权利要求1所述的一种多媒体传感网的实现方法,其特征在于,数据C1由名称NA1标识,名称NA1中,名称ID为NID1,版本为v1,横坐标区间为[x5,x6],纵坐标区间为[y5,y6];
传感节点采用请求消息和响应消息来获取数据;请求消息包含消息类型、数据名称域、目的硬件ID域、源硬件ID域和负载域,请求消息的消息类型值为4;响应消息包含消息类型、数据名称域、目的硬件ID域、源硬件ID域和数据域,响应消息的消息类型值为5;
每个传感节点维护一个请求表,每个请求表项包含数据名称域,下一跳域和生命周期域;
数据C1由名称ID NID1唯一标识,数据C1的数据属性A1的版本号为v1,数据所在区域由横坐标区间[x5,x6]和纵坐标区间[y5,y6]标识;数据名称NA1由名称ID NID1和数据属性A1构成;
传感节点SN1的坐标为(xSN1,ySN1),如果满足x5≤xSN1≤x6和y5≤ySN1≤y6,传感节点SN1通过下述过程获取数据C1:步骤401:开始;
步骤402:传感节点SN1发送请求消息,消息类型值为4,数据名称域值为NA1,目的硬件ID为0,源硬件ID为传感节点SN1的硬件ID,负载为空;
步骤403:如果接收到该请求消息的传感节点位于该请求消息数据名称域的数据属性的数据所在区域内,则执行步骤405,否则执行步骤404;
步骤404:接收到该请求消息的传感节点丢弃该请求消息,执行步骤411;
步骤405:接收到该请求消息的传感节点判断自己是否能提供该请求消息数据名称域的名称ID所标识的数据,如果是,则执行步骤406,否则执行步骤407;
步骤406:接收到该请求消息的传感节点发送响应消息,该响应消息的消息类型为5,数据名称域值等该请求消息的数据名称域值,目的硬件ID域值等于该请求消息的源硬件ID域值,源硬件ID域值等于该传感节点的硬件ID,数据域值等于该请求消息数据名称域值的名称ID所标识的数据,执行步骤411;
步骤407:接收到该请求消息的传感节点查看请求表,如果存在一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值且下一跳域值等于该请求消息的源硬件ID,则执行步骤408,否则执行步骤409;
步骤408:接收到该请求消息的传感节点选择一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值且下一跳域值等于该请求消息的源硬件ID,将该请求表项的生命周期设置为最大值,执行步骤411;
步骤409:接收到该请求消息的传感节点创建一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值,下一跳域值等于该请求消息的源硬件ID,生命周期设置为最大值;如果请求表中至少存在两个数据名称域值等于该请求消息数据名称的请求表项,则执行步骤411,否则执行步骤410;
步骤410:接收到该请求消息的传感节点将该请求消息的源硬件ID更新为它自己的硬件ID,然后转发该请求消息,执行步骤403;
步骤411:接收到响应消息的传感节点判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果是,则执行步骤413,否则执行步骤412;
步骤412:接收到响应消息的传感节点丢弃该响应消息,执行步骤416;
步骤413:接收到响应消息的传感节点选择所有数据名称域值等于该响应消息的数据名称域值的请求表项,如果选中的请求表项的数量等于0,则执行步骤415,否则执行步骤
414;
步骤414:如果接收到响应消息的传感节点需要获取该响应消息中的数据,则保存该响应消息中的数据;对于每个选中的请求表项,该传感节点将该响应消息的目的硬件ID更新为该请求表项的下一跳域值,源硬件ID更新为自己的硬件ID,转发该响应消息,执行步骤
411;
步骤415:接收到响应消息的传感节点保存该响应消息中的数据;
步骤416:结束。
6.根据权利要求1所述的一种多媒体传感网的实现方法,其特征在于,数据C1由名称ID NID1唯一标识,数据C1的数据属性A1的版本号为v1,数据所在区域由横坐标区间[x5,x6]和纵坐标区间[y5,y6]标识;数据名称NA1由名称ID NID1和数据属性A1构成;
传感节点SN2的坐标为(xSN2,ySN2),如果不满足x5≤xSN2≤x6或者y5≤ySN2≤y6,传感节点SN2通过下述过程获取数据C1:步骤501:开始;
步骤502:传感节点SN2查看汇聚节点表,选择一个汇聚节点表项,该汇聚节点表项的坐标与数据名称NA1中的数据属性A1的数据所在区域距离最近,该汇聚节点表项所标识的汇聚节点为AN3;传感节点SN2查看邻居表,对于每个邻居表项,传感节点SN2根据公式(4)计算该邻居表项相对于汇聚传感节点AN3的权值,选择权值最大的邻居表项;传感节点SN2发送请求消息,消息类型值为4,数据名称域值为NA1,目的硬件ID为该邻居表项的硬件ID域值,源硬件ID为传感节点SN2的硬件ID,负载为该汇聚节点表项的硬件ID域值和坐标域值;
步骤503:判断接收到请求消息的传感节点的硬件ID是否等于该请求消息的目的硬件ID,如果是则执行步骤505,否则执行步骤504;
步骤504:接收到请求消息的传感节点丢弃该请求消息,执行步骤523;
步骤505:判断接收到该请求消息的传感节点是否位于该请求消息数据名称域的数据属性的数据所在区域内,如果是,则执行步骤517,否则执行步骤506;
步骤506:判断接收到该请求消息的传感节点的硬件ID是否等于该请求消息负载中的硬件ID,如果是,则执行步骤507,否则执行步骤509;
步骤507:接收到该请求消息的传感节点查看数据表,如果至少存在一个数据表项,该数据表项的名称ID与版本号等于该请求消息的数据名称中的名称ID和数据属性中的版本号且坐标域值属于该请求消息的数据名称中的数据属性中的数据所在区域,则执行步骤
508,否则执行步骤509;
步骤508:接收到该请求消息的传感节点选择所有符合下述条件的数据表项:该数据表项的名称ID与版本号等于该请求消息的数据名称中的名称ID和数据属性中的版本号,且坐标域值属于该请求消息的数据名称中的数据属性中的数据所在区域;针对每个选中的数据表项,该传感节点发送响应消息,该响应消息的消息类型值为5,数据名称域值等该请求消息的数据名称域值,目的硬件ID域值等于该请求消息的源硬件ID域值,源硬件ID域值等于该传感节点的硬件ID,数据域值等于该数据表项的数据域值,执行步骤523;
步骤509:接收到该请求消息的传感节点查看请求表,如果存在一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值,且下一跳域值等于该请求消息的源硬件ID,则执行步骤510,否则执行步骤511;
步骤510:接收到该请求消息的传感节点选择一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值,且下一跳域值等于该请求消息的源硬件ID,将该请求表项的生命周期设置为最大值,执行步骤523;
步骤511:接收到该请求消息的传感节点创建一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值,下一跳域值等于该请求消息的源硬件ID,生命周期设置为最大值;如果请求表中至少存在两个数据名称域值等于该请求消息数据名称的请求表项,则执行步骤523,否则执行步骤512;
步骤512:接收到该请求消息的传感节点判断该请求消息负载是否为空,如果是,则执行步骤513,否则执行步骤514;
步骤513:接收到该请求消息的传感节点查看邻居表,对于每个邻居表项,该传感节点根据公式(3)计算该邻居表项相对于该请求消息数据名称中的数据属性的数据所在区域的权值,选择权值最大的邻居节点,将该请求消息的目的硬件ID设置为该邻居表项的硬件ID,将该请求消息的源硬件ID设置为自己的硬件ID,转发该请求消息,执行步骤503;
步骤514:判断接收到请求消息的传感节点的硬件ID是否等于该请求负载中的硬件ID,如果是,则执行步骤515,否则执行步骤516;
步骤515:接收到该请求消息的传感节点将该请求消息负载设置为空,查看邻居表,对于每个邻居表项,该传感节点根据公式(3)计算该邻居表项相对于该请求消息数据名称中的数据属性的数据所在区域的权值,选择权值最大的邻居节点,将该请求消息的目的硬件ID设置为该邻居表项的硬件ID,将该请求消息的源硬件ID设置为自己的硬件ID,转发该请求消息,执行步骤503;
步骤516:接收到该请求消息的传感节点查看邻居表,对于每个邻居表项,该传感节点根据公式(4)计算该邻居表项相对于该请求消息负载中硬件ID所标识的汇聚传感节点的权值,选择权值最大的邻居节点,将该请求消息的目的硬件ID设置为该邻居表项的硬件ID,将该请求消息的源硬件ID设置为自己的硬件ID,转发该请求消息,执行步骤503;
步骤517:接收到请求消息的传感节点将该请求消息的目的硬件ID设置为0,接收到该请求消息的传感节点判断自己是否能提供该请求消息数据名称域的名称ID所标识的数据,如果是,则执行步骤518,否则执行步骤519;
步骤518:接收到该请求消息的传感节点发送响应消息,该响应消息的消息类型为5,数据名称域值等该请求消息的数据名称域值,目的硬件ID域值等于该请求消息的源硬件ID域值,源硬件ID域值等于该传感节点的硬件ID,数据域值等于该请求消息数据名称域值的名称ID所标识的数据,执行步骤523;
步骤519:接收到该请求消息的传感节点查看请求表,如果存在一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值且下一跳域值等于该请求消息的源硬件ID,则执行步骤520,否则执行步骤521;
步骤520:接收到该请求消息的传感节点选择一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值且下一跳域值等于该请求消息的源硬件ID,将该请求表项的生命周期设置为最大值,执行步骤523;
步骤521:接收到该请求消息的传感节点创建一个请求表项,该请求表项的数据名称域值等于该请求消息的数据名称域值,下一跳域值等于该请求消息的源硬件ID,生命周期设置为最大值;如果请求表中至少存在两个数据名称域值等于该请求消息数据名称的请求表项,则执行步骤523,否则执行步骤522;
步骤522:接收到该请求消息的传感节点将该请求消息的源硬件ID更新为它自己的硬件ID,然后转发该请求消息;如果接收到该请求消息的传感节点位于该请求消息数据名称中的数据属性的数据所在区域内,则执行步骤517,否则执行步骤523;
步骤523:接收到响应消息的传感节点判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果是,则执行步骤525,否则执行步骤524;
步骤524:接收到响应消息的传感节点丢弃该响应消息,执行步骤528;
步骤525:接收到响应消息的传感节点选择所有数据名称域值等于该响应消息的数据名称域值的请求表项,如果选中的请求表项的数量等于0,则执行步骤527,否则执行步骤
526;
步骤526:如果接收到响应消息的传感节点想获取该响应消息中的数据,则保存该响应消息中的数据;对于每个选中的请求表项,该传感节点将该响应消息的目的硬件ID更新为该请求表项的下一跳域值,源硬件ID更新为自己的硬件ID,转发该响应消息,执行步骤523;
步骤527:接收到响应消息的传感节点保存该响应消息中的数据;
步骤528:结束。