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