本发明涉及定位技术,具体涉及一种基于mqtt的室内定位系统。
背景技术:
mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)是一种基于发布/订阅模式的轻量级通信协议,可以以极少的代码和有限的带宽,为远程设备提供实时可靠的服务。在物联网、移动互联网、车联网等领域得到广泛的应用。
现有的定位技术,数据传输与定位分两套系统展开,即,设备需要有一路无线手段进行正常的通讯,传输和接收数据,如获得自己所在的位置,订阅地图信息;另一路专门进行定位,无论是主动搜寻卫星,还是基站,如蓝牙定位,被蓝牙基站搜索,gps定位,搜索卫星,计算距离。通讯链路增多,势必会导致管理困难,需要每个设备单独建立通道,单独管理,占用较大通讯资源,给服务端/网络均带来较大并发压力,影响整个定位系统的成本和传输效率。
然而由于在mqtt协议里,所有的消息都是广播。广播就意味着,不论定位数据是发给谁的,网内的所有mqtt客户端都可以收到此定位数据。不仅造成网络资源浪费,也缺乏安全。
另外定位器启动后就不停的采样,如何更好的利用采样数据,防止资源浪费,也成为待解决的问题。
技术实现要素:
鉴于现有技术中存在的技术缺陷和技术弊端,本发明实施例提供克服上述问题或者至少部分地解决上述问题的一种基于mqtt的室内定位系统,具体方案如下:
一种基于mqtt的室内定位系统,其特征在于,所述系统包括标签、定位器、mqtt服务器、采样服务器、终端和数据库,所述数据库中存储着每个账户的发布和订阅权限,所述发布和订阅权限包括账号id,所述终端仅能发布和订阅包含对应账号id的消息;
所述标签位于待定位设备上,用于周期性的发射无线信号波;
所述定位器用于发现并识别标签的信号波,获得基于对应标签信号波的采样数据,并将采样数据发布到mqtt服务器;
所述终端用于向mqtt服务器发布终端请求消息,所述终端请求消息包括订阅标签位置数据,订阅标签位置数据包括对应终端的账号id和订阅的标签列表;
所述mqtt服务器用于接收终端发布的终端请求消息,将终端请求消息推送给采样服务器,并将采样服务器发布的位置数据推送给终端,供对应的终端订阅接收;
所述采样服务器用于在收到终端请求消息后,基于订阅的标签列表向mqtt服务器订阅对应标签的采集数据,基于采样数据计算出对应标签的位置数据,并将位置数据发布到mqtt服务器,其中,所述位置数据的消息主题中包括终端的账号id,由于终端的订阅权限,所以仅对应账号id的终端能接收到所述位置数据。
进一步地,所述终端请求消息还包括取消标签位置数据订阅,取消标签位置数据订阅包括对应终端的账号id和取消订阅的标签列表,所述采样服务器还用于在收到终端请求消息后,判断终端请求消息类型,若终端请求消息为订阅标签位置数据,则基于订阅的标签列表向mqtt服务器订阅对应标签的采集数据,基于采样数据计算出对应标签的位置数据,并将位置数据发布到mqtt服务器;若终端请求消息为取消标签位置数据订阅,则基于取消订阅的标签列表向mqtt服务器发布取消订阅对应标签的采集数据。
进一步地,所述系统还包括帐号服务器,所述帐号服务器用于管理mqtt服务器的mqtt客户端的帐号,所述mqtt服务器还用于对mqtt客户端的帐号进行鉴权,其中,所述mqtt客户端包括连接到mqtt服务器的定位器、采样服务器和终端,其中,mqtt客户端通过安全传输层协议tls与mqtt服务器连接。
进一步地,所述帐号服务器管理mqtt服务器的mqtt客户端的帐号具体包括:
接收mqtt客户端的注册请求,基于所述注册请求为对应的mqtt客户端注册mqtt帐号,将所述mqtt帐号写入数据库,并为每个mqtt帐号添加对应的权限,其中,所述mqtt帐号包括账号id;
其中,所述mqtt帐号包括普通mqtt帐号和超级mqtt帐号,若所述mqtt帐号为超级mqtt帐号,则对应的权限为可发布和订阅任何消息;若所述mqtt帐号为普通mqtt帐号,则对应的权限为仅能发布和订阅包含该普通mqtt帐号的帐号id的消息,其中,所述定位器和终端注册的mqtt帐号为普通mqtt帐号,所述采样服务器的mqtt帐号为超级mqtt帐号。
进一步地,所述mqtt服务器还用于,当mqtt客户端向mqtt服务器发起连接请求时,读取数据库中对应mqtt客户端的帐号id和权限,基于帐号id和权限对mqtt客户端进行鉴权,并在对应mqtt客户端发布和订阅消息时,校验对应mqtt客户端的发布和订阅权限。
进一步地,所述定位器使用包含标签所属区域的主题向mqtt服务器发布采样数据,所述mqtt客户端采用包含选区范围的主题做为订阅主题,并通过所述订阅主题中的选区范围作为限定条件,只接收所述选区范围的标签的相应数据,所述数据包括采集数据和位置数据。
进一步地,所述采集服务器发布对应标签的位置数据到mqtt服务器,其消息主题为固定主题,消息体包含对应标签的区域和三维坐标点(x,y,z),所述固定主题为权限设置中包含账户id的主题。
进一步地,所述采样服务器获取到采集数据后,基于室内定位算法计算出对应标签的位置数据。
本发明具有以下有益效果:
本发明提供的一种基于mqtt的室内定位系统,mqtt服务器广播的消息,仅发布订阅的终端或其他有权限的mqtt客户端能接收到,避免了网络资源浪费,同时也保证了消息的安全性。另外,所有标签对应的采样数据均存储于mqtt服务器中,仅在有mqtt客户端发出请求消息时,才会提取对应的采样数据,并将对应的位置数据进行推送,避免了资源浪费。
附图说明
图1为本发明实施例提供的一种基于mqtt的室内定位系统的结构图;
图2为本发明实施例提供的标签与定位器的连接示意图;
图3为本发明实施例提供的一种基于mqtt的室内定位流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1-3所示,本发明提供的一种基于mqtt的室内定位系统,包括标签、定位器、mqtt服务器、采样服务器、终端、帐号服务器和数据库,所述数据库中存储着每个帐号的发布和订阅权限,所述发布和订阅权限包括账号id,所述终端仅能发布和订阅包含对应账号id的消息;
所述标签位于待定位设备上,用于周期性的发射无线信号波;
所述定位器用于发现并识别标签的信号波,获得基于对应标签信号波的采样数据,并将采样数据发布到mqtt服务器;
所述终端通过向mqtt服务器发布终端请求消息,订阅标签位置数据,得到标签位置信息,所述终端请求消息包括订阅标签位置数据和取消标签位置数据订阅,订阅标签位置数据包括对应终端的账号id和订阅的标签列表,取消标签位置数据订阅包括对应终端的账号id和取消订阅的标签列表,其中,所述账号id包含于所述终端请求消息的主题中;
所述mqtt服务器用于消息传输和权限校验;
所述采样服务器用于在收到终端请求消息后,判断终端请求消息的类型,若终端请求消息为订阅标签位置数据,则基于订阅的标签列表向mqtt服务器订阅对应标签的采集数据,基于采样数据计算出对应标签的位置数据,并将位置数据发布到mqtt服务器;若终端请求消息为取消标签位置数据订阅,则基于取消订阅的标签列表向mqtt服务器发布取消订阅对应标签的采集数据。
其中,所述采集服务器发布对应标签的位置数据到mqtt服务器,其消息主题为固定主题,消息体包含对应标签的区域和三维坐标点(x,y,z),所述的区域为地图的划分规则,用于定位后的地图显示,所述固定主题为权限设置中包含账户id的主题,例如,消息主题为“terminal/point/resp/0002”,由于终端帐号的订阅权限限制,只有帐号id为0002的帐号,才能收到此消息,实现采样服务器的定向消息传输。
上述实施例中,当mqtt服务器接收到采样服务器发布的位置数据后,将位置数据进行网内广播,由于设置了每个终端的发布和订阅权限,即仅具有相同账户id的终端能订阅到所述mqtt服务器发布的位置数据,从而避免了网络资源浪费,保证了消息的安全性。
其中,所述系统还包括帐号服务器,所述帐号服务器用于管理mqtt服务器的mqtt客户端的帐号,所述mqtt服务器还用于对mqtt客户端的帐号进行鉴权,其中,所述mqtt客户端包括连接到mqtt服务器的定位器、采样服务器和终端,其中,mqtt客户端通过安全传输层协议tls与mqtt服务器连接。
优选地,所述帐号服务器管理mqtt服务器的mqtt客户端的帐号具体包括:
接收mqtt客户端的注册请求,基于所述注册请求为对应的mqtt客户端注册mqtt帐号,将所述mqtt帐号写入数据库,并为每个mqtt帐号添加对应的权限,其中,所述mqtt帐号包括账号id;
其中,所述mqtt帐号包括普通mqtt帐号和超级mqtt帐号,若所述mqtt帐号为超级mqtt帐号,则对应的权限为可发布和订阅任何消息;若所述mqtt帐号为普通mqtt帐号,则对应的权限为仅能发布和订阅包含该普通mqtt帐号的帐号id的消息,其中,所述定位器和终端注册的mqtt帐号为普通mqtt帐号,所述采样服务器的mqtt帐号为超级mqtt帐号。其中,所述mqtt服务器还用于:当mqtt客户端向mqtt服务器发起连接请求时,读取数据库中对应mqtt客户端的帐号id和权限,基于帐号id和权限对mqtt客户端进行鉴权,并在对应mqtt客户端发布和订阅消息时,校验对应mqtt客户端的发布和订阅权限,校验通过,才与对应mqtt客户端建立连接,并接收对应mqtt客户端的发布和订阅请求。
优选地,为了优化网络传输,mqtt服务器使用集群,通过负载均衡增加网络并发。
优选地,为了使订阅的mqtt客户端能够在不解析消息体的情况下对采样数据过滤优选地,所述定位器使用包含标签所属区域的主题向mqtt服务器发布采样数据,例如,使用“sample/[建筑名称]/[区域]/[楼层]/[标签唯一标识]/[定位器唯一标识]”做为主题,所述mqtt客户端采用包含选区范围的主题做为订阅主题,例如通过“sample/[建筑名称]/[区域]/[楼层]/#”做为订阅主题,通过所述订阅主题中的选区范围作为限定条件,可以选择只接收所述选区范围的标签的相应数据,所述数据包括采集数据和位置数据。
其中,定位器搜索到信号波,根据协议识别信号波进行数据采样,例如,根据蓝牙aoa测向协议,定位器根据时序规则,按照指定的模式控制天线阵列的开关,执行iq采样,定位器通过iq样本计算出方位角和海拔。
另外,信号波类型不同,采样的数据的也不同,比如使用蓝牙aoa采样,采样数据包含但不限于信号强度rssi,方位角、海拔,采样类型,采样序号;使用uwb采样,采样数据包含但不限于信号强度rssi、距离,采样类型和采样序号。
采集服务器对采样数据进行分析,计算得到位置数据具体为:
采样服务器解析标签下的定位器,当定位器的个数大于可定位数量时(通常是3~4个),根据信号强度,剔除信号强度非常弱的定位器,根据采样类型通过室内定位算法,包含但不限于rss、toa、aoa、tdoa计算标签的相对位置。
另外,当标签为多模时,可通过定位器进行混合定位。例如,定位器中包含有uwb和蓝牙aoa定位器,可根据通过标签到uwb定位器的距离、标签到蓝牙aoa定位器的方位角,uwb定位器到蓝牙定位器的方位角,通过几何计算得到标签的位置。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。