身份驗證
由于一個采集端僅需在云平臺新增一次設(shè)備,為防止重復(fù)新增或設(shè)備注銷后無法連接,采集端每次聯(lián) 網(wǎng)成功后將首先向云平臺發(fā)送查詢請求,驗證失敗才需要新增設(shè)備。查詢設(shè)備詳情報文結(jié)構(gòu)如表 2 所示:
查詢成功后,云平臺將向采集端返回包含錯誤代碼、創(chuàng)建時間、在線狀態(tài)、設(shè)備 ID、產(chǎn)品編號、最后 登錄時間、數(shù)據(jù)流模板、設(shè)備名稱等信息的響應(yīng)報文。
MQTT 協(xié)議
本設(shè)計中采集端和報警端均采用 MQTT 協(xié)議與云平臺進(jìn)行數(shù)據(jù)交互。MQTT 協(xié)議是一種基于發(fā)布/訂 閱模式的輕量級通訊協(xié)議,憑借低代碼量、低開銷、低帶寬占用等優(yōu)勢,廣泛應(yīng)用于物聯(lián)網(wǎng)、移動應(yīng)用開 發(fā)[13]。 MQTT 協(xié)議的特色在于發(fā)布/訂閱的消息傳遞機(jī)制,在此模式下,多個消息發(fā)布者和多個消息訂閱者通 過建立在消息代理服務(wù)器中的特定主題作為中介相互通信,發(fā)布者和訂閱者之間不需要建立直接通信連接, 與代理服務(wù)器的通信也互不干擾[14]。本設(shè)計中,OneNET 云平臺作為消息代理服務(wù)器,包含“$dp”和 “ERR_CODE”兩個主題,前者是云平臺數(shù)據(jù)上報專用主題,后者是自定義的用于發(fā)布報警信息的主題。當(dāng) 二氧化碳培養(yǎng)箱產(chǎn)生報警時,采集端作為消息發(fā)布者向“ERR_CODE”主題發(fā)布包含溫度、二氧化碳濃度、 氧氣濃度、報錯代碼等數(shù)據(jù)的消息,平臺將該主題下的消息自動推送給訂閱了該主題的報警端,由報警端 解析數(shù)據(jù)并向用戶發(fā)送報警短信。
報警通知
SIM800C 模塊發(fā)送短信有兩種模式,分別是 Text 模式和 PDU 模式。Text 模式收發(fā)短信代碼簡單,實 現(xiàn)容易,但缺點是無法收發(fā)中文短信;PDU 模式支持所有手機(jī)系統(tǒng),可以使用任意字符集,但缺點是內(nèi)容 需要經(jīng)過特殊編碼,生成 PDU 字符串發(fā)送,操作復(fù)雜。綜合考慮,本設(shè)計選用 Text 模式發(fā)送報警短信。 ESP-12E 通過串口發(fā)送 AT 指令控制 SIM800C 模塊發(fā)送短信的主要流程[15]:1)主機(jī)向串口發(fā)送“AT”進(jìn) 行同步測試,SIM800C 返回“OK”表示連接正常;2)發(fā)送“AT+CMGF=1”選擇文本模式發(fā)送短信,返回“OK” 表示設(shè)置成功;3)發(fā)送“AT+CMGS="手機(jī)號"”設(shè)置目標(biāo)用戶手機(jī)號,返回“>”表示準(zhǔn)備接收短信文本;4)發(fā) 送短信文本,以十六進(jìn)制 ASCII 碼“1A”結(jié)尾;5)發(fā)送成功返回“+CMGS:xx\r\n\r\nOK”,“xx”表示發(fā)送序列 號(0~255 循環(huán)),“\r”、“\n”為轉(zhuǎn)義字符,表示回車、換行。如無特殊說明,AT 指令字符串均以回車換行結(jié)尾.