徐嘉順+鄭艷華+陳苑冰+陳巖峰+葉彤
【摘要】 利用微信平臺設(shè)計了基于微信和網(wǎng)頁為平臺的燈光控制系統(tǒng)。實現(xiàn)了不受地域阻礙,能夠?qū)崟r地控制與了解燈光情況。在安全性方面,配有網(wǎng)頁版的用戶權(quán)限管理界面,只有管理員才可以根據(jù)需要分配權(quán)限。微信用戶關(guān)注本系統(tǒng)的公眾號后,還需要管理員分配的權(quán)限才可以控制燈光系統(tǒng),安全性可以得到保障。
【關(guān)鍵字】 多平臺 微信 網(wǎng)頁 燈光智能控制 物聯(lián)網(wǎng)
引言
隨著物聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,物聯(lián)網(wǎng)產(chǎn)品日益進(jìn)入到人們的日常生活中。物聯(lián)網(wǎng)利用智能感知識別和計算機(jī)網(wǎng)絡(luò)等通信網(wǎng)絡(luò)技術(shù),掀起了信息產(chǎn)業(yè)發(fā)展的第三次浪潮。利用物聯(lián)網(wǎng)技術(shù)可以為我們的生活帶來極大的便利。本論文基于多平臺的燈光控制系統(tǒng),實現(xiàn)了只要有網(wǎng)絡(luò)的地方就可以實現(xiàn)智能控制燈光系統(tǒng)的功能,不受地域的阻礙。同時,系統(tǒng)還可以擴(kuò)展功能,配合插座系統(tǒng),還可以控制其他家用電器,以實現(xiàn)智能家居。
一、系統(tǒng)總設(shè)計
1.1系統(tǒng)模型
本系統(tǒng)分為四層架構(gòu)模型,從底至上依次為物理層、協(xié)議層、函數(shù)層和用戶功能層。物理層為硬件架構(gòu)層,負(fù)責(zé)建立、維護(hù)和取消燈光系統(tǒng)與云端服務(wù)器的物理連接,為用戶端設(shè)備提供云端到本地傳輸數(shù)據(jù)的通路,并實現(xiàn)用戶端功能端相關(guān)功能。協(xié)議層定義數(shù)據(jù)的打包格式,并提供穩(wěn)定可靠的數(shù)據(jù)傳輸連接方式,使系統(tǒng)中不同的用戶端設(shè)備,云服務(wù)器和物理層之間能傳輸數(shù)據(jù)。函數(shù)層定義實現(xiàn)用戶功能的函數(shù),同時為系統(tǒng)調(diào)用功能模塊提供接口,減少重復(fù)編碼的程序段。用戶功能層定義用戶可以直接使用的各種功能,為用戶提供具體服務(wù)。
1.2數(shù)據(jù)庫設(shè)計
本系統(tǒng)用E-R圖(實體-聯(lián)系圖)表示各實體之間的關(guān)系。用戶微信昵稱信息的獲取和微信公眾號自定義菜單的構(gòu)造需要微信憑證,憑證的相關(guān)信息存放在微信憑證表中。在查詢數(shù)據(jù)庫E-R圖中,有四個實體——用戶、權(quán)限、個人信息和系統(tǒng)總狀態(tài)。個人信息包括公眾號用戶ID、最新登錄時間、曾操作過燈的狀態(tài)、網(wǎng)頁注冊名、郵箱、密碼、激活狀態(tài)、微信昵稱以及是否在線等;系統(tǒng)總狀態(tài)包括最新操作時間、燈光狀態(tài)、網(wǎng)頁端用戶名和微信端用戶名等。普通用戶數(shù)據(jù)庫E-R圖中有三個實體——控制、關(guān)注和查詢:控制燈光;關(guān)注微信號;用戶查詢系統(tǒng)E-R圖。管理員數(shù)據(jù)庫E-R圖也有三個實體——查詢、注銷和授權(quán):查詢系統(tǒng)E-R圖;注銷用戶和權(quán)限;授予用戶系統(tǒng)的權(quán)限。
二、系統(tǒng)設(shè)計
2.1本地物理層設(shè)計
中央控制器芯片是STM32F103VET6,WiFi模塊使用ESP8266。本地物理層上電或復(fù)位后會自動連接WiFi,接著初始化與云端服務(wù)器的TCP/IP連接,然后定時發(fā)送HTTP請求,在中斷響應(yīng)服務(wù)程序中分析云端服務(wù)器反饋的HTTP報文,提取系統(tǒng)燈光的狀態(tài)信息,最后改變相應(yīng)的I/O狀態(tài)來觸發(fā)繼電器模塊閉合或分離,如圖1。
2.2協(xié)議層設(shè)計
本系統(tǒng)物理層的網(wǎng)絡(luò)連接使用TCP/IP協(xié)議。物理層數(shù)據(jù)封裝使用HTTP協(xié)議。物理層請求報文格式如下:請求行-通用信息頭-請求頭-實體頭-報文主體。云服務(wù)器端應(yīng)答報文格式如下:狀態(tài)行-通用信息頭-響應(yīng)頭-實體頭-報文主體。用戶功能層的微信端系統(tǒng)數(shù)據(jù)交換格式使用JSON格式,用戶數(shù)據(jù)封裝多采用可擴(kuò)展標(biāo)記語言XML格式。
2.3函數(shù)層的設(shè)計
函數(shù)主要由物理層函數(shù)庫、用戶功能函數(shù)庫、微信端函數(shù)庫和網(wǎng)頁端函數(shù)庫四部分構(gòu)成。物理層函數(shù)庫包括中斷服務(wù)程序、STM32庫函數(shù)和初始化配置函數(shù)等[1]。中斷服務(wù)程序包括定時器中斷服務(wù)程序、串口數(shù)據(jù)標(biāo)志位判斷程序、自定義串口發(fā)送數(shù)據(jù)函數(shù)和串口緩沖區(qū)數(shù)組遍歷函數(shù)。定時器中斷服務(wù)函數(shù)實現(xiàn)串口在接受數(shù)據(jù)時以十毫秒為間隔,判斷串口數(shù)據(jù)接收的開始與結(jié)束。串口數(shù)據(jù)標(biāo)志位判斷程序和串口緩沖區(qū)數(shù)組遍歷函數(shù)實現(xiàn)分析串口接收到的http報文的功能。由于使用庫函數(shù)方式開發(fā)STM32芯片,所以stm32庫函數(shù)是必需的,它定義了芯片的引腳功能,寄存器地址等等[2]。初始化配置函數(shù)實現(xiàn)定時器計數(shù)初值配置,串口波特率設(shè)置,延時函數(shù)的初始化,wifi模塊狀態(tài)的初始化。
用戶功能函數(shù)庫主要包括自定義的函數(shù)庫,數(shù)據(jù)庫mysql函數(shù)集,php字符串函數(shù)集等函數(shù)庫,按照用戶端來分,可以分成微信端與網(wǎng)頁端函數(shù)庫,以下將以用戶端來分。
微信端函數(shù)庫主要處理三個功能模塊信息:關(guān)注事件推送,自定義菜單事件推送和文本消息[3]。處理關(guān)注事件推送:在用戶剛開始關(guān)注公眾號時,通過編程來獲取微信憑證,從而提取用戶的微信昵稱信息;調(diào)用MySQL字符串處理函數(shù)集更新數(shù)據(jù)庫,在相應(yīng)的表中新建或更新數(shù)據(jù)。處理自定義菜單事件推送:當(dāng)用戶點擊菜單,系統(tǒng)把點擊事件推送給開發(fā)者,通過編程把報文內(nèi)容從XML格式轉(zhuǎn)換為結(jié)構(gòu)體形式,而系統(tǒng)只需判斷轉(zhuǎn)換后的事件值就可以做出反應(yīng);當(dāng)用戶點擊菜單跳轉(zhuǎn)鏈接時,直接開始跳轉(zhuǎn)網(wǎng)頁,由微信端自行完成。處理文本消息:通過簡單的選擇控制分支語句,判斷特定的一些的文字消息字符串,完成特定的功能。
網(wǎng)頁端函數(shù)庫使用 jquery函數(shù)庫。在確保數(shù)據(jù)庫安全設(shè)計方面,使用mysql_real_escape_string()函數(shù)和Perl兼容的正則表達(dá)式mysql_real_escape _string()通過轉(zhuǎn)義有問題的字符來整理數(shù)據(jù),預(yù)防數(shù)據(jù)庫的攻擊[4]。本系統(tǒng)調(diào)用preg_match()函數(shù)實現(xiàn)正則表達(dá)式匹配功能,確保提交的表單數(shù)據(jù)與系統(tǒng)所期待的匹配。
2.4用戶功能層設(shè)計
按照用戶端的不同,可以分為微信端功能設(shè)計與網(wǎng)頁端功能設(shè)計,但是用戶信息處理問題上兩者不是獨立的,是有互補(bǔ)的成分。本系統(tǒng)綜合考量了兩者的優(yōu)勢,設(shè)計出能通過微信昵稱關(guān)聯(lián)不同用戶端上用戶信息。具體實現(xiàn)思路如下。微信端通過函數(shù)層中處理關(guān)注事件中,通過編程實現(xiàn)獲取access_token憑證并更新數(shù)據(jù)庫微信憑證表,然后可以獲取關(guān)注者用戶的基本信息,從中提取到微信昵稱信息,最后更新數(shù)據(jù)庫用戶信息表,完成用戶信息的錄入[5]。網(wǎng)頁端則是通過用戶在注冊填寫的微信昵稱進(jìn)行判斷,與數(shù)據(jù)庫用戶信息表中的數(shù)據(jù)作對比,進(jìn)行新建或更新數(shù)據(jù)表中的數(shù)據(jù),完成用戶信息的錄入。到此,假如用戶同時完成微信端的關(guān)注公眾號事件與網(wǎng)頁端注冊流程,且信息無誤,那么用戶就可以在微信端查看網(wǎng)頁注冊信息,在網(wǎng)頁端,管理員可以直接根據(jù)微信昵稱分配用戶權(quán)限,同時,系統(tǒng)允許用戶的信息可以在不同的用戶端查看或修改。具體用戶端功能設(shè)計如下。
管理員功能設(shè)計的第一級為管理員,第二級包括賬戶管理、找回密碼、授權(quán)、注銷、燈光控制和查詢,賬戶管理的第三級包括登錄、登出和修改密碼等;授權(quán)的第三級包括控制LED1的權(quán)限、控制LED2的權(quán)限等;注銷的第三級包括用戶、權(quán)限;查詢的第三級包括系統(tǒng)總狀態(tài)、權(quán)限、用戶信息等。
普通用戶功能設(shè)計的第一級為普通用戶,第二級包括賬戶管理、找回密碼、扽光控制和查詢,賬戶管理的第三級包括注冊、登錄、登出、修改密碼等;查詢的第三級包括系統(tǒng)狀態(tài)、權(quán)限、注冊信息等。
三、系統(tǒng)測試
系統(tǒng)經(jīng)過調(diào)試,系統(tǒng)可以完成微信端和網(wǎng)頁端開燈關(guān)燈和權(quán)限分配等上述功能,如圖2和圖3所示。
實際的燈光控制效果與圖4所示。
四、結(jié)語
多平臺控制的智能燈光系統(tǒng)利用微信端和網(wǎng)頁端,可以方便智能地控制室內(nèi)照明系統(tǒng)。該系統(tǒng)通過簡單的擴(kuò)展也可以控制電視和空調(diào)等家用電器,實現(xiàn)智能家居。
參 考 文 獻(xiàn)
[1] STM32F1開發(fā)指南V3.1 - 庫函數(shù)版本[Z]. ALIENTEK戰(zhàn)艦.
[2] 劉火良,楊森.STM32庫開發(fā)實戰(zhàn)指南[M].北京.機(jī)械工業(yè)出版社,2015:94-95,143-147.
[3] 《微信公眾平臺開發(fā)者文檔》http://mp.weixin.qq.com/wiki/home /index. html.
[4] Larry UIIman.PHP and MySQL for Dynamic Web Sites[M].杜凱,陳宗斌,譯.北京:人民郵電出版社,2013:262-266,414-438.
[5] 鐘志勇,何威俊,馮煜博.微信公眾號平臺應(yīng)用開發(fā)實踐[M].北京。機(jī)械工業(yè)出版社,2014:76-138.