范曉紅
(山東信息職業技術學院,山東濰坊, 261061)
物聯網技術可以智能感知生活環境變化、自動控制工業設備、自動檢測空氣質量等,廣泛應用于如智慧農業、智能交通、大數據采集、AIoT、工業互聯設備、泛在電力物聯網等產業,尤其是在國家“新基建”宏觀策略的發展下,物聯網技術逐漸融入我們日常生活,例如小米智能家居、海爾智能家居等等,市場上智能家居類產品多樣化[1],為家庭生活融入了科技,大大提升了居家生活的舒適性,非常受歡迎。尤其是移動終端的普及,開發一款實用的、便攜的智能家居類的APP滿足了用戶日益增長的使用需求,尤其是對于工作忙碌的年輕人或者行動不便的老人,智能家居的出現,提升了家中的舒適度及居住質量,使得科技與生活融為一體。
本系統提出了基于云+Android的物聯網智能家居系統,通過網絡將設備、家電、家居等互聯,并將家居環境等信息通過互聯網上傳到云端,通過物聯網移動客戶端進行智能化控制,配備溫濕度監測、煙霧報警、智能電燈開關、智能門禁等等,實現智能化居家體驗。
本物聯網智能家居系統總體包含四大模塊:注冊、登錄、場景、我的。

圖1 功能架構圖
注冊、登錄模塊用于用戶信息的注冊、登錄管理。場景主頁展示了智能設備在客廳、臥室、陽臺、廚房等不同場景的應用。場景中包含四個不同的子場景,可以實現對不同場景下設備進行監測、控制、調節等操作。我的界面包含登錄、注冊、二維碼查看、問題與建議、關于等部分。感知層設備數據經過中心網關上傳到新大陸云平臺。該軟件系統通過網絡通信實現與云服務器的信息交互,并完成對家居設備進行監測、控制。
本智能家居系統由各類感知層傳感器、Zigbee通信模塊、智能開關、電燈、空調風扇、路由器、中心網關等設備組成。其中感知層傳感器包括溫濕度傳感器、煙霧傳感器、光照傳感器等。Zigbee 通信協議是短距離無線通信技術[4],本系統采用的感知層傳感器均是通過Zigbee按照Modbus協議進行通信,由Zigbee協調器進行匯聚并通過以太網網絡設備,按照TCP協議將采集的數據上傳到物聯網云端,Android應用程序主要通過訪問云端服務器對環境、設備進行監測、預警、控制。

圖2 硬件結構圖
本物聯網智能家居系統總體包含四大模塊:注冊、登錄、場景、我的。
注冊、登錄模塊主要用于新老用戶的個人信息注冊、登錄、個人信息管理。場景模塊主要展示了智能設備在客廳、臥室、陽臺、廚房等不同場景的應用。場景中包含四個不同的子場景,可以實現對不同場景下設備進行監測、控制、調節等操作。我的界面包含登錄、注冊、二維碼查看、問題與建議、關于等部分。感知層設備數據經過中心網關上傳到新大陸云平臺,該軟件系統通過網絡通信實現與云服務器的信息交互,實現在APP中完成家居的智能化控制使用,并完成對家庭環境的監測、控制。該系統的實現主要分為UI設計和功能開發兩大部分。圖3為軟件系統的總體流程圖。如果是首次使用系統,則需要完成用戶信息注冊,否則填寫個人登錄信息完成系統登錄,在登錄過程中系統會判斷是否自動登錄,如果是則自動登錄到上次登錄的賬戶中,否則重新輸入用戶信息完成登錄。當登錄成功后可以進入到場景界面,場景界面包含四個不同的子場景用于不同室內場景的管理,用戶可以選擇對應子場景進入并完成室內環境的監測與控制。

圖3 軟件流程圖
1.3.1 功能開發
該應用程序主要功能包括用戶信息管理與注冊、傳感器數據采集與顯示、監測數據列表展示、感知層設備控制、網絡訪問云平臺、用戶數據存儲與讀取等模塊。
注冊登錄界面中用戶數據是基于SQLite和Shared Preferences進行數據存儲與讀取。如果用戶初次使用,則需要注冊,注冊信息將會通過SQLite保存在數據庫中供登錄驗證,登錄過程中通過輸入的用戶信息與數據庫中的信息進行比對,如果匹配成功則進入主頁面,否則提示“用戶登錄信息錯誤,請重新登錄”。SharedPreferences是Android中一種輕量級的易用存儲類,可以實現輕量級數據的存儲與處理,尤其是針對一些配置信息等占用內存不大的數據,使用SharedPreferences可以快速、便捷地完成數據的管理。本模塊主要使用SharedPreferences對已登錄過的賬號信息及配置信息進行存儲與讀取完成快速登錄。SQLite數據庫是Android集成的輕量級的關系型數據庫,適用于手機等移動端的數據存儲。使用SQLite對注冊的賬號、密碼等進行管理維護,當用戶注冊時,會根據用戶的注冊信息通過調用SQLiteDatabase中的OnCreate(SQLiteDatabase)方法在數據庫中創建對應的數據庫表結構及初始化信息,便于后期的運行維護及管理。同時還使用了管理數據庫的工具類SQLiteOpenHelper,通過調用其中的GetReadableDatabase()、GetWritableDatabase()分別完成數據庫的讀取及修改等操作。
登錄成功后,主頁共顯示兩個Tab頁面:“場景”和“我的”,可以通過觸摸完成“場景”和“我的”Tab頁的切換。由于Activity自身特性限制無法在同一個窗口中完成多個布局的展示,故本應用中的Tab頁主要通過Fragment嵌入到Activity中完成多布局切換的效果。
點擊“場景”Tab標簽,進入場景頁面。場景模塊主要分客廳、臥室、陽臺、廚房四個主要的家居應用子場景,子場景主要通過Activity進行場景管理。當感知層設備連接成功后,每個場景頁面均可以遠程對房間內的設備、環境進行控制、監測,實時獲取室內溫濕度、光照強度、煙霧數據等信息,并實現燈光控制、風扇空調等的開關。
為了能夠及時發現家中的突發情況等,設計過程中添加了自動預警策略,實時對突發情況進行預警處理。預警策略設置如下:
當監測到室內煙霧濃度值大于設定閾值時,進行煙霧濃度過大預警;
當光線較弱并且有人在家時,自動開燈;
當溫度過高并且有人在家時,自動開啟風扇。
感知層傳感器采集的數據可以通過協調器、路由器與手機直接進行socket通信,但是前提是手機與路由器必須在同一個局域網內,如果家庭成員有事外出,家中無人的情況下,手機與家中路由器無法處在同一個局域網內,此時無法通過手機實時查看家中環境情況,由于手機和設備不在同一個局域網內無法直接控制家居設備,為了解決此問題,本應用程序將家庭中采集到的家居環境數據通過網絡實時上報到公網中的云平臺,并在云平臺對數據進行存儲、初步分析處理。APP可以隨時通過云平臺間接獲取家居環境數據,實現了在任何有網絡的地方都可以查看、訪問我們的家居設備及數據,同時通過云平臺可以實現對數據的歷史記錄存儲、查閱、統計,并可以結合歷史數據對智能家居的環境進行預測,提前預警一些可能出現的異常情況。
室內安裝溫濕度、煙霧傳感器、火焰傳感器等對室內環境進行實時監測,尤其是當家中無人的情況下及時通過手機對家居環境進行監測、預警、處理等。采用網絡通信對家居環境進行遠程控制,HTTP是當前應用程序主流的網絡通信協議,OkHttp是基于HTTP設計的網絡通信客戶端,支持使用GET和POST方式進行網絡請求,支持響應緩存避免重復的網絡請求,并可以通過連接池極大減少延時。但是OkHttp在使用過程中調用關系較為復雜,請求數據時接口配置較為繁瑣,降低了編程的效率。Retrofit將請求參數、返回結果等進行了封裝,大大簡化了開發者的工作量,故本模塊使用Retrofit和OkHttp網絡開源框架進行網絡訪問,使用Retrofit通過接口的形式進行網絡的請求及監測結果處理,使用OkHttp對請求的過程進行處理,只需要通過簡單的配置可以進行網絡請求,大大提高了開發效率。
云平臺將數據進行匯聚后,可以在云平臺上顯示采集的數據的詳細信息,并可以通過云平臺上的應用項目進行數據管理和控制,手機APP也可以獲取云平臺服務器中的數據顯示在手機應用程序上,并可以通過便攜式手機客戶端完成設備的控制。本軟件使用的是新大陸云平臺,它將傳感器采集的數據以JSON格式進行封裝,并開放給用戶使用,JSON格式是一種簡單的數據交換格式,層級分明、格式簡單、訪問便捷,所以在開發過程中我們選用JSON格式對數據進行處理,并采用Gson中的ToJson()和FromJson()方法將數據封裝成JSON格式或者將JSON格式數據解析成對象并顯示在界面中,當監測到數據產生異常后及時預警,例如當檢測到室內煙霧濃度過大有火災隱患等時,可以發送指令開啟報警燈,指令可以通過GSON進行JSON格式封裝并上傳到云平臺,進行預警處理。
JSON是一種輕量級的數據交換格式,由于不同的云平臺在網絡通信過程中對數據的傳輸格式有不同要求,本開發平臺主要使用新大陸的物聯網云平臺,數據傳輸過程中的主要通過傳感器標識名、設備ID、傳輸密鑰進行通信,HTTP網絡通信過程中數據的上報和下發都是基于JSON格式的,格式如下:


云平臺數據上報成功后的效果圖如圖4所示。

圖4 云平臺
個人信息“我的”界面主要包括登錄信息、二維碼展示、設備維修、問題與建議、關于等選項,主要采用List列表及BaseAdapter進行數據展示及適配,當進入“我的”界面時,會自動檢測是否已經登錄,如果檢測到已登錄則切換到已登錄界面,否則顯示未登錄,當選擇進入任何選項時,均會判斷是否已經登錄,是則顯示已登錄,否則顯示未登錄。設備維修界面主要用于家居環境中的故障設備報修處理,可以通過填寫設備報修單將數據上報以待處理。
1.3.2 UI界面設計
界面設計力求簡潔、大方。進入APP后首先顯示歡迎界面,并設置自動過渡效果,5s后切換到主界面。所在在進行界面開發過程中盡量突出重點功能,主界面主要包括注冊、登錄、場景、我的四個主要界面以及相關的子界面。界面開發過程中使用了線性布局、相對布局、約束布局等進行了布局的設計,并使用EditText、TextView、Button、CheckBox等控件進行數據展示及控制,并添加按鈕的點擊事件進行事件響應。

圖5 軟件展示
安裝并運行設計程序到手機中,經過多次測試及用戶體驗,本文設計的應用程序能夠成功通過云平臺實時獲取居住環境中的溫濕度、煙霧、火焰等數據,并可以成功通過程序控制電燈、風扇空調及報警系統等。通過云平臺增強了系統獲取數據的穩定性,并可以通過云平臺添加策略進行數據處理、設備控制等,提升了智能家居控制的體驗感,為新型居住環境的建設、智能家居的升級、改造提供了軟件環境支持。