

摘要:網關作為智能家居系統的核心設備,其設計和實現的重要性不言而喻。文章對網關軟件應用開發的軟、硬件環境進行了簡介,重點針對基于Qt的網關軟件設計中的GUI設備狀態監測、串口類設計、GUI主線程中延時設計問題給出了有效的解決方案?;赒t設計了網關控制系統,系統能夠實現用戶的注冊、登錄、密碼修改等管理功能,可進行家電設備的單獨控制和一鍵情景模式控制。文章依據網關軟件設計流程進行軟件開發并完成系統測試與分析。
關鍵詞:Qt;物聯網;智能家居;網關
中圖分類號:TP312 "文獻標志碼:A
0 引言
隨著科技的不斷發展,智能家居市場呈現快速崛起的態勢。據IDC數據,到2025年,全球智能家居市場規模將達到2367億美元。在我國,智能家居市場同樣表現出強勁的增長勢頭。網關作為智能家居系統的核心部分,承擔著整個系統的數據采集、協議轉換、數據轉發、控制下達、存儲配置功能,可將許多相對獨立的傳感器、執行器等終端家居產品組合成一個系統,方便進行本地操作,也可通過互聯網或無線網絡實現遠程控制[1]。網關的設計和實現對于整體智能家居系統的性能產生至關重要的影響。
1 網關軟件開發環境簡介
圖形用戶界面(Graphical User Interface,GUI)技術的出現,改變了傳統的終端命令行控制與顯示的方式,體現了用戶友好、可視化和交互等優越性,因此圖形界面設計是非常重要的[2-3]。本研究中的網關應用開發環境主要由軟件部分和硬件部分組成。其中,軟件部分包括虛擬機VMware Workstation、Linux(Ubuntu)、Qt。Qt是奇趣科技于1991年開發的跨平臺C++圖形用戶界面應用程序開發框架[4-5],既可用于開發GUI程序,也可用于開發非GUI程序。同時,Qt支持“一個框架、一套代碼庫、任意平臺部署”。
本設計的網關軟件由A8網關、協調器和各類傳感器構成。在運行時,網關基于ZigBee協議實現協調器和環境監測傳感器及繼電器等執行器件之間的數據交換,其次通過串口線將協調器和A8網關連接起來。這一環節可實現數據的傳輸。數據經預處理后會顯示在A8網關的GUI界面上。反之,該應用還可通過此通信鏈將操作指令下發給執行器,完成智能家居的實時監控。硬件通信流程示意如圖1所示。
1.1 A8網關
A8網關是用于燒錄編寫的智能家居網關應用程序。用戶可通過觸摸屏操作對應的智能家居網關功能模塊,同時通過串口線與協調器連接進行數據傳輸操作,以此實現獲取環境參數和控制命令功能。
1.2 協調器
協調器主要用于與各種傳感器實現組網,利用ZigBee協議完成各組件之間的數據交換。
1.3 傳感器
本設計中與協調器組網的傳感器的組成構件包括溫濕度傳感器、光照度傳感器、煙霧傳感器、燃氣傳感器、CO2傳感器、PM2.5傳感器、氣壓傳感器、人體紅外傳感器、電壓型繼電器(控制報警燈、風扇、照明燈和門禁系統)、節點型傳感器(控制電動窗簾)及紅外轉發(控制電視、空調)。
2 智能家居控制系統面臨的關鍵問題
2.1 用戶界面設計不足,影響用戶體驗
在智能家居控制系統里,用戶界面設計存在不足,這是影響用戶體驗的主要問題之一。許多智能家居系統的界面布局和功能復雜,既缺乏直觀性又缺乏友好性,導致用戶在使用過程中因為界面操作流程煩瑣而體驗不佳,這樣不但增加了學習成本,還降低了用戶滿意度。如在某些系統設備控制方面,用戶須要進行多級菜單操作,導致在緊急情況時無法迅速作出反應。此外,設計不當的界面可能缺乏足夠的反饋機制,用戶無法及時了解系統狀態或操作結果,進而影響其對系統的信任感。
2.2 數據通信協議的復雜性帶來的挑戰
數據通信協議的復雜性是智能家居控制系統面臨的一大挑戰,因為智能家居系統通常是由多種設備構成的,各設備間必須通過ZigBee、Wi-Fi和藍牙等不同的通信協議來進行數據交換。這種多樣性雖然給系統的擴展性帶來了便利,但是也讓設備間的互聯互通變得復雜。設備間如果使用不同通信協議,可能會導致數據傳輸不穩定甚至出現設備無法識別的問題。
此外,協議轉換所需的時間延遲還可能影響系統的實時響應能力,進而影響整體用戶體驗。為有效解決這一問題,系統設計須要確保設備之間協議兼容有效或設計一個能統一管理各種協議的中間層,進而提高數據通信的效率和穩定性。
2.3 定時與延時控制在設備操作中的困難
定時與延時控制在設備操作中存在的缺陷十分顯著。智能家居系統以實時響應用戶指令而受到青睞。如在特定時間自動控制家電,由于設備間響應時間的差異會導致實際執行和預期不相符,則會影響系統可靠性。當用戶通過網關下達一項指令時,硬件設備可能因網絡延遲或系統負載沒能及時執行,進而造成用戶體驗感下降。此外,在涉及多個設備聯動時,如何有效協調各設備的響應時間是當前亟須解決的問題,尤其是在須要同時控制多個設備的場景下,設計合理的延時機制以確保各設備能在適當時間內響應用戶指令。
3 智能家居網關的解決方案設計與實現
3.1 基于Qt的網關軟件設計關鍵問題的解決方案
在智能家居網關的軟件設計里,Qt框架提供了一套很強的信號與槽機制,能讓不同組件間的通信變得高效又靈活。信號和槽是一種高級接口,應用于對象之間的通信,其是Qt的核心特性,也是Qt區別于其他工具包的重要功能,信號和槽是Qt自行定義的一種通信機制[6]。信號與槽機制通過QObject類的 connect( )函數來實現對象間連接,具體為connect(sender,SIGNAL,receiver,SLOT)。其中,sender是發出信號的對象,SIGNAL是發送對象發出的信號,receiver是接收信號的對象,SLOT是接收對象在接收到信號之后所需要調用的方法。sender與receiver是指向對象的指針,SIGNAL()與SLOT()是轉換信號與槽的宏[7]。信號與槽機制允許對象在特定事件發生時通知其他對象,其在設備狀態切換、傳感器數據采集以及用戶界面更新等方面都起到了關鍵作用。如用戶通過點擊“btnWarningLight”按鈕,就能實現報警燈的狀態切換。
QTimer類定時器是QObject類定時器的擴展版,因為其可以提供更多的功能[8]。QTimer類定時器的使用為定時操作提供了便利,不僅支持單次觸發,還能進行周期性觸發,使用QTimer類定時器的步驟如下:①創建一個QTimer定時器實例:QTimer*timer = new QTimer( );②連接超時信號與槽:connect(timer,SIGNAL(timeout()),this,SLOT(function( )));③啟動定時器start();④適時關閉定時器:stop( );⑤刪除定時器實例:delete timer。在網關軟件設計中,QTimer類定時器常被用來控制傳感器的定時采集、日志記錄以及家電的自動控制,通過合理設置定時器,能確保系統以穩定的頻率收集數據并進行處理。例如:白天時,系統會根據室內光照度參數自動調整窗簾的工作狀態,使室內長期處于相對舒適的光線亮度;夜晚時,系統則會自動關閉窗簾,保護用戶的隱私。
3.2 網關的串口通信設計
在本設計中,串口通信是智能家居網關跟其他硬件設備進行數據交換的主要功能,采用Qt的第三方串口庫QextSerialPort來實現串口的高效讀寫操作。通過 open( )、close( )、setBaudRate( )、setDataBits( )、setParity( )、setStopBits( )、setFlowControl( )、setTimeout( )、readData()、writeData()等接口函數,開發者可靈活配置串口參數來保證數據正確傳輸,為了保證串口通信的高效性,還設計樂串口線程(SerialPortThread)、串口數據接收處理(SerialPortReceive)以及串口數據處理(SerialDataHandle)等。
串口線程類負責串口參數配置,在接收到數據時會發射 readyRead( )信號,其他對象通過信號與槽機制可把該信號和對應的接收處理函數連接。串口數據接收處理類主要是把接收到的數據解析成完整的數據幀并進行校驗,以確保數據有效,而串口數據處理類負責對接收的數據進行解析和存儲,同時也能處理待發送的數據并將其轉換成合適格式。
3.3 網關GUI主線程中的延時設計
在智能家居網關的操作當中,控制指令的下發通常需要遵循一定時間間隔,這樣才能確保硬件設備能有效響應。延時設計分為阻塞延時和非阻塞延時。所謂阻塞延時,是指阻塞當前線程,直到延時結束,方可進行其他操作,如果設計中有界面,界面會卡住。非阻塞延時是指在延時的過程中,可以進行其他操作,如果設計中有界面,界面不會卡住。阻塞延時會讓當前線程停滯而沒法進行其他操作。這在用戶界面設計里是禁止的,基于此,本設計采用了非阻塞延時方式,保證在延時過程中系統依然能處理其他事件。
為解決CPU占用率過高的問題,程序可設置進入睡眠模式。程序睡眠一般時間極短,對于用戶而言不會有太大影響,但對Linux內核的意義迥然不同。程序睡眠讓Linux內核有充足的時間調度線程,有機會執行其他程序。具體操作如下:在設計里通過調用QTime的currentTime( )函數獲取當前系統時間,在while 循環里不斷對比當前時間和設定的時間點,在循環體里調用QCoreApplication::processEvents(QEventLoop::AllEvents, 100)函數,讓事件循環能繼續進行,保持用戶界面的響應性。在循環體里調用的processEvents( )語句能夠使程序在while等待期間,處理本線程的事件循環。處理事件循環在100 ms內必須返回本語句。如果提前處理完畢,程序則立即返回這條語句。通常processEvents( )不宜過于頻繁調用,但調用次數也不宜過少。調用過于頻繁,一方面會使UI線程的響應更好,但另一方面會導致原本就耗時的任務變得更加耗時;調用不夠頻繁時,顯然可能會使GUI線程的響應變差,例如每500 ms才被調用一次,那么GUI的事件循環就只能500 ms才被處理一次。這個問題可以通過設定processEvents( )的第二個形參略微得到改善。更好的做法是保證被調的周期小于200 ms,這樣不至于出現肉眼可見的卡頓。這樣的設計保證了在執行延時操作時,用戶依然能夠和界面進行交互,進而提升用戶體驗。
3.4 網關軟件界面設計與功能實現
Qt中的Qt Gui庫專門定義了圖形用戶界面類,用戶使用各種Qt控件進行組合可設計實現UI界面[9]。Qt支持用戶可視化界面設計,可以直接用鼠標拖動控件設計UI界面,相應的UI界面實現代碼Qt Creator可以自動生成。QWidget類是Qt圖像用戶界面組件的基類,每個Qt控件均繼承于QWidget類[10]。Qt提供的圖形用戶界面(GUI)組件,讓設計用戶友好的界面變得容易。在本設計中,網關軟件的界面是由多個功能模塊組成的,有登錄與用戶管理、環境監測、智能控制、情景模式以及自定義條件設置等,用戶能通過直觀的圖形界面來進行各種操作從而提升使用的便捷性和效率。
在界面設計方面,本研究基于QWidget類實現UI界面。對于多界面,開發者可以采用QStackedWidget類實現。QStackedWidget類實質是管理窗口部件的棧,在某一時刻只有一個棧部件的子窗口可見。設計者可以通過setCurrentIndex( )方法來設置當前顯示的窗口,以實現UI界面的切換。登錄與用戶管理界面支持用戶的注冊、登錄、修改密碼以及用戶信息管理,這樣可以確保系統的安全性和易用性。主功能界面實時顯示傳感器數據,這樣用戶就能明確家居環境的狀態,通過直觀的圖標可實現對家電的單獨控制。智能控制功能區支持用戶通過簡單的圖標點擊實現對各個家電的控制,情景模式功能區提供了一鍵式的場景切換。用戶依據不同需求可快速調整家居環境,而自定義條件設置聯動模式功能區則支持用戶按照自己的需求去設置聯動條件,從而實現更靈活的家居控制。網關軟件設計流程如圖2所示。
4 系統聯調結果及分析
網關軟件程序在編寫完成后,需要制作鏡像并將鏡像通過使用MiniTool燒寫工具移植到網關,完成網關的配置與連接。檢查各環境監測節點傳感器電路以及各控制節點電路是否連接正確,進行網關應用軟件的操作測試。用戶登錄后能夠順利進入主功能界面,界面顯示數據穩定,可以進行家電設備的單獨控制。此系統可實現一鍵情景模式控制,擁有離家模式、回家模式、白天模式、夜間模式和安防模式。經測試,系統自定義設置條件聯動控制監測準確,網關軟件的操作性、穩定性及實用性能夠達到預期目標。
5 結語
本項目基于智能家居設備設計了一種基于Qt的智能家居網關控制系統,旨在為人們提供環境監測、家電控制和家居安防服務。本文設計的智能家居網關控制系統仍有需要進一步改進和完善之處:(1)在網關軟件上,優化UI和體系結構,設計更具有藝術感和人性化操作的界面。(2)豐富擴展智能家居控制系統,如增加家庭視頻監控,實時遠程監控、自動報警和本地視頻錄制存儲等。(3)接入云端服務器,在人工智能、大數據、云計算、智能語音的支持下,系統可升級為智慧家居系統,提供更多高級功能,使用戶生活更加舒適便捷。網關在家庭智能化中扮演著連接和控制中心的角色,在未來必將成為電信運營商、互聯網企業以及一些核心家電廠商展開市場角逐的重點。
參考文獻
[1]李偉強.跨界合作實現智能家居產業鏈共贏[J].中國公共安全(綜合版),2012(20):70-72.
[2]李全虎.交互界面開發工具-Qt[J].中國科技信息,2005(5):33.
[3]許歡.基于智能算法的適老化智能家居人機交互系統設計[J].自動化與儀器儀表,2022(12):16-19.
[4]王博,曹嘉城,孫超,等.基于ARM控制器與Qt界面編輯的手機設計[J].科技風,2017(20):15.
[5]王玉山.C++程序設計語言的實踐教學建設:以廣東外語外貿大學C++實踐教學建設為例[J].中小企業管理與科技,2017(1):103-104.
[6]岳駿,解乃軍.基于STM32的物聯網智能家居系統設計[J].工業儀表與自動化裝置,2022(2):27-31.
[7]王曉輝,聶小華,常亮.基于Qt的專用有限元軟件GUI模塊的設計與開發[J].計算機應用與軟件,2020(1):21-26,65.
[8]吳連港.基于Qt的嵌入式水質檢測系統界面軟件設計[J].農業裝備與車輛工程,2021(11):140-142.
[9]李錦明,張志豪.基于Qt的大棚溫濕度監控系統設計[J].電子測量技術,2021(8):135-140.
[10]曾明輝,談宏華,邢栢豪,等.基于QT和智能網關的智能家居系統設計[J].自動化與儀表,2021(10):28-32.
(編輯 王永超)
Design and implementation of smart home gateway control system based on Qt
WANG" Erfei
(Yangzhou Branch of Jiangsu Union Vocational and Technical College, Yangzhou 225003, China)
Abstract:" The gateway, as the core device of the smart home system, is of great importance in its design and implementation. This paper introduces the software hardware environment for the development of gateway software applications, and focuses on the effective solutions to the problems of GUI device status monitoring, serial port class design, and delay design of the main thread of GUI in the design of gateway software based on Qt. The gateway control system is designed based on Qt, which can realize the management functions such as registration, login, and password modification, and can control the household appliances separately and control the one-key scene mode. The software development is carried out according to the gateway design process and the system test and analysis are completed.
Key words: Qt; Internet of Things; smart home; gateway