本发明涉及物联网技术领域,具体地说,涉及一种LoRaWAN处理多网关数据重复发送的方法。
背景技术:
LoRa是Semtech公司提出的一种低功耗物联网技术,广泛应用于无线抄表等领域。LoRaWAN采用LoRa技术构建低功耗无线互联广域网。LoRaWAN终端先把数据通过无线电波发送给基站,基站再通过以太网发送给LoRaWAN服务器处理。在实际布网时,LoRaWAN终端发出的无线电波很可能被多个基站同时接收到,这样的话就会出现LoRaWAN终端的数据被重复发送到LoRaWAN服务器的情况,这种情况必须进行处理。
现有技术方案是通过LoRaWAN终端报上来的数据中的帧号来判断是否是重复发送的数据,如果报上来的帧号小于保存在服务器中的该终端的帧号,则认为是重复发送,丢弃不进行处理。
由于无线网络不稳定,会出现丢帧的情况,LoRaWAN终端中的帧号和服务器的帧号无法保持一致,因此采用帧号确认的方式并不能保证处理的准确性。
技术实现要素:
本发明的目的在于提供一种LoRaWAN处理多网关数据重复发送的方法,在服务器收到终端上传数据时,100ms内如收到该终端通过另外基站发送过来的数据,认为是同一个数据通过多个基站做的发送,选取一个信号(如SNR)最好的处理,其余丢弃。
为实现上述技术目的,达到上述技术效果,其技术方案具体为:
一种LoRaWAN处理多网关数据重复发送的方法,LoRaWAN服务器收到终端上传数据时,进行如下处理,具体步骤为:
步骤1、把该数据解密后,存入一个保存在服务器缓存中的集合set1.该集合以终端的唯一标识devEUI和本次终端上传数据的唯一标识MIC校验值作为标记,这样能确保每个终端的每次数据有唯一的集合;
步骤2、处理协程等待100ms,并把在100ms内收到的该终端的MIC值相同的数据进行解密,存入集合set1;
步骤3、在100ms后,把set1中的数据按SNR排序,选出SNR最好的一个数据,认为这是由信号最好的网关传上来的;同时删除缓存中的集合set1,避免服务器缓存被撑爆;
步骤4、LoRaWAN服务器只处理步骤3中选出的SNR最好的数据,后续处理包括存入数据库、透传给接入的应用。
本发明具有以下有益效果:
1、实际使用表明,能够有效解决多基站数据重复上报数据的问题。
2、选择信号最好的基站进行处理,下行数据时也能选择到信号最好的基站,可以提升数据下行的成功率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。
LoRaWAN服务器收到终端上传数据时,进行如下处理:
1 把该数据解密后,存入一个保存在服务器缓存中的集合set1.该集合以终端的唯一标识devEUI和本次终端上传数据的唯一标识MIC校验值作为标记,这样能确保每个终端的每次数据有唯一的集合;
2 处理协程等待100ms,并把在100ms内收到的该终端的MIC值相同的数据进行解密,存入集合set1;
3 在100ms后,把set1中的数据按SNR排序,选出SNR最好的一个数据,认为这是由信号最好的网关传上来的;同时删除缓存中的集合set1,避免服务器缓存被撑爆;
4 LoRaWAN服务器只处理第3步中选出的SNR最好的数据,后续处理包括存入数据库、透传给接入的应用等;
下面是终端数据经过多个基站上发的服务器日志:
CRCStatus=[1 1]Channel=[2 2]CodeRate="4/5,4/5"Frequency=[472700000 472700000]LoRaSNR=[7 -1.2]RFChain=[1 1]RSSI=[-97 -105]dev_eui=0000000000045b8f gw_count=2 gw_macs="b827ebfffe42e24c,b827ebfffe276da1"mtype=ConfirmedDataUp time_s=[0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC]tims_stamp=3292834443
该终端0000000000045b8f上传数据,有两个相邻基站(b827ebfffe42e24c,b827ebfffe276da1)都接收到并传送给服务器了,经过本发明的处理,最终只处理、存储了一条数据,很好地达到了防止重复处理的目的:
{00000000045b8f 2017-02-2120:08:41\x688909243d000000000ff b827ebfffe42e24c 7 -97 2441 1315 1171 4727 5}
以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。