王二飛


摘要:隨著國家經濟發展水平的不斷進步,我國社會基本矛盾已發生變化,人民群眾對生活質量提出了更高要求。“家”是人們生活的港灣,在信息技術急速發展的今天,智能家居已經成為大部分家庭的家居選擇。目前,市面上比較先進的智能家居軟件以Qt為技術基礎,軟件技術架構為C/S模式,通過Linux平臺,實現了編程、通信、服務器建設及數據庫構建等一系列目標,滿足了人們對于智能家居管理的控制及人機互動等需求。文章圍繞“基于Qt的智能家居管理軟件設計”這一話題進行了研究和探討.
關鍵詞:Qt;智能家居:管理軟件:設計
中圖分類號:TP39
文獻標志碼:A
0 引言
智能家居是近年來家居行業發展的主要趨勢,這一現象出現的原因一方面是信息技術當前已經滲透到社會發展的各個行業之中,成為各個行業發展的“指向標”:另一方面是人們已經感受到了信息技術在生活中的便捷性,生活質量越來越高,簡單的智能家居已經難以滿足人們對于家居的需求。進行家居管理軟件設計是未來行業謀求發展,滿足消費者需求,拓寬市場的主要方式,Qt是實現這一目標的技術基礎。
1 Qt簡介
Qt指的是一個跨平臺的C++圖形用戶界面應用程序開發框架,其中有不少白定義的C++類庫,使用者使用帶UI界面的QWidget能夠在短時間內編寫可視化圖形界面用戶端,使用QTcpSocket類能夠進行網絡通信[1]。Linux系統是網絡得以運行的關鍵,線程池thread-pool模式是服務器正常運行的基礎,之所以這樣說,是因為上述系統和模式能夠避免網絡進行新請求接收的時候服務器出現持續線程構建、進程銷毀的問題,使得CPU的使用效率不斷提高。現下發展勢頭比較猛的無線通信技術是ZigBee技術,作為一種短距離無線通信技術,其耗能低的同時還能夠在工控場合被應用,技術波段為2.4 GHz,應用了跳頻及擴頻技術[2]。
2 系統設計需求及整體構建
2.1 系統設計需求
智能家居系統作為一個整體系統,首先要對空氣中的溫濕度、光照強度、氣體濃度等重要環境因素進行準確感知,感知工具為傳感器,之后系統需要依據傳感器提供的環境因素對家中的家居設備如電燈、空調、冰箱等進行控制,這是系統自身運行的需求[3]。對于使用者而言,其需求為對系統進行良好控制,需要通過一個專門的控制App客戶端解決,App客戶端的功能設計不用過于復雜,用戶登錄之后用攝像頭遠程監控并實現對家居設計的控制[4]。
2.2基于Ot的智能家居管理軟件系統整體構建
2.2.1 整體設計
智能家居系統結構包含遠程控制、網絡通信、家庭網關及網絡4部分組成。系統核心以家庭網關為中心,橫跨ZigBee、GPRS/GSM及WiFi網絡,組成一個在PC、智能手機及電腦等智能設備上皆可以實現遠程控制的智能家居網絡系統[5]。智能家居系統的功能主要包括遠程控制和家庭電器信息采集兩方面,實現這兩項功能都需要用到智能家居管理App客戶端,用戶需要先在App客戶端完成注冊,登錄之后進入家居設備操作界面,界面中的信息為電器丁作情況(主要依靠家庭網關)。用戶能夠在界面中看到家中電器設備具體情況、攝像頭監控畫面等,還能夠看到當地天氣情況。App客戶端會向家庭網關發送JSON格式的白定義通信協議,家庭網關服務器在接收到信息之后會向App客戶端進行反饋[6]。
2.2.2 設計重點
(1)家庭網關。
家庭網關在智能家居系統設計中占據著十分關鍵的地位,是系統的整體控制核心,是家庭網絡連接外部網絡重要程序,家庭網關軟件需要應用分層結構,結構由底層驅動、Embedded系統、庫和應用程序4部分組成,庫及應用程序的移植是設計重點[7]。服務器應用Qt開發,同時在Linux平臺上運行。系統不僅要運行,還要讀取和存儲數據,因此還需要數據庫進行支撐,系統中的數據庫為SQlice,這是一種專用于Linux平臺的輕型數據庫[8]。
solite是一種專用于Linux平臺的小型數據庫,其與一般數據庫最大的區別在于這種數據庫的尺寸更小,操作起來也更為簡便,但是其他方面與一般數據庫并沒有太大區別,系統需要獲取采集的數據以及家中電器的運行情況[9]。Qt中的QSql模塊能夠對數據庫進行支持,技術人員要發揮QSql模塊中類的作用,需要在pro文件中插入“Qt+= sql”代碼[10]。
Qt對QSqlQuery類進行應用需要對soL語句或是SQL模型類QSqITableModel執行完成增刪改查數據庫這個過程。技術人員在最開始的時候需要應用SQLite database hrowser工具對數據庫(smarthome.db)進行構建,在smarlhome.db構建完成之后建立用戶信息、傳感器以及傳感器情況實時獲知程序[11]。
家庭網關軟件設計主要包含以下5點:
①SQlice數據庫移植,確保Linux平臺為數據庫提供支持。
②Qt/Embedded軟件支持庫移植,確保Linux平臺為Qt運行提供支持。
③SYSZUXpinyin移植.SYSZUXpinyin是一類輸入法。
④Hostapd( Host Ac.cess Point)移植,為無線路由器進行網卡配置。
⑤服務器軟件設計,這是本文工作的重點。
由于智能家居管理App客戶端與服務器控制界面差別不大,這里主要對服務器軟件設計進行介紹。軟件功能主要對App客戶端請求進行響應、對數據進行收集、存儲及反饋,命令操作能夠完成各類復雜功能。App客戶端運行完成之后會轉到用戶登錄界面,用戶登錄完成之后,可以在主界面看到“設備情況”“設備控制”“監控查詢”等功能[12]。
(2)基于Qt的智能家居管理軟件架構。
智能家居管理軟件設計的結構為C/S結構,這一結構是目前最先進也是軟件設計企業最常用的一種結構。這種結構的優勢在于能夠使App客戶端和服務器一同進行計算機任務,這樣不僅能夠確保對資源進行最大程度利用,還能夠最大幅度提高系統運行速度。系統程序包含App客戶端及服務器,服務器對家庭網關進行連接,App客戶端在幫助系統對服務器進行訪問同時讀取家庭網絡數據并對服務器進行反饋,完成控制。服務器在接到命令之后會將數據存儲同時轉發App客戶端命令。
服務器和App客戶端的技術依據為TCP( Transmission Control Prolocol)中的socket通信,這種通信方式傳播速度快,可靠性高,無需獲取復雜信息,只需獲取固定的IP地址和端口號,即可使用C/S模式構建TCP協議,實現不同通信進程間之間的連接。Transmlssion Control Protocol本質是一種傳輸協議,這種傳輸協議的作用是進行數據連接。Qt用于連接TCP客戶端及服務器的程序為QTcpSocket類及QTcpServer類。QTcpSocket類的作用是為TCP協議提供通用接口,用以完成其他標準協議。
(3)槽編程。
Qt信號——槽機制的作用是實現不同對象通信,槽機制的作用在Qt編程全程中都可以看到。對象情況轉變之后會發出信號,槽一般情況下屬于類中函數,作用是對信號進行接收,各個程序之間依靠connect函數進行連接,在接收到相關信號之時啟動對應的槽函數。系統軟件設計中包含非常多的信號槽編程。
3基于Qt的智能家居管理軟件運行流程
3.1 登錄
客戶端App會應用到Windows系統中的Qt4.6軟件。Qt程序中,軟件應用最開始需要用到mam.cpp,在其中創設QWidget對象,普通窗口用QWidget類表示,其中還包含QObect及QPaintDevice類,其余窗口繼承于QWidget類,Login.UI文件能夠實現對智能家居管理軟件的可視化編輯,具體表現為智能家居管理軟件登錄界面(見圖1)。之后UI界面按鈕會跳轉至槽,同時在系統中加上QAbstractButton類對象中的clicked()事件,Qt軟件此時會白動將槽函數聲明和相應的信號函數生成并在之后的運行過程中展示出來。若系統需要UI界面進行跳轉,需要提前在主界面的相關文件中增加子界面運行要求,之后在主界面的cpp文件中構建子界面類對象,同時對子對象進行調用,此外還需要將主界面UI關閉。
3.2 注冊
新用戶將軟件打開之后需要進行注冊,用戶在進入到注冊界面之后先需要輸入賬號、手機號進行注冊(注冊需要手機接收驗證碼并設置密碼)。客戶完成這一系列操作之后,客戶端App將新用戶的信息依靠socket請求傳輸給服務器,用戶若注冊成功,服務器同樣會依靠socket返回注冊成功標識信息給客戶端App。如果客戶在再次登錄的時候忘記密碼,只需要進入到找回密碼界面即可(見圖2).在“找回密碼”這一界面,用戶只要正確填寫注冊時的賬號及手機號就能夠成功修改密碼。用戶在這個過程中可以接著使用原用戶名,應用新密碼。在用戶正確輸入自己要用的賬號密碼之后,就可以進入智能家居管理系統的主界面。
3.3 控制
智能家居管理軟件控制主要分為手動控制和自動控制兩種,具體控制方式如下所示。
3.3.1 手動控制
用戶在智能家居管理軟件主界面能夠對家庭LED、風扇、空調及冰箱等家居設備進行手動控制,系統會對溫濕度傳感器提取到的溫濕度數據進行實時顯示。用戶只要連接網絡并打開定位,便能夠從App中獲知所在城市的天氣狀況。智能家居管理軟件查詢天氣依靠的是瀏覽器中的開發者工具,在獲知當地天氣預報中的天氣情況的同時還需要讀取Body、Header信息,應用在線HTTP接口測試T具測試可以得到JSON格式天氣數據,利用weacher.cpp解析JSON數據之后依靠QWidget類對象在UI界面中顯示相關數據。
3.3.2 自動控制
智能家居管理軟件處在自動控制模式狀態下,系統能夠依據當下環境對家中電氣設備進行智能化控制。若溫濕度傳感器感知到的室內溫度在30℃時,控制系統會自動將空調打開。若溫濕度傳感器感知到的室內溫度比26℃低時,控制系統會自動將空調關閉。同理,傳感器在測試到室內一氧化碳濃度過高的時候,系統會立即向用戶進行反饋。
4 結語
總而言之,在當下我國已經實現全面小康,向社會主義現代化邁進的背景下,群眾生活水平出現了大幅度提升,對于生活質量提出了自動化及智能化要求,這一點在家居行業中體現得尤為明顯。家居行業要滿足消費者需求,必須提高對智能家居管理軟件設計工作的重視,以Qt為技術框架,通過Linux平臺,為消費者提供一個良好的智能家居控制管理體驗。
參考文獻
[1]張純楊,張昊德,笪慶,等.一種基于Qt界面的多圖像拼接軟件的實現方法及其系統:202010480639.[P].2020-05 -30.
[2]潘志安,高知林,秦華旺,等.基于Qt的地鐵站智能照明系統軟件設計與實現[J].工業控制計算機,2020( 10):113 -115.
[3]何勇,王曉麗,肖海飛,等.基于物聯網的非侵入式用電器在線監測系統設計與實現[J].智能計算機與應用,2021(12):158-170.
[4]侯健明,靜國剛,吳松洋,等.基于QT的網絡設備拓撲管理平臺設計與實現[J].工業控制計算機,2022(1):87-88.
[5]邵春雨,李春輝.基于PLC的智能家居控制系統設計與實現[J].沈陽工程學院學報(自然科學版),2022(2):86-89.
[6]渠吉慶,陳禹,劉玉琪,等.基于語音識別智能家居系統的設計與實現[J].計算機技術與發展,2020( 12):148-152.
[7]王超.基于s3c2410和Qt/Embedded嵌入式實驗演示系統的設計與實現[J].文山學院學報,2022(2):65-67.
[8]李繼紅,安迎建.基于51單片機的智能家居火災報警的設計與實現[J].電子技術與軟件工程,2021(12):60-61.
[9]楊蝶,王銀玲,張伊洛.基于SVM-Qt的廢舊織物顏色識別系統的設計與實現[J].信息與電腦,2020(14):122-125.
[10]王斌,宋樹祥,王宜瑜,等.基于Qt與ArmNN的嵌入式噴碼檢測系統設計與實現[J].計算技術與自動化,2020(1):54-60。
[11]高昕悅,趙宇鴻,李達,等.基于ANSYS的亥姆霍茲線圈磁場分布研究實驗[J].實驗技術與管理,2021(5):175-179,186.
[12]路云靜,唐海萍.生態系統文化服務研究進展——基于CiteSpace的可視化分析[J].北京師范大學學報(自然科學版),2021( 4):524-532.
(編輯李春燕)