一种基于物联网协议的中继型智能插座软硬件设计与实现
扫描二维码
随时随地手机看文章
引 言
随着智能家居概念的兴起,市场上出现了越来越多的智能电器产品,从智能家电到智能插座,所有这些都使得现代生活耳目一新,并越来越方便人们的日常生活。
近年来,智能手机的普及也使智能家居的管理模式和手段越来越丰富,从固定集中控制延伸到了可移动式管理控制, 通过将APP 程序安装到智能手机上, 以 3G,WiFi 或LAN 为通信手段实现对智能家居的远程管理和控制。但上述智能家居应用模式主要以智能家庭的应用为主,该模式采用WiFi 或 LAN 的方式对市电供电的电器设备进行控制,但一些行业却无法直接采用上述控制方式,如燃气行业的设备以电池供电为主,采用RF 远程控制,而 RF 频段属于ISM,在433 ~498 MHz 之间,使用时无需像IP 化设备那样需要一定的时间间隔刷新和维持通信链路畅通,而是通过睡眠唤醒的方法进行远程管理和控制,大大降低了设备的功耗,延长了燃气表电池供电时间,因此无线智能水表\ 热能表\ 燃气表的远程控制多采用RF 方式,但该方法只对行业的集中管理具有重要意义,业务人员可通过手持式抄表设备远程读取相关设备的数据。在今天大力推广智慧家庭、智慧小区、智慧城市的背景下,用户对智能燃气表等设备的管理控制也有强烈需求,将智能燃气表等设备融入智能家居是目前的发展趋势,但因为采集节点数量庞大,对互联网链路的要求较高,因此设计一种可实现物联网协议传送采集信号的智能插座是本文的重点。
1 中继型智能插座的设计思路及实现原理
对目前市场上流行的智能插座进行功能分析可以看出,
其主要针对智能家庭的相关应用,比如实现电器的远程开断电功能,其最大的特点是可移动控制,即下载 APP 软件到智能手机上,通过手机实现对插座的远程监控。而中继型智能插座除了上述功能外,还需将管理平台的信号通过智能插座转发给采用RF 频段的智能燃气表,以实现数据采集及控制,同时该智能插座还能实现管理平台的动态注册,以便平台了解插座的运行状态是否正常。同样,通过权限设定,用户也可用手机APP 访问指定的智能插座。智能插座的实现原理如图1所示。
图 1 可知,该插座采用了 RF 无线模块 +WiFi 模块的设计方式,通过单独的MCU 处理器进行管理和控制。该方案最大的特点在于采用了成熟的器件及内部串口通信方式,可靠性高,开发周期短,便于进行新功能扩展等,其控制原理如图 2所示。
插座控制原理较为简单,主要采用成熟的模块搭建而成,性能可靠,成本较低,对智慧家庭应用而言是理想的辅助设备。针对家庭应用,插座使用量较少,数据传输的数据量和占用带宽可忽略不计。但如果行业应用规模较大,如燃气行业,用户规模可能达到几万甚至几十万,如果每户都采用智能插座进行数据收集及其他服务,那么会对后台带宽造成较大压力,因此若按照传统思路设计智能插座软件部分,在大规模推广应用时,会在流量和带宽的问题上对后台造成影响,故需采用新模式设计插座的通信协议部分,由此引入 MQTT 协议对插座与后台的通信模式进行规划设计。
2 MQTT协议的原理及应用
2.1 关于MQTT
消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)是IBM 于1999 年开发的一个即时通信协议,也是一个轻量级的,基于代理的发布/ 订阅消息传输协议。所谓轻量级,是指该协议设计思想开放、简单、轻量、易于实现, 因此它也是为计算能力有限,且工作在低带宽、不可靠网络的远程传感器和控制设备通信而设计的协议。
针对物联网应用中数据采集需要通过不断轮询才能得到即时数据的缺陷,MQTT 协议拥有信息推送功能,可有效地将物联网中的大量传感器与外部设备进行连接,并实现最小的网络开销。
目前 MQTT v 2.1 主要包含 14 类消息类型的指令,如下所示:
(1)CONNECT:将客户端请求发送到服务器 ;
(2)CONNACK :连接确认(服务器端→客户端);
(3)PUBLISH :发布消息(双向);
(4)PUBACK :发布确认(双向);
(5)PUBREC :确保发布被收到(双向);
(6)PUBREL :确保发布分发(双向);
(7)PUBCOMP:确保发布完成(双向);
(8)SUBSCRIBE :客户端订阅请求 ;
(9)SUBACK :订阅确认(服务器端→客户端);
(10)UNSUBSCRIBE :客户端退订请求 ;
(11)UNSUBACK :服务器端退订确认 ;
(12)PINGREQ :PING 请求(客户端→服务器端);
(13)PINGRESP:PING 响应(服务器端→客户端);
(14)DISCONNECT:断开连接通知(客户端→服务器端)
上述 14类消息体都采用了固定头 + 可变头 + 有效载荷组成方式,其中固定头是所有消息类型必须包含的部分,其结构见表 1 所列。
从表 1 可以看出,MQTT 协议的标准格式由消息类型、重复标识、质量等级、保留标识及剩余字长组成,MQTT 协议具有如下特点:
(1) 通信开销小 :最小消息为 2 B,降低了网络负载。
(2) 协议具有简单和跨平台的特点:MQTT采用订阅/发布模式,提供一到多的分发方法,使应用耦合度降低,并可在 TCP/IP及其他无线协议中使用RF,ZigBee等。
(3) 可订制合适的服务质量:根据网络状态及服务要求可选择三种不同的消息质量等级。
由此可见,正因为MQTT协议的开放性与消息短小性, 使得它在.NET,WINRT,M2M,PHP等平台上都有良好的表现。同时对于MQTT协议的实现多以库函数的方式实现, 包括 C语言设计,J2ME,J2EE 等,本节就智能插座如何实现消息的定阅和发送机制做简单讨论。
2.2 智能插座的软件设计方案
中继型智能插座可将 WiFi 模块及RF 模块之间的数据进行交换、转发及控制。智能插座就是MQTT 协议中所描述的终端设备,为了简化智能插座软件设计,根据智能插座的特点,在中继型插座的通信协议设计上只选择了 MQTT 协议14 种消息类型中的 6 种, 分别为 CONNECT,CONNACK, PUBLISH,PINGREQ,PINGRESP,DISCONNECT,这几类
消息主要用于插座与后台的连接和信息发布。插座注册及信息接收过程如图 3 所示。
为适应本应用的特点,系统通信连接做了如下设置:
(1) 为节省时间片及带宽开销,取消除了 CONNACK确认信息外其他指令的确认信息,是一种无可靠质量(QoS)连接的传输。
(2) 随机给智能插座每天分配多个断开时间片 Tu和连通时间片 Tc,且在连通时间片 Tc内,如PUBLISH已完成则立即发送DISCONNECT,退出连通,即实际连通时间≤ Tc,此举不易造成通信堵塞。智能插座在进入 Tc时,发送 CONNECT, 如服务器端无CONNACK 返回或返回拒绝信息,待这一 Tc结束后,在下一 Tc 再进行连接。
(3)在连通时间片 Tc 内,智能插座每隔一定时间便发出 一 PINGREQ 心跳信号给服务器端,待服务器端收到后返回 一 PINGRESP 给智能插座。这一时间间隔在 MQTT 中称为 KEEP ALIVE,服务器端在收到 DISCONNECT 或在 1.5 倍 KEEP ALIVE 时间内没有收到智能插座发送的信息则认为智 能插座已断开连接。
3 结 语
将现有 RF 及 WiFi 模块集成到智能插座中,不仅实现了 市场上流行的远程控制智能插座开断电功能,还在软件设计 中采用了 MQTT 协议,减少了节点数据传输在带宽及时间片 上的需要。该方案已成功应用在智慧厨房的整体解决方案中, 满足了燃气行业和家庭应用的需求。