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