身份验证
由于一个采集端仅需在云平台新增一次设备,为防止重复新增或设备注销后无法连接,采集端每次联 网成功后将首先向云平台发送查询请求,验证失败才需要新增设备。查询设备详情报文结构如表 2 所示:
查询成功后,云平台将向采集端返回包含错误代码、创建时间、在线状态、设备 ID、产品编号、最后 登录时间、数据流模板、设备名称等信息的响应报文。
MQTT 协议
本设计中采集端和报警端均采用 MQTT 协议与云平台进行数据交互。MQTT 协议是一种基于发布/订 阅模式的轻量级通讯协议,凭借低代码量、低开销、低带宽占用等优势,广泛应用于物联网、移动应用开 发[13]。 MQTT 协议的特色在于发布/订阅的消息传递机制,在此模式下,多个消息发布者和多个消息订阅者通 过建立在消息代理服务器中的特定主题作为中介相互通信,发布者和订阅者之间不需要建立直接通信连接, 与代理服务器的通信也互不干扰[14]。本设计中,OneNET 云平台作为消息代理服务器,包含“$dp”和 “ERR_CODE”两个主题,前者是云平台数据上报专用主题,后者是自定义的用于发布报警信息的主题。当 二氧化碳培养箱产生报警时,采集端作为消息发布者向“ERR_CODE”主题发布包含温度、二氧化碳浓度、 氧气浓度、报错代码等数据的消息,平台将该主题下的消息自动推送给订阅了该主题的报警端,由报警端 解析数据并向用户发送报警短信。
报警通知
SIM800C 模块发送短信有两种模式,分别是 Text 模式和 PDU 模式。Text 模式收发短信代码简单,实 现容易,但缺点是无法收发中文短信;PDU 模式支持所有手机系统,可以使用任意字符集,但缺点是内容 需要经过特殊编码,生成 PDU 字符串发送,操作复杂。综合考虑,本设计选用 Text 模式发送报警短信。 ESP-12E 通过串口发送 AT 指令控制 SIM800C 模块发送短信的主要流程[15]:1)主机向串口发送“AT”进 行同步测试,SIM800C 返回“OK”表示连接正常;2)发送“AT+CMGF=1”选择文本模式发送短信,返回“OK” 表示设置成功;3)发送“AT+CMGS="手机号"”设置目标用户手机号,返回“>”表示准备接收短信文本;4)发 送短信文本,以十六进制 ASCII 码“1A”结尾;5)发送成功返回“+CMGS:xx\r\n\r\nOK”,“xx”表示发送序列 号(0~255 循环),“\r”、“\n”为转义字符,表示回车、换行。如无特殊说明,AT 指令字符串均以回车换行结尾.