一种基于MQTT协议的智能公厕设备交互方法及系统与流程

文档序号:17726732发布日期:2019-05-22 02:33阅读:236来源:国知局
一种基于MQTT协议的智能公厕设备交互方法及系统与流程

本发明涉及物联网领域,特别涉及一种基于mqtt协议的智能公厕设备交互方法及系统。



背景技术:

物联网是指通rfid、红外感应器、gps、激光扫描器等资讯传感设备,按约定的协议,把任何物品与互联网连接起来,进行资讯交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。随着互联网、物联网等技术的不断发展,物联网技术应用越来越广泛。

在现有物联网应用中,终端设备的数量往往十分庞大,通信关系多呈网状拓扑结构,且大多采集数据具有小体量、高并发等特点。这就要求系统中的各个设备之间建立一种兼具动态性和低耦合性的交互机制。发布/订阅通信模型具有异步、多点通信的特点,使通信的参与者在空间、时间和控制流上完全解耦,能够很好地满足物联网系统松散通信的需求。

mqtt是一种基于主题发布/订阅的轻量级消息传输协议,以其开销小、及时性好、可靠性高等优势在物联网系统中得到广泛应用。在mqtt基本结构中,订阅方只订阅自己感兴趣的主题而不去理解消息的内部结构,订阅方不能更细粒度地表达对部分内容的消息感兴趣,表达能力较弱,而消息代理会将该主题下所有的消息都推送给订阅方,会造成很多无用消息的推送,致使网络拥塞,增加服务器的负载和通信带宽。



技术实现要素:

本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于mqtt协议的智能公厕设备交互方法。

本发明的另一目的在于提供一种基于mqtt协议的智能公厕设备交互系统。

本发明的目的通过以下的技术方案实现:

一种基于mqtt协议的智能公厕设备交互方法,包括以下步骤:

s1、信息采集卡连接mqtt服务器,并对智能公厕设备在运行过程中所产生的实时数据进行采集;

s2、信息采集卡把所采集的数据以自定义数据帧格式封装起来并以预定主题进行发布,同时用2/3/4g网络将其上传到数据统计服务器;

s3、消息过滤器对发布方的消息进行拦截,对消息内容即数据帧进行解析,将其转换为json格式;

s4、消息过滤器从数据库中提取映射表,并通过该映射表和自定义匹配算法对消息进行过滤,完成主题的转换,并把主题转换后的消息发布到mqtt消息代理;

s5、管理员登录移动端应用,连接mqtt服务器,对所需要的主题进行订阅,收到订阅消息后,对数据进行分析和展示,由此判断是否进行远程调试。

步骤s1中,所述信息采集卡为一种plc,即可编程逻辑控制器,负责对安装于厕所上的采集设备所产生的数据进行采集;所述采集设备包括压力传感器、红外感应器、氨气检测仪、激光扫描仪;在采集完成后,信息采集卡对各种开关量、模拟量的实时数据进行a/d转换,形成相应的数字信号。

步骤s2中,所述自定义数据帧由五个部分组成,分别为:sof(帧头)、length(data的长度)、data(有效数据部分)、crc16(校验)、eof(帧尾);其中,sof含1字节,标记帧的开始;length含2字节,用无符号整形表示,高位在前,低位在后;crc16含2字节,用于表示校验length部分和data部分集合的结果;eof含1字节,标记帧的结束。其结构如图1所示。

步骤s3中,所述消息过滤器为一个部署在mqtt服务器上的mqtt客户端应用程序,其订阅的主题为信息采集卡最初发布消息的主题;在收到消息后,根据自定义匹配算法完成消息主题的转换,并发布至mqtt消息代理。其工作流程如图2所示。

步骤s4中,所述数据库采用的是mysql,里面包含一张以上的映射表;所述映射表含有topic和constraint-condition两个字段,记录了一系列约束条件与不同主题的映射。

所述约束条件包含一个以上的谓词,而每个谓词由一个三元组所构成,分别为属性、值、操作符,用于对json数据中属性键值对的判断。

步骤s4中,所述自定义匹配算法具体包括以下步骤:

s41、根据约束条件构造一颗匹配树,根节点为约束条件的第一个谓词,左孩子为一个布尔值,代表比较结果,初始值为false;右孩子为下一个谓词;所有谓词的左孩子均为叶子结点;最后一个谓词所在的结点的右孩子为结束标记#;

s42、以先序遍历扫描匹配树,依据消息内容将每个谓词的比较结果赋予其左孩子,若消息中没有该属性,则不进行赋值,直到遇到结束标记#;

s43、再次以先序遍历扫描匹配树,记录该树中布尔值为true的个数,直到遇到结束标记#;若扫描到false,则直接停止扫描;

s44、比较true的个数和消息内容中属性的个数,若相等,则匹配成功,并查找映射表中该约束条件所对应的主题,进行主题的转换,并把消息内容以转换后的主题进行发布;

s45、若有多个约束条件,则构造多个匹配树,形成一个匹配森林;重复上述步骤,对每一个匹配树进行匹配。

其中,在步骤s1中,所述信息采集卡还需订阅”调试”主题,以接收移动端发来的调试信息。

步骤s5中,所述移动端包括android、ios设备,其订阅的主题包括“男厕”、“女厕”、“残卫”,还包括细粒度更小的主题;所述主题的消息均由信息采集卡所发布的消息经消息过滤器依据约束条件转化而来;其发布消息的主题即为”调试”,调试信息统一发布至该主题。

本发明的另一目的通过以下的技术方案实现:

一种基于mqtt协议的智能公厕设备交互系统,包括信息采集卡、mqtt服务器、数据统计服务器、消息过滤器、数据库;其中,

信息采集卡连接mqtt服务器,并对智能公厕设备在运行过程中所产生的实时数据进行采集;

信息采集卡把所采集的数据以自定义数据帧格式封装起来并以特定主题进行发布,同时用2/3/4g网络将其上传到数据统计服务器;

消息过滤器对发布方的消息进行拦截,对消息内容即数据帧进行解析,将其转换为json格式;

消息过滤器从数据库中提取映射表,并通过该映射表和自定义匹配算法对消息进行过滤,完成主题的转换,并把主题转换后的消息发布到mqtt消息代理;

管理员登录移动端应用,连接mqtt服务器,对所需要的主题进行订阅,收到订阅消息后,对数据进行分析和展示,由此判断是否进行远程调试。

本发明与现有技术相比,具有如下优点和有益效果:

1、本发明所采用的通讯协议为mqtt协议,该协议适合工作在设备数量众多,设备计算能力较低,网络环境不稳定的一对多场景下,正好满足了智能公厕设备与多个移动端设备的交互需求。

2、本发明的消息过滤方法可以使智能公厕交互系统不必受预定义主题的限制,使移动端可以订阅细粒度更小的主题,避免了无用消息的推送,提高通信效率。

3、本发明的方法可以使不同的管理员在远程监测不同的厕所故障,能在第一时间发布调试信息以使智能公厕设备正常工作,节约了人力成本,且分工明确。

附图说明

图1为自定义数据帧示意图。

图2为消息过滤器的工作流程图。

图3为多个约束条件所构成的匹配森林的数据结构图。

图4为根据所述约束条件和消息构造的匹配树。

图5为根据所述约束条件和消息构造的匹配森林。

图6为本发明所述一种基于mqtt协议的智能公厕设备交互系统的结构示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

一种基于mqtt协议的智能公厕设备交互方法,包括以下步骤:

步骤1、根据公厕地点的具体情况,正确合理地部署安装信息采集卡和智能公厕设备,使各设备工作正常,并保证4g网络信号良好,通信畅通。

步骤2、信息采集卡连接mqtt服务器,设置qos=2,设置心跳时间keepaliveinterval=15,订阅“调试”主题,以接受移动端发来的调试信息。

步骤3、移动端连接mqtt服务器,并使用mqtt协议封装库,根据需要订阅特定的主题。

步骤4、信息采集卡对智能公厕设备在运行过程中所产生的实时数据进行采集,采集完成后,对各种开关量、模拟量的实时数据进行a/d转换,把转换后的数据以自定义数据帧格式以“全体厕所”为主题进行发布,同时用2/3/4g网络将其上传至数据统计服务器。

步骤5、将消息过滤器部署在mqtt服务器上,使其订阅”全体厕所”主题;同时在服务器的mysql数据库中建立映射表。映射表含有topic和constraint-condition两个字段,记录了一系列约束条件与不同主题的映射。所述约束条件是由若干个谓词组成,通过and连接,而每个谓词由一个三元组所构成,分别为属性、值、操作符,用于对json数据中属性键值对的判断。

步骤6、消息过滤器收到信息采集卡发来的消息后,对消息内容即数据帧进行解析,将其转换为json格式。随后从数据库中提取映射表,并通过映射表和自定义匹配算法对消息进行过滤,完成主题的转换。自定义匹配算法具体包括以下步骤:

第一步:根据约束条件构造匹配树,根节点为约束条件的第一个谓词,左孩子为一个布尔值,代表比较结果,初始值为false;右孩子为下一个谓词;所有谓词的左孩子均为叶子结点。最后一个谓词所在的结点的右孩子为结束标记#;

第二步:以先序遍历扫描匹配树,依据消息内容将每个谓词的比较结果赋予其左孩子,若消息中没有该属性,则不进行赋值,直到遇到结束标记#;

第三步:再次以先序遍历扫描匹配树,记录该树中布尔值为true的个数,直到遇到结束标记#。若扫描到false,则直接停止扫描;

第四步:比较true的个数和消息内容中属性的个数,若相等,则匹配成功,并查找映射表中该约束条件所对应的主题,进行主题的转换,并把消息内容以转换后的主题进行发布;

第五步:若有多个约束条件,则构造多个匹配树,形成一个匹配森林,如图3所示。重复上述步骤,对每一个匹配树进行匹配。

以单个约束条件(toilettype=man)and(elctricmeter<=1000)and(watermeter<=50)and(concentration>5)#为例,其所映射的主题为“通风度异常男厕”。其中,toilettype为厕所类型;elctricmeter为电表读数;watermeter为水表读数;concentration为氨气浓度。假设消息过滤器收到的消息内容为{"toilettype":"man","elctricmeter":"850","watermeter":"26","concentration":"7"},则根据消息匹配算法,对构造好的树进行先序遍历,将该消息中每个谓词的比较结果赋予其左孩子,如图4所示。遍历完成后,再次对该树进行遍历,记录该树中布尔值为true的个数。比较树中true的个数和消息内容中属性的个数。可知树中true的个数为4,而消息内容中属性的个数也为4,匹配成功,消息将以“通风度异常男厕”为主题发布出去,而不再以“全体厕所”为主题。移动端订阅“通风度异常男厕”主题即可收到此类男厕的有关信息,而不会收到正常厕所的信息。

以多个约束条件(toilettype=woman)and(elctricmeter>1000)#、(toilettype=woman)and(elctricmeter>1000)and(watermeter>50)#、(toilettype=woman)and(electricmeter>1000)and(concentration>5)#为例,其映射的主题分别为“电表异常女厕”、“水电表异常女厕”、“电表及通风度异常女厕”。假设消息过滤器收到的消息内容为{"toilettype":"woman","electricmeter":"1200","concentration":"9"},则根据消息匹配算法,将构造三颗匹配树形成一个匹配森林,然后对每棵匹配树进行先序遍历,将该消息中每个谓词的比较结果赋予其左孩子,如图5所示。遍历完成后,再次对每棵树进行遍历,记录每棵树中布尔值为true的个数。比较树中true的个数和消息内容中属性的个数。可知匹配树1中true的个数为2,而消息内容中属性的个数为3,匹配失败;匹配树2中true的个数为2,而消息内容中属性的个数为3,匹配失败;匹配树3中true的个数为3,而消息内容中属性的个数也为3,匹配成功。消息将以“电表及通风度异常女厕”为主题发布出去,而不再以“全体厕所”为主题。移动端订阅“电表及通风度异常女厕”主题即可收到此类女厕的有关信息,而不会收到其他故障种类厕所的信息。

步骤7、移动端收到订阅的消息后,依据消息内容判断是否进行远程调试。若确认进行远程调试,则将调试信息发布至“调试”主题。

步骤8、信息采集卡收到移动端发来的调试信息后,通过其执行机构即电动执行器对智能公厕设备进行阀门开关操作和介质流量调节等操作。

如图6,一种基于mqtt协议的智能公厕设备交互系统,包括信息采集卡、mqtt服务器、数据统计服务器、消息过滤器、数据库;其中,

信息采集卡连接mqtt服务器,并对智能公厕设备在运行过程中所产生的实时数据进行采集;

信息采集卡把所采集的数据以自定义数据帧格式封装起来并以特定主题进行发布,同时用2/3/4g网络将其上传到数据统计服务器;

消息过滤器对发布方的消息进行拦截,对消息内容即数据帧进行解析,将其转换为json格式;

消息过滤器从数据库中提取映射表,并通过该映射表和自定义匹配算法对消息进行过滤,完成主题的转换,并把主题转换后的消息发布到mqtt消息代理;

管理员登录移动端应用,连接mqtt服务器,对所需要的主题进行订阅,收到订阅消息后,对数据进行分析和展示,由此判断是否进行远程调试。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1