劉宇耀,劉增力*,湯 輝
(1.昆明理工大學 信息工程與自動化學院,云南 昆明 650500;2.江西省科技基礎條件平臺中心,江西 南昌 330003)
針對智能家居領域,目前市面已出現許多與物聯網技術結合的智能家居設備應用,可以有效監測居住環境的適宜程度和安全情況。吳洋設計的智能家居系統可以通過傳感器檢測室內的火災和煤氣泄漏事件,通過NRF2401 無線通信方式通知用戶及時處理[1]。吳允強設計的智能家居系統可通過手機向室內WiFi 發送命令控制智能家具開關,能遠程控制家電運行[2]。岳駿采用STM32 單片機控制監測室內溫濕度、光照強度及有害氣體,并向用戶發送相應的報警信息[3]。蔣盼盼設計的智能家居系統,可在遠程通過WiFi 發送命令,協調室內Zigbee網關控制智能家居運行[4]。李亞慧設計了一款智能安防系統,采用人臉識別、紅外探測技術以及重力感應技術,在門鎖處監測是否有可疑人員并通知用戶[5]。徐雍倡通過Zigbee 組網技術將傳感器與家庭設備連接在一起,實現一體化管理,能夠直接通過傳感器數據控制家庭設備運行[6]。
對于大部分智能家居應用而言,對傳感器監測結果的處理方式過于簡單,不夠完善,只是做最簡單的判斷,只要監測數據不在所設置的合適范圍內,就會觸發報警及相應措施。在此情況下,如果傳感器出現故障或由于其他原因導致監測數值出現短暫異常,系統就會根據監測的異常結果做出錯誤判斷,從而觸發錯誤決策,造成一些智能家具響應并做出錯誤行為,比如可能在溫度合適的時候開窗或者開風扇,從而產生完全不必要的消耗。本文對各感知設備監測的數據進行異常值檢測和替換,能夠使智能家居系統正常運行,減少不必要的能耗和錯誤決策。
本文根據目前較為普遍的智能家居設備應用需求,通過STM32單片機搭載DHT22溫濕度傳感器、HC-SR501 紅外傳感器、BH1750 光照傳感器以及MQ-5 可燃氣體傳感器,監測房間居住環境和安防情況,并通過WiFi 方式將數據上傳至阿里云平臺。在云端對傳感器監測結果數據進行判決分析,做出相應決策,并通過WiFi 控制繼電器和紅外遙控器連接,開啟和關閉各項智能設備如空調、燈具、窗戶、蜂鳴器及報警系統等。
為了減少因傳感器異常所產生的錯誤異常結果導致的決策誤判,在對傳感器監測的數據進行決策判決時,先將一定時間內的監測數據進行異常值檢測和整合,得到一個綜合數據,提高數據的可靠性,再根據得到的綜合數據進行結果判斷并執行相應決策。
本文設計的智能家居系統,利用STM32 作為主控板搭載DHT22 溫濕度傳感器、MQ-5 可燃氣體傳感器、HC-SR501 紅外傳感器以及BH1750 光照傳感器,對房間里的溫濕度、可燃氣體、光照強度及可疑人員進行監測,將監測得到的數據通過WiFi方式上傳至阿里云平臺,在云端對這些數據進行處理判斷。室內的一些智能家具可通過WiFi 方式連接云端,接受云端指令控制。云端對傳感器上傳的監測數據進行判斷,并通過WiFi 方式下發相應決策命令,控制不同智能家具運行。系統整體框架如圖1 所示。

圖1 系統框圖
DHT22 溫濕度傳感器采用單總線形式連接單片機,可以同時監測0~99.9%范圍的濕度以及-40~80 ℃的溫度[7]。DHT22 傳感器輸出40 bit溫濕度數據,包括16 bit 濕度數據、16 bit 溫度數據及8 bit 校驗位,其中溫度16 bit 數據的最高位代表正負位。
HC-SR501 人體紅外傳感器連接單片機GPIO口,能夠監測人體特有的紅外輻射[8];輸出0 或3.3 V的電平信號,經過處理得到0 或1 的結果,0 表示沒有檢測到人,1 表示監測到人。
BH1750 光照傳感器通過光敏電阻感知光照強度變化,輸出模擬信號。當受到的光照強度越強,其電阻就越小,輸出就越大。輸出數據通過模塊內置的模數轉化器(ADC)轉化,連接單片機,輸出光照強度的數字信號。
MQ-5 傳感器以SnO2作為氣敏材料,對空氣中的可燃氣體(液態氣、天然氣、煤氣)較為敏感[9]。其輸出是根據傳感器在氣體中電導率變化得到的模擬值,也需要接入單片機的ADC 模塊進行模數轉化。
系統采用WiFi 方式傳輸數據。各個傳感器的監測數據通過WiFi 模塊連接并發送至阿里云服務器。系統將ESP8266 WiFi 模塊設置工作在STA 模式,連接室內的WiFi 路由熱點,將整個系統連接至網絡[10]。系統連接阿里云物聯網服務器,從而控制系統通過MQTT 訂閱報文方式上傳數據至阿里云物聯網平臺[11]。
對于室內居住環境的控制,系統通過DHT22溫濕度傳感器監測室內溫濕度,當溫度過高、超過所設定閾值時,云端可通過WiFi 方式向智能風扇下發指令,開啟風扇降溫直至溫度低于所設閾值后停止。當濕度數據高于所設閾值時,云端可下發開窗命令,控制電機打開窗戶,當室內濕度達到合適范圍時,再控制電機關閉窗戶。
當確認房屋主人不在時,如果紅外傳感器監測到異常人員,云端下發蜂鳴器報警命令,并向用戶發送提示信息。此時光照傳感器的測量結果不會產生任何響應,室內燈具不會開啟。而當確認房屋主人在家時,云端對紅外傳感器監測數據不做響應,如果光照傳感器監測的光照強度低于所設閾值,云端下發開燈指令,控制室內燈具開啟照明。
對于房間內可燃氣體的監測,當MQ-5 可燃氣體傳感器監測到可燃氣體濃度達到所設的濃度限值時,就會觸發蜂鳴器報警,并向用戶手機發送報警信息,通知用戶及時處理。
智能家居系統中的傳感器在監測時,短時間內監測數據一般不會出現很大的浮動。而由于傳感器本身的原因或者一些電路的原因,可能會出現少量明顯不符合實際的數據,或者與大部分相鄰數據差別很大的值,可以稱之為異常值。這些異常值不能表現所監測的真實信息[12]。
在智能家居系統中,如果不事先對監測的數據進行處理就直接進行判斷,一旦出現異常值,系統根據這個異常值進行決策判斷,就會導致智能家具做出錯誤響應。例如,當濕度數據異常,突然高于所設閾值,系統就會控制窗戶開啟,但下次監測得到的濕度數據又恢復正常,窗戶就又會關閉,這樣就會造成不必要的電力消耗。如果紅外傳感器產生異常監測數據,甚至會導致誤報警操作。
為使數據更加有效,系統監測結果更加可靠,需要對異常值進行檢測。考慮到后續融合算法設計,為保持數據維度,在檢測到異常值時,本文并非只將異常值簡單地去除,而是將其進行修正替換。
本文采用的異常值檢測方法為箱線圖法。箱線圖法是取出整個數據集中的最大值Xmax、最小值Xmin、上四分位數Q3、中位數Q2以及下四分位數Q1,如圖2 所示[13]。

圖2 數據四分位劃分圖
對統計得出的這5 位數進行計算,定義四分位距IQR為:

將上、下四分位數分別向上和向下擴展1.5 倍的四分位距,得出上下邊界,并以此構成有效數據區間。在這個區間上的值視為有效值,反之,在區間外的值就視為異常值。公式如下:

式中:IQRL表示為下邊界,IQRH表示為上邊界。構成的有效值區間為[Q1-1.5IQR,Q3+1.5IQR],如圖3所示。
由圖3 所示,系統監測到一系列數據結果后,如果出現異常值,這些異常值自然就會存在于有效區間外。系統將有效值區間外的數據視為異常值,并對其進行修正。

圖3 有效值區間
本文采用標準自適應修正算法進行修正。將異常值與除去異常值后的均值進行比較后,視情況進行一系列收斂運算,得到自適應的修正值作為替換值,減少誤判影響。
設xi為所檢測出的異常值,所收集的樣本除去異常值后的均值用xm表示,兩者的差值用Δ 表示,用x(表示修正值。
當xi>xm時,Δ=xi-xm,可以根據當前監測環境項目數據差值的大小設置3 種限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,則修正算法如下:

當xi<xm時,Δ=xm-xi,同樣地,數據與均值之間的差值的大小設置3 種限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,則修正算法如下:


除了上述情況外,如果異常值與均值之間的差值過大,超過了所設的最大限值,即Δ>Δ3時,該異常值就完全沒有了參考價值,直接用均值進行替換即可。
按照上述方法對異常值進行替換,考慮到異常值出現的影響因素,在數據量較少的情況,要比直接用均值替換更加符合實際,能夠盡可能地減少異常值所帶來的影響。
本文設計的的智能家居系統的監測周期為4 s,系統每2 min 對采集到的監測數據進行整合處理,因此所處理的監測數據為30 個。
將各項傳感器監測數據替換異常值后,得到更加合理準確的數據,再對2 min 內的數據進行求平均,得到其平均值作為最終的傳感器的結果值上傳至阿里云平臺,作為智能家居的評判依據。這樣就會大大減少智能家居系統誤判的可能,使得整個系統的運行更加穩定,避免了不必要的消耗。以濕度數據為例,將2 min 內監測到的濕度數據按照上述方法處理,首先進行異常值檢測,通過箱線圖法得到監測數據的有效值區間,如果在數據向量中存在超出重設區間的值,就將其視為異常值,并進行替換。對數據進行異常值替換后的結果如圖4 所示。
從圖4 的結果可以看出,傳感器在2 min 內監測到的濕度數據中出現了一個異常值,與相鄰的值差別很大,不能表現當時真正的濕度情況。如果智能家居設置的閾值為當濕度超過50%系統就會控制電機打開窗戶,那么當監測到傳感器出現上述異常值時,系統就會做出錯誤決策,窗戶就會打開。而經過處理后得到的數據更加平滑,更加合理,提高了整體數據的可靠性,降低了誤差。對處理后的數據進行求平均,作為最終的結果,這樣就不會觸發錯誤的判決,也不會打開窗戶,有效地減少了不必要的操作。

圖4 替換異常值后數據對比
針對智能家居系統在運行時出現異常值,導致云端做出錯誤判決并控制相應智能家具做出錯誤響應的問題,本文設置了一種數據處理方法。云端在收到傳感器監測信息后,收集一定時間內的數據進行異常值檢測替換,使數據更加合理準確。實驗證明,將一定周期內的數據中的異常值進行修正,能夠大大減少錯誤判斷的產生,使系統做出正確決策,從而能有效避免家具錯誤運行。