鄧二偉,黃 冰西北民族大學電氣工程學院,甘肅蘭州 730000
對智能家居數據交互的研究
鄧二偉,黃 冰
西北民族大學電氣工程學院,甘肅蘭州 730000
隨著Internet網絡技術的不斷發展,隨著嵌入式系統的創新應用,隨著物聯網概念的深入普及,智能家居物聯網技術愈來愈受廣大人民群眾的青睞。近年來,智能家居系統迅速發展,涉及很多的技術領域。要把物體連接到網絡中,最主要的就是數據在網絡中的傳輸交互問題。本文主要針對數據交互問題作出簡單研究,提出一套簡單方便實用的智能家居系統方案。
嵌入式;數據交互;智能家居
目前,智能家居系統設計方案有很多種,例如,基于云端服務器、微信公眾平臺以及云端數據庫等設計的智能家居系統。考慮到技術問題,本次研究提出一種基于B/S網絡構架(瀏覽器/服務器)的智能家居系統方案。該網絡構架簡單來說就是通過網絡傳輸協議使得瀏覽器與Web服務器之間進行數據交互。服務器需要用到必要的模塊,例如數據獲取模塊、數據處理模塊以及數據存儲模塊。數據獲取可以用動態網頁或其他技術來提取瀏覽器提交的表單數據;數據處理可以利用Python等程序對獲取的數據進行處理;數據存儲可以利用數據庫等技術。這里,通過CGI接口或者Python讀取數據庫對服務器中獲取的數據進行處理并與其他設備進行交互。
CGI接口即通用網關接口,是服務器提供信息服務的標準接口。通過該接口,服務器就能獲取客戶端通過瀏覽器提交的數據,將數據轉交給程序進行處理,或者與外圍設備進行數據交互。該接口由兩部分組成,一是服務器中的網頁,二是服務器后臺運行的CGI程序。
根據該原理,可以提出一套數據交互方案:第一步,搭建Web服務器,編寫HTML網頁以及其他網頁;第二步,編寫CGI服務器后臺應用程序。該流程大致如下:首先,客戶端通過網絡傳輸協議訪問服務器,將網頁中的表單數據提交;然后,服務器后臺運行的CGI程序將數據獲取后,將獲取的數據分離后進行處理,然后將數據與其他接口進行交互。
目前,LAMP是應用比較廣泛的嵌入式網絡服務器,它指的是在Linux系統下,安裝Apache服務器、MySQL數據庫和搭建PHP環境。由于可以通過PHP訪問數據庫,因此,這里可以將網頁中的表單信息獲取后直接存入數據庫,然后通過Python對數據庫的訪問,將數據再次提取出來。
因此,這里又產生了一套方案:第一步,搭建LAMP服務器;第二步,編寫PHP網頁;第三步,編寫Python程序訪問數據庫,將數據提取后與其他外圍設備進行數據交互。需要注意的是,在PHP訪問數據庫時,一定要修改PHP的配置文件,使其能夠使用操作數據庫的函數。
由于PHP獨特的語法,它可以比CGI更快速地運行動態網頁。它做出的動態頁面與其他的編程語言相比,可以將程序嵌入到HTML語言中,執行效率比HTML標記的CGI要高許多。根據上述兩種方案的穩定性、實用性和難易程度綜合考慮,本次研究采用方案二。
在PHP獲取網頁表單數據之前,要了解網頁中的表單數據的提交方式。在HTML標記的表單中,有GET 和POST兩種提交表單的方式。這兩種方式的不同點有一下幾點:第一,前者是從服務器上獲得數據,而后者是想服務器發送數據;第二,前者是把參數隊列加到了URL中,而后者將表單數據隱藏起來;第三,前者傳送的數據量較小,而后者傳送的數據量較大,一般情況下不受限制;第四,前者的安全性較差,因為在提交表單時可以用地址欄看到它的URL,從而暴露了該用戶提交的表單信息,而后者的安全性較高,它所提交的信息均被隱藏。
根據上述兩種方式的特點,這里采用POST方式提交表單信息。因此,在PHP程序中,需要用到POST方式來獲取表單信息,當然也可以使用GET方式獲取,關鍵在于網頁中表單的提交方式。PHP獲取表單信息的方式很簡單,關鍵在于對網頁表單中各個標記的命名,為了區分各個功能模塊,要將每個表單模塊的命名加以區分。這樣,網頁腳本程序能夠方便獲取各部分模塊的表單數據。
PHP訪問數據庫的前提,是在它的配置文件中取消對數據庫鏈接訪問的屏蔽。這樣,在編寫網頁程序中才能連接數據庫。在編寫網頁程序中,首先要建立表單,里面設置一些單選框、復選框以及一些輸入文本框等,表單的提交方式上述文章以介紹,這里用何種方式可以自行選擇。當用戶點擊提交按鈕時,網頁代碼提取表單中的數據,將數據整合后存放在一個集合中以便存入數據庫。
為了方便存放數據,服務器要提前建立好數據庫和表,數據類型可根據網頁中的表單數據進行選擇,比如建立列名為溫度,數據類型為字符型,長度為4等。本
次研究共建立兩個表,一個供網頁存放數據,以便服務器讀取客戶端提交的表單數據;另一個供服務器存放數據,網頁通過讀取數據庫中的數據將嵌入式服務器收集到的數據。
網頁中訪問數據庫的方法分為幾個步驟,連接數據庫;選擇數據庫;插入數據;獲取數據庫表的結果集等。智能家居服務器可以編寫兩個網頁,一個用來做控制網頁,另一個用作監控網頁。監控網頁中,通過腳本程序對數據庫的訪問和數據的讀取,從數據結果集中分離各個表中屬性的數據,最后再網頁中顯示出來,以此完成數據監控目的。控制網頁中,同樣先鏈接數據庫,選擇數據庫后,將整合好的網頁表單數據插入到數據庫表中。最后嵌入式系統將數據庫讀取,與其他外圍設備進行數據交互,以此達到控制目的。
Python是一種腳本語言,本身并不凸顯,但由于其具有豐富和強大的庫以及第三方支持庫令其使用廣泛。它為許多模塊提供了接口,甚至提供了其他編程語言的接口,并能夠與其他一些語言融會貫通,尤其是C/C++,這使得該語言變得萬能起來。本次研究為了完成目標,需要用到操作數據庫的第三方庫、串口通信的第三方庫以及支持GPIO的第三方庫等。
利用Python操縱數據時,其步驟大致和PHP操作數據類似,利用數據庫操作數據。從數據庫中讀取網頁表單提交后存儲的控制信息,將控制信息編碼為指令后操作嵌入式引腳或者通過串口發送數據或者控制其他外圍設備等,以此完成控制功能;另一方面,將采集到的信息數據整理好后存在數據庫中,網頁通過訪問數據庫將采集的數據通過網頁顯示出來,從而達到監控目的。
根據上述各模塊功能的實現方案,將各個模塊組成系統。通過網絡傳輸協議,用戶可遠程登錄該系統服務器,可訪問上述建立的監控和控制頁面。用戶可操作頁面上的表單模塊,將控制信息通過表單提交到服務器中,經過一系列的數據交互,從而控制某些設備的開關或者數據量的大小。嵌入式服務器將外圍設備采集的數據存放在數據庫中,網頁經過對數據庫的訪問將數據在頁面中顯示出來,用戶即可知被監控的數據。
當然,上述遠程訪問僅僅局限于內網,如果要實現外網遠程訪問,就要將內網映射到互聯網中。可以通過注冊域名,將服務器放在外網中,或者利用花生棒硬件將內網映射到外網。利用花生棒時,進入花生殼官網打開登錄界面,里面有配置花生棒的過程。配置成功后,不僅在內網可以完成遠程監控管理,在外網甚至是手機只要有網絡的地方均可以訪問服務器。綜上研究說明,上述方案是可實施的,通過遠程訪問本地服務器和本地數據庫,將數據通過嵌入式設備交互到外圍設備。
[1]郝磊.嵌入式家居環境監測系統設計[D].成都:電子科技大學,2013.
[2]孟平.多功能智能家居系統的設計與實現[D].哈爾濱:哈爾濱理工大學,2014.
[3]姜超.基于物聯網的智能家居系統的設計與實現[D].長春:吉林大學,2014.
TP3
A
1674-6708(2016)168-0094-01
鄧二偉,西北民族大學電氣工程學院,研究方向為嵌入式物聯網。
黃冰,西北民族大學電氣工程學院。