本文摘要:摘要:在OneNET云平臺的基礎(chǔ)上,運(yùn)用Delphi設(shè)計(jì)物聯(lián)網(wǎng)電飯鍋APP,并用網(wǎng)絡(luò)調(diào)試助手NetAssist模擬電飯鍋,使APP具有遠(yuǎn)程監(jiān)控電飯鍋狀態(tài)和余米量的功能,同時(shí)可實(shí)現(xiàn)遠(yuǎn)程操控電飯鍋?zhàn)詣酉旅住⒆詣蛹铀、自動洗米、自動煮飯等。該產(chǎn)品具有響應(yīng)速度快、高效,運(yùn)行
摘要:在OneNET云平臺的基礎(chǔ)上,運(yùn)用Delphi設(shè)計(jì)物聯(lián)網(wǎng)電飯鍋APP,并用網(wǎng)絡(luò)調(diào)試助手NetAssist模擬電飯鍋,使APP具有遠(yuǎn)程監(jiān)控電飯鍋狀態(tài)和余米量的功能,同時(shí)可實(shí)現(xiàn)遠(yuǎn)程操控電飯鍋?zhàn)詣酉旅、自動加水、自動洗米、自動煮飯等。該產(chǎn)品具有響應(yīng)速度快、高效,運(yùn)行平穩(wěn),準(zhǔn)確性高等特點(diǎn)。
關(guān)鍵詞:物聯(lián)網(wǎng);OneNET;Delphi;電飯鍋
0引言
據(jù)調(diào)查,市面上最新、最智能的電飯鍋的功能與傳統(tǒng)電飯鍋相比,除常用的預(yù)約功能外,還提供了互聯(lián)網(wǎng)+的煮飯監(jiān)控。電飯鍋定時(shí)預(yù)約煮飯時(shí),需要事先把大米洗干凈并配好水,但大米長時(shí)間在水中浸泡影響了米飯的口感[1]。而利用手機(jī)APP控制物聯(lián)網(wǎng)智能電飯鍋,可以自動下米、洗米,且此類電飯鍋尚未上市。因此,物聯(lián)網(wǎng)智能電飯鍋具有巨大的市場潛能。
1系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)主要分為APP終端模塊、云平臺、電飯鍋模擬模塊三部分,利用TCP/IP網(wǎng)絡(luò)傳輸協(xié)議實(shí)現(xiàn)APP、硬件模擬模塊與云平臺之間的數(shù)據(jù)傳送與命令下發(fā)。在APP確認(rèn)電飯鍋設(shè)備在線后,開始工作,遠(yuǎn)程獲得儲米箱的余米量,用戶可在APP選擇下米量和做飯模式,偵測電飯鍋?zhàn)鲲埖母鞣N狀態(tài),直到煮飯完成。若離線,則APP無法使用。
與傳統(tǒng)電飯鍋相比,本文系統(tǒng)多了手機(jī)和云平臺數(shù)據(jù)的控制與檢測。使用者只需用手機(jī)點(diǎn)擊APP發(fā)送命令,就能實(shí)時(shí)監(jiān)控電飯鍋的狀態(tài)。其主要實(shí)現(xiàn)步驟如下:(1)把適量的大米存在儲米箱,當(dāng)普通米缸使用。(2)家里或工地上的電飯鍋通過WiFi模塊連接云平臺。(3)在手機(jī)APP的主菜單頁面查詢余米量,選擇下米量,點(diǎn)擊相應(yīng)的煮食模式,APP將該功能發(fā)送至云平臺,電飯鍋接收指令。(4)電飯鍋接收到指令后開始動作,且把每個(gè)操作步驟和做飯狀態(tài)反饋至APP,實(shí)現(xiàn)電飯鍋狀態(tài)的遠(yuǎn)程智能化監(jiān)控[2]。
2OneNET云平臺的搭建
OneNET是中國移動自主研發(fā)的物聯(lián)網(wǎng)開放云平臺,全面支持NB-IoT設(shè)備接入,提供智能家電行業(yè)套件解決方案、視頻能力服務(wù)和圖形化應(yīng)用開發(fā)工具,進(jìn)一步整合產(chǎn)業(yè)鏈上下游資源,助力物聯(lián)網(wǎng)生態(tài)圈構(gòu)建[3]。搭建方法如下:
(1)注冊并登錄OneNET,進(jìn)入開發(fā)者中心界面,點(diǎn)擊創(chuàng)建產(chǎn)品選項(xiàng)。產(chǎn)品創(chuàng)建名稱為EDP電飯鍋,產(chǎn)品行業(yè)為智能家居,選擇設(shè)備接入方式為公開協(xié)議,聯(lián)網(wǎng)方式為WiFi。設(shè)備接入?yún)f(xié)議EDP[4](EnhancedDeviceProtocol,EDP),使創(chuàng)建的“EDP電飯鍋”產(chǎn)品具有上報(bào)傳感器數(shù)據(jù)點(diǎn)和接收實(shí)時(shí)命令的功能。
(2)打開公開協(xié)議產(chǎn)品界面,點(diǎn)擊EDP電飯鍋產(chǎn)品進(jìn)入產(chǎn)品概況詳細(xì)頁,創(chuàng)建一個(gè)新設(shè)備EDP1,創(chuàng)建設(shè)備成功后,可在此頁面獲取設(shè)備信息:產(chǎn)品ID、用戶ID、APIKey、設(shè)備接入?yún)f(xié)議、產(chǎn)品概要分析、設(shè)備趨勢分析和數(shù)據(jù)點(diǎn)上傳分析。其中,APIKey在設(shè)備創(chuàng)建時(shí)自動生成,可默認(rèn)關(guān)聯(lián)任何設(shè)備。
(3)利用平臺提供的EDPSDK,開展和接入服務(wù)器的TCP連接,實(shí)現(xiàn)EDP協(xié)議,用于上報(bào)業(yè)務(wù)數(shù)據(jù)點(diǎn)。官方網(wǎng)站的協(xié)議說明為《設(shè)備終端接入?yún)f(xié)議-EDP》。若要實(shí)時(shí)接收業(yè)務(wù)層下發(fā)的控制命令,則需保持EDP長連接,而且利用開放的API接口可自定義實(shí)現(xiàn)業(yè)務(wù)平臺?赏ㄟ^EDP協(xié)議的RESTFULAPI操作OneNET提供的資源,如設(shè)備增刪改查、數(shù)據(jù)流創(chuàng)建、數(shù)據(jù)點(diǎn)上傳、命令下發(fā)等,實(shí)現(xiàn)簡單調(diào)用、快速生成應(yīng)用[4]。EDP服務(wù)器地址域名為jjfaedp.hedevice.com,端口號為876。
3物聯(lián)網(wǎng)APP的開發(fā)工具
3.1可視化的集成開發(fā)環(huán)境
Delphi是Pascal項(xiàng)目的一個(gè)分支,基本語言還是Pascal語言[5],核心是ObjectPascal的集成開發(fā)環(huán)境(IDE)[6],其最大優(yōu)點(diǎn)是作為一個(gè)面向?qū)ο笤O(shè)計(jì)為中心的開發(fā)工具,采用圖形用戶界面作為開發(fā)環(huán)境,使用類庫和IDE,VCL工具編譯器,大大提高了開發(fā)效率。
3.2控件與過程
(1)常用控件。Delphi使用VCL可視組件庫,在窗體設(shè)計(jì)器右下方找到組件面板,按組件的不同特點(diǎn)和用戶需求分門別類,可選擇的控件有TButton,TGroupBox,TExit,TLable,TImage……分別稱之為按鈕、分組框、文本編輯、標(biāo)簽編輯和插入圖片等。StyleBook樣式是一種皮膚,也稱做“樣式”或“風(fēng)格”,包含很多具有動畫效果的動作,增強(qiáng)了用戶界面體驗(yàn)[7]。
(2)procedure過程:一類為標(biāo)準(zhǔn)過程;另一類為自定義過程。在本文設(shè)計(jì)中,中間部分的語句以begin開始、end結(jié)束,與C語言編程類似,但procedure過程沒有返回值。本文使用的標(biāo)準(zhǔn)過程、自定義過程有表單創(chuàng)建過程、表單結(jié)束過程、按鈕過程、掃描接收過程、定時(shí)器定時(shí)使用過程等[8]。
3.3APP的主要功能
進(jìn)入物聯(lián)網(wǎng)電飯鍋APP主界面后,可看到有幾種做飯模式。
(1)檢測電飯鍋設(shè)備狀態(tài)當(dāng)電飯鍋斷電或未成功連網(wǎng)時(shí),設(shè)備狀態(tài)顯示離線;反之,則顯示在線。只有電飯鍋設(shè)備狀態(tài)顯示在線時(shí),APP的整體功能才被啟動。偵查設(shè)備狀態(tài)的功能運(yùn)用了TjsonObject類,獲取從OneNET返回的Json數(shù)據(jù),提取需要的設(shè)備狀態(tài)Status。
(2)獲取余米量,發(fā)送下米量從OneNET云平臺獲取余米量的數(shù)值后,在Delphi的程序中通過Json單元提取需要的字符串(單位:g);為了獲得更好的用戶體驗(yàn),把獲得的字符串轉(zhuǎn)換成浮點(diǎn)型,再除以500得到以斤為單位的數(shù)值。另外,在電飯鍋完成煮飯后,OneNET會再次返回儲米箱的余米量顯示給用戶。硬件模塊的生產(chǎn)需求規(guī)定:下米量為150g(3兩)的倍數(shù),因此設(shè)計(jì)下米量的單位為兩,用戶能直觀地輸入下米量。若未填寫下米量,則米量組的“發(fā)送”按鈕會變成灰色不可用,并彈出對話框“isnotavalidintergervalue”提醒用戶輸入需要煮飯的米量。
(3)選擇模式,查看做飯狀態(tài)供選擇的模式為保溫/取消、標(biāo)準(zhǔn)、超快、蒸煮、煲湯、煮粥/稀飯。這些模式綜合了市場上各種電飯鍋的功能,在硬件水平設(shè)施能夠?qū)崿F(xiàn)的基礎(chǔ)上設(shè)定。電飯鍋的做飯狀態(tài)為洗米中、洗米完成、煮飯中、煮飯完成。當(dāng)用戶選好做飯模式,填好下米量后,點(diǎn)擊“發(fā)送”按鈕,電飯鍋動作、下正確的米量、噴水洗米,進(jìn)入“洗米中”狀態(tài);洗米完成后為“洗米完成”狀態(tài);之后電飯鍋?zhàn)詣舆M(jìn)入“煮飯中”狀態(tài),數(shù)據(jù)上傳至OneNET,手機(jī)APP定時(shí)掃描云平臺,監(jiān)控電飯鍋狀態(tài),直到進(jìn)入“煮飯完成”狀態(tài)。
4通信協(xié)議數(shù)據(jù)格式
為了實(shí)現(xiàn)電飯鍋和手機(jī)APP通信的數(shù)據(jù)準(zhǔn)確性和設(shè)備的精準(zhǔn)控制,本文設(shè)計(jì)了一套完整的電飯鍋通信協(xié)議,實(shí)現(xiàn)無線傳感網(wǎng)數(shù)據(jù)的封裝[9]。
4.1連接請求和連接響應(yīng)
(1)連接請求是指電飯鍋在通電以后,通過一段數(shù)據(jù)包連接OneNET云設(shè)備。連接請求包含消息頭、選項(xiàng)和消息體三部分。選項(xiàng)包括協(xié)議名稱、協(xié)議版本、連接標(biāo)志、保持連接時(shí)間。消息體包含設(shè)備ID、鑒權(quán)信息,內(nèi)容均為長度+內(nèi)容的字符串格式,設(shè)備ID必須傳遞。數(shù)據(jù)格式如下:消息類型+剩余字節(jié)長度+選項(xiàng)1:協(xié)議描述+選項(xiàng)2:協(xié)議版本+選項(xiàng)3:連接標(biāo)志+選項(xiàng)4:保持時(shí)間+設(shè)備ID字節(jié)長度+設(shè)備ID+API字節(jié)長度+API(2)連接響應(yīng)是電飯鍋連接請求返回的數(shù)據(jù),也是OneNET云平臺的自帶協(xié)議。連接響應(yīng)報(bào)文包含消息頭與2個(gè)必選項(xiàng)。其中,選項(xiàng)包括1B響應(yīng)標(biāo)志和1B返回碼選項(xiàng)。數(shù)據(jù)格式如下:消息類型+剩余字節(jié)長度+選項(xiàng)1:標(biāo)志+選項(xiàng)2:返回碼4.2電飯鍋數(shù)據(jù)發(fā)送和APP數(shù)據(jù)接收(1)電飯鍋轉(zhuǎn)發(fā)數(shù)據(jù)的實(shí)質(zhì)是向OneNET云平臺存儲數(shù)據(jù)。
該消息是從設(shè)備到云平臺發(fā)送的數(shù)據(jù),由消息頭、1個(gè)選項(xiàng)和消息體組成,其中選項(xiàng)標(biāo)志位必填,其他根據(jù)標(biāo)志位選填。消息體選擇type=5的數(shù)據(jù)結(jié)構(gòu),為自定義間隔字符串格式,消息編號是一個(gè)零值。服務(wù)器收到此消息后,不會響應(yīng)一個(gè)SAVE_ACK消息。數(shù)據(jù)格式如下:消息類型+剩余字節(jié)長度+數(shù)據(jù)結(jié)構(gòu)類型+剩余字節(jié)長度+內(nèi)容(數(shù)據(jù)固定五位數(shù))(2)當(dāng)電飯鍋把數(shù)據(jù)存儲在OneNET后,APP在定時(shí)器定時(shí)掃描的作用下獲取變化的數(shù)值。APP接收的數(shù)據(jù)通過調(diào)用設(shè)備API服務(wù)讀取,數(shù)據(jù)結(jié)構(gòu)為Json格式[10]。
4.3APP命令下發(fā)和電飯鍋數(shù)據(jù)接收
(1)APP命令下發(fā)的實(shí)質(zhì)是移動終端通過OneNET云平臺對電飯鍋進(jìn)行數(shù)據(jù)透傳。本文設(shè)計(jì)命令下發(fā)內(nèi)容為:煮食方式+下米量。其中,每種煮食選擇方式對應(yīng)的模式。在標(biāo)準(zhǔn)模式下發(fā)送下米量,使用重復(fù)校驗(yàn)法把做飯方式和下米量重復(fù)發(fā)送兩次,保證數(shù)據(jù)的準(zhǔn)確性,其具體發(fā)送方式。在超快、蒸煮、煲湯、保溫/取消、煮粥/稀飯等模式下,下米量的發(fā)送亦如此。與APP數(shù)據(jù)接收一樣,調(diào)用API服務(wù)發(fā)送命令給電飯鍋,數(shù)據(jù)結(jié)構(gòu)同樣為Json格式。
(2)在APP選擇和點(diǎn)擊確認(rèn)后,OneNET云平臺下發(fā)命令,電飯鍋接收到一串?dāng)?shù)據(jù)包,格式為《設(shè)備接入終端協(xié)議-EDP》下消息類型的5.7命令請求,該消息由服務(wù)器發(fā)往客戶端,以執(zhí)行指定的命令。
4.4心跳請求和心跳響應(yīng)
心跳請求:確保電飯鍋和OneNET進(jìn)行長連接,時(shí)間約為2min,只有消息頭,由電飯鍋發(fā)送至OneNET服務(wù)器,數(shù)據(jù)格式為C000。心跳響應(yīng):在心跳請求后,若成功,則OneNET會有響應(yīng)。該消息從OneNET服務(wù)器返回電飯鍋,數(shù)據(jù)格式為D000。在APP電飯鍋的程序里,每隔3min發(fā)送一次心跳請求,確保電飯鍋與OneNET保持長連接。
5功能調(diào)試與實(shí)現(xiàn)
5.1網(wǎng)絡(luò)調(diào)試助手
NetAssist設(shè)置NetAssist模擬電飯鍋硬件連接OneNET,根據(jù)官網(wǎng)上提供的《設(shè)備接入?yún)f(xié)議-EDP》,設(shè)置NetAssist的協(xié)議類型為TCPClient。本地主機(jī)地址設(shè)置為電腦本地IP地址,遠(yuǎn)程主機(jī)地址設(shè)置為EDP服務(wù)器IP地址180.230.40.39,端口號為876。若點(diǎn)擊連接后對話框變?yōu)榧t亮,則NetAssist連接成功。
5.2設(shè)備狀態(tài)檢測
根據(jù)上文設(shè)計(jì)的通信協(xié)議數(shù)據(jù)格式,電飯鍋連接OneNET上的設(shè)備號為4091736,APIKey為8Ex1CCrRNYoxBLj2IlYWx10Jn0w=的設(shè)備,因此網(wǎng)絡(luò)調(diào)試助手NetAssist發(fā)送的數(shù)據(jù)包為:1030000345445001400100000734303931373336001C38457831434372524E596F78424C6A32496C59577831304A6E30773D在NetAssist上響應(yīng)20020000,OneNET顯示在線,APP頁面顯示設(shè)備狀態(tài),此時(shí)表明連接成功。
5.3數(shù)據(jù)發(fā)送與接收
(1)發(fā)送與接收余米量。在電飯鍋啟動和電飯鍋煮飯完成后,電飯鍋都向OneNET平臺返回一次余米量。現(xiàn)假設(shè)電飯鍋硬件的儲米箱米量為1123g,根據(jù)上文設(shè)計(jì)的電飯鍋數(shù)據(jù)發(fā)送協(xié)議,發(fā)送的數(shù)據(jù)格式為“,;rice,01123”。其中,rice是余米量對應(yīng)的數(shù)據(jù)流;01123是固定發(fā)送的5位數(shù)據(jù),因此在1123前添加0,變成01123。數(shù)據(jù)包為:80100005000C2C3B726963652C3031313233在OneNET上的rice數(shù)據(jù)流中能看到數(shù)據(jù)01123,表明電飯鍋發(fā)送數(shù)據(jù)成功。電飯鍋發(fā)送余米量后,在APP界面顯示接收余米量的數(shù)據(jù)。
(2)發(fā)送與接收做飯狀態(tài)。在電飯鍋?zhàn)鲲埖乃膫(gè)過程中,每個(gè)過程完成后都發(fā)送其狀態(tài),告知APP其狀態(tài)并顯示在頁面上。其中,“洗米中”發(fā)送“AA”;“洗米完成”發(fā)送“BB”;“煮飯中”發(fā)送“CC”;“煮飯完成”發(fā)送“DD”,發(fā)送的數(shù)據(jù)格式為“,;status,AA”。5.4心跳包由于電飯鍋使用網(wǎng)絡(luò)調(diào)試助手NetAssist模擬,因此無法使用程序控制定時(shí)發(fā)送心跳請求。在本文設(shè)計(jì)中,需手動大約2min發(fā)送一次心跳請求,數(shù)據(jù)包為C000,維持電飯鍋與OneNET平臺的長連接。若確保心跳響應(yīng)為D000,則表明電飯鍋長連接能保持,EDP電飯鍋設(shè)備一直顯示在線。
6結(jié)語
本文借助OneNET平臺的EDP協(xié)議,設(shè)計(jì)了基于Delphi的可視化電飯鍋APP,完成了傳送數(shù)據(jù)包、分析Json數(shù)據(jù)、獲取Json有用元素的系統(tǒng)設(shè)計(jì)。通過測試表明,該系統(tǒng)運(yùn)行穩(wěn)定,數(shù)據(jù)傳輸準(zhǔn)確,發(fā)生重傳的幾率低,可應(yīng)用于對物聯(lián)網(wǎng)電飯鍋的控制。
參考文獻(xiàn)
[1]劉意期,彭一航,龍世瑜,等.基于物聯(lián)網(wǎng)+電飯鍋的設(shè)計(jì)[J].福建電腦,2017,33(9):8-9,14.
[2]朱璟,李世國.物聯(lián)網(wǎng)環(huán)境下的新型智能家電之設(shè)計(jì)思考[J].包裝工程,2010,31(16):70-73.
[3]中移物聯(lián)網(wǎng)開放平臺NBIoT設(shè)備接入[OL].[2017-08-03].
[4]彭小紅,邢旭峰,曾宏俊.基于OneNet物聯(lián)網(wǎng)云平臺的智能養(yǎng)殖系統(tǒng)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版).2017(31):67-72.
物聯(lián)網(wǎng)論文投稿刊物:《物聯(lián)網(wǎng)技術(shù)》雜志就是以迎接這次革命浪潮為己任,以紙質(zhì)媒體、網(wǎng)絡(luò)傳播為手段,采取網(wǎng)刊互動的方法,將物聯(lián)網(wǎng)這個(gè)提升為國家發(fā)展戰(zhàn)略的概念,用通俗易懂的語言和案例宣傳介紹給大家,為其廣泛的普及和應(yīng)用打好基礎(chǔ)。
轉(zhuǎn)載請注明來自發(fā)表學(xué)術(shù)論文網(wǎng):http:///dzlw/22645.html