
摘要:在當今社會,隨著科技進步,網(wǎng)絡的應用已經(jīng)逐漸進入人們的生活。例如,人們在手機上通過網(wǎng)絡進行遠距離與跨時間的交流。人們駕駛的汽車也已經(jīng)可以隨時聯(lián)網(wǎng)導航、播放音樂等。所以,現(xiàn)在的人們對于家居的需求也不僅只在家居本身的舒適度、價格方面。人們更希望在外面也可以對家里的狀況進行掌控。于是智能家居的概念出現(xiàn)在了人們的視野之中。智能家居讓人們感受到了便利,例如,人們即使不在家里,也可以通過智能家居來進行燒水等活動。本文將對人們在遠端控制并了解家居的系統(tǒng)的實現(xiàn)進行說明。智能家居控制系統(tǒng)主要包括用戶端、采集端和云端3個方面,其中,云端又包括數(shù)據(jù)庫、MQTT、UDP、HTTP這4個方面。此系統(tǒng)采用Python和Django開發(fā),通過對智能家居控制系統(tǒng)的需求進行分析,對系統(tǒng)功能進行設計,并且用Python語言進行實現(xiàn)。此系統(tǒng)采用Pycharm作為主要的開發(fā)工具,后臺數(shù)據(jù)庫采用MySQL。
關鍵詞:MQTT協(xié)議;Esp8266;物聯(lián)網(wǎng)技術;Django
Design of Smart Home Control System Based on
Private Cloud
WANG Yadong
(Heilongjiang Institute of Technology,?Harbin,?Heilongjiang Province,?150001 China)
Abstract:In today's society, with the progress of science and technology, the application of network has gradually entered people's life. For example, people communicate long-distance and cross time through the network on mobile phones. People can play music and car navigation at any time. Therefore, people's demand for home now is not only in the comfort and price of home itself. People prefer to be able to control the situation at home outside. So the concept of smart home appears in people's vision. Smart home makes people feel convenient. For example, people can cook water and other activities through smart home even if they are not at home. This paper will explain the implementation of the system that people control and understand the home remotely. Smart home control system mainly includes three aspects: user end, acquisition end and cloud end. Among them, cloud end also includes four aspects: database, MQTT, UDP and HTTP. The system is developed by Python and Django. Through the analysis of the requirements of the smart home control system, the system functions are designed and implemented in Python language. This system uses pychar as the main development tool, and the background database uses MySQL.
Key Words:?Message Queuing Telemetry Transport;ESP8266; Internet of things technology; Django
智能家居已逐漸從實驗室進入到了人們的日常生活中。應運而生的智能家居技術也日益成熟。系統(tǒng)分為3個部分用戶端、采集端和云端,采用ESP8266作為采集端即智能網(wǎng)關,搭建包含UDP服務器、數(shù)據(jù)庫服務器、MQTT服務器、HTTP服務器的云端私有服務器。讓用戶通過web端實現(xiàn)數(shù)據(jù)的顯示、查詢和閾值配置等動能。
1 常用技術簡介
1.1?ESP8266
ESP8266是一款其內(nèi)部集成了Wi-Fi模塊、數(shù)據(jù)透傳以及串口AT指令控制等功能的Wi-Fi解決方案,是一款低成本低功耗串口Wi-Fi模塊。在本設計中ESP8266擔任智能網(wǎng)關的角色,起到數(shù)據(jù)采集、接收配置信息、控制繼電器等功能。
1.2??MQTT協(xié)議
MQTT協(xié)議即消息隊列遙測傳輸協(xié)議,是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通信協(xié)議,在本設計中智能網(wǎng)關和私有云服務器同時充當MQTT服務器和MQTT客戶端的兩種角色,用來實現(xiàn)兩者的雙向數(shù)據(jù)通信。
1.3?Micro?Python語言
Micro Python是Python編程語言的一個精簡高效的實現(xiàn),它包含了Python標準庫的一小部分子集,并且經(jīng)過優(yōu)化,可以在微控制器上和受限環(huán)境中運行。可以用Micro Python開發(fā)基于嵌入式系統(tǒng)的自動控制類應用。
1.4?Django框架簡介
Django是一種用Python語言編寫的開源的支持網(wǎng)絡服務的開發(fā)框架。Django是一種既基于MTV模型又基于MVC模型所創(chuàng)造出來了框架。基于數(shù)據(jù)庫的數(shù)據(jù)來創(chuàng)造出界面良好,功能強大的網(wǎng)站。
2 系統(tǒng)設計方案
2.1 系統(tǒng)框架
智能家居控制系統(tǒng)主要分為用戶端、采集端和云端。系統(tǒng)采用了Micro Python、Python、Django、數(shù)據(jù)庫等方面的編程技術,采集端硬件部分使用ESP8266模塊,使用簡單。系統(tǒng)使用ESP8266 作為采集端,使用ESP8266連接Wi-Fi并使用MQTT協(xié)議與MQTT服務器通信,云端包括UDP服務器、HTTP服務器、MQTT服務器、數(shù)據(jù)庫服務器4個部分內(nèi)容。用戶端使用Python語言在Django框架下開發(fā)的web服務。
2.1.1 用戶端的功能描述
用戶在用戶端進入注冊和登錄界面,若為新用戶,則先進行注冊然后登錄。若是老用戶,直接登錄即可。登錄成功后,用戶可以選擇進入應用管理系統(tǒng)還是個人管理系統(tǒng)。若用戶選擇進入個人管理系統(tǒng),可對個人信息進行修改,如用戶密碼、用戶郵箱等。如果,用戶選擇進入應用管理系統(tǒng)界面。用戶可以選擇添加新應用或者是對已有應用進行操作。在此時,若用戶選擇添加新應用,用戶可以填寫新應用的應用名及其詳細說明。在此之后,用戶點擊提交按鈕,新應用即創(chuàng)建成功。如果用戶選擇對已有應用進行操作,用戶可以對已有應用進行編輯、增加設備、增加控制邏輯、刪除和展示操作。用戶選擇編輯功能時,可以對應用的名稱和詳細說明進行修改。若用戶選擇增加設備這一功能,需要輸入設備編號、連接接口、設備種類以及采集類型等信息。如果用戶選擇增加控制邏輯這一功能,用戶需要輸入設備生效的區(qū)間值以及采集和控制接口號。如果用戶選擇刪除這一功能,則點擊刪除按鈕,該設備就刪除成功。如果用戶選擇展示功能,則展示該應用的應用編號、應用名、詳細說明、連接的接口號、接口類型、接口功能以及功能生效范圍。
2.1.2 云端功能描述
云端主要包括數(shù)據(jù)庫、UDP服務器、MQTT服務器和HTML服務器。當新用戶注冊時,新用戶在網(wǎng)頁上所填的信息將保存在云端數(shù)據(jù)庫的用戶個人信息表中。若用戶在個人管理系統(tǒng)中對個人信息進行修改,那么相關信息也自動將在數(shù)據(jù)庫的用戶個人信息表中進行修改。同樣的,用戶在用戶端所進行的操作,在云端的數(shù)據(jù)庫都會進行相應的改變。在智能家居控制系統(tǒng)的UDP服務器中,將數(shù)據(jù)包分成了3種類型,分別為問詢類數(shù)據(jù)包、數(shù)據(jù)包和狀態(tài)變更類數(shù)據(jù)包。在MQTT服務器當中,將其接受到的消息也分為3種,分別為配置消息、命令消息和初始化消息。在云端,UDP服務器主要負責接收8266發(fā)送的數(shù)據(jù)包然后向云端的數(shù)據(jù)庫進行查詢最后再控制MQTT服務器發(fā)布消息。而云端的MQTT服務器主要的任務就是別Udp服務器所控制向8266發(fā)送3種不同類型的消息。在云端HTML服務器負責響應web頁面的請求。
2.1.3 智能網(wǎng)關功能描述
采集端最開始是向云端的UDP服務器發(fā)送問詢類數(shù)據(jù)包查詢配置信息。在接收到云端MQTT服務器的配置消息后,向UDP服務器服務器發(fā)布數(shù)據(jù)包,在寫入云端的數(shù)據(jù)庫中。當8266達到觸發(fā)條件時,向云端的UDP服務器發(fā)送狀態(tài)變更類數(shù)據(jù)包,并將變更數(shù)據(jù)寫入數(shù)據(jù)庫中。當用戶在用戶端強制更改8266的狀態(tài)時,通過HTTP服務器將更改狀態(tài)寫入數(shù)據(jù)庫,并通過云端MQTT服務器發(fā)送命令消息到8266。當用戶在用戶端更改8266作用閾值范圍時,通過HTTP服務器將更改狀態(tài)寫入數(shù)據(jù)庫,并通過云端MQTT服務器發(fā)送初始化消息到8266。
2.2 系統(tǒng)的數(shù)據(jù)流
系統(tǒng)由3個部分組成,其中云端是核心部分,分別于智能網(wǎng)關和用戶端對接。三者見得數(shù)據(jù)流關系見圖一所示。
2.2.1 智能網(wǎng)關的數(shù)據(jù)流
ESP8266模塊充當智能網(wǎng)關的角色,是智能網(wǎng)關的核心部件,智能網(wǎng)關和云端的數(shù)據(jù)交換有:負責向UDP服務器發(fā)送三類數(shù)據(jù),接受MQTT服務器的三類消息,實現(xiàn)數(shù)據(jù)采集與控制開關間的控制邏輯。控制邏輯分兩種,自動控制邏輯與強制控制邏輯。智能網(wǎng)關的控制邏輯可以自由切換。在自動控制邏輯中,用戶一般要預先設定兩個閾值量,自動控制就是根據(jù)預先設定的閾值量與實時采集數(shù)據(jù)進行比較,符合條件的話就進行相應的控制器開關。強制控制邏輯就是用戶可以強制控制某個控制器的開關操作,不需要考慮自動控制邏輯。
智能網(wǎng)關在發(fā)送模式下有3種數(shù)據(jù)類型。(1)初始化請求信息。在智能網(wǎng)關剛開機的情況下,需要從云端下載該網(wǎng)關的各種配置信息。故發(fā)送請求包,要求獲得自己的初始化配合信息。(2)數(shù)據(jù)包。把實時采集到的數(shù)據(jù)打包發(fā)送給云端的UDP服務器,之后再存儲到數(shù)據(jù)庫中。比如可以利用DHT11模塊實現(xiàn)溫濕度的實時采集。(3)控制器變更包。當智能網(wǎng)關控制的控制器狀態(tài)發(fā)生變化時,要同時云端,同步變更云端數(shù)據(jù)庫中控制器的狀態(tài)。上面三種數(shù)據(jù)包均是以MQTT客戶端的方式發(fā)出的。
智能網(wǎng)關在接收模式下有3種數(shù)據(jù)類型。(1)初始化信息。接收來自云端的初始化配置信息,配置本地的控制規(guī)則,控制器的狀態(tài),GPIO接口的功能等信息。(2)強制控制命令。用于接收用戶端的強制開關命令。并執(zhí)行相應操作,之后把強制開關多對應的控制器的狀態(tài)變更發(fā)送給UDP服務器。(3)配置信息。當用戶手動更改各種閾值或切換控制邏輯時,云端需要把變更后的配置信息傳給智能網(wǎng)關。是兩者配置信息保持同步。
2.2.2 云端的數(shù)據(jù)流
云端主要包括UDP服務器、MQTT服務器、數(shù)據(jù)庫服務器、HTTP服務器4個部分內(nèi)容。
UDP服務器主要負責接收智能網(wǎng)關發(fā)來的初始化數(shù)據(jù)、實時數(shù)據(jù)、狀態(tài)變更數(shù)據(jù)。并查詢數(shù)據(jù)庫做出必要的反饋。包括把實時數(shù)據(jù)或狀態(tài)變更數(shù)據(jù)寫入數(shù)據(jù)庫,把初始化信息通過MQTT發(fā)送給智能網(wǎng)關。
數(shù)據(jù)庫服務器主要用于實時數(shù)據(jù)的存儲、控制邏輯、控制器狀態(tài)等的存儲。數(shù)據(jù)庫需要有足夠的容量和良好的穩(wěn)定性,易于進行數(shù)據(jù)的遷移和存儲。
MQTT服務器功能用于和智能網(wǎng)關進行雙向數(shù)據(jù)傳輸。
HTTP服務器與用戶端配合,提供HTTP服務。
2.2.3客戶端模塊的主要功能
(1)數(shù)據(jù)顯示功能,通過從服務器的數(shù)據(jù)庫中讀取數(shù)據(jù)來展示當前實時狀況。
(2)提供閾值設定窗口和控制器開關設定窗口及控制邏輯切換窗口,便于用戶的閾值設定、控制器的強制開關和控制邏輯的切換。
3?結(jié)語
綜上所述,物聯(lián)網(wǎng)技術是一種結(jié)合了傳統(tǒng)互聯(lián)網(wǎng)與傳感器網(wǎng)絡的新技術。基于私有云的智能家居控制系統(tǒng)的設計的基本功能已經(jīng)實現(xiàn),實現(xiàn)了能在兩種控制邏輯間自由切換,并可根據(jù)用戶需求調(diào)整閾值的智能家居控制系統(tǒng)。經(jīng)過一系列的測試,圓滿地完成了設計的各項功能需求。
參考文獻
[1]?黃開龍,劉力銘,趙娟.一種云智能家具系統(tǒng)的設計[J].科技創(chuàng)新導報,2020(3):48-50.
[2]?王春武,陸欣月等.基于ESP866的智能云環(huán)境控制系統(tǒng)?[J].吉林師范大學學報:自然科學版,2021,(42):74-79.
[3]?文道朋,楊浩,趙娟.基于ESP8266的人流量監(jiān)測系統(tǒng)設計[J].科技創(chuàng)新導報,2020(1):151-153.
[4]?李雙斌,呂志華,朱鵬洲.基于ESP8266的太陽能自動跟蹤和智能控制裝置[J].南方論壇,2021(12):37-39.
[5]?張萍,胡應坤.基于OneNET的物聯(lián)網(wǎng)云平臺構(gòu)建視頻應用[J].物聯(lián)網(wǎng)技術,2022(1):42-46
[6]?于雪飛.基于云平臺的危房健康監(jiān)測系統(tǒng)研究[J].科技創(chuàng)新導報,2019(18):152-154.
中圖分類號:TP273;TU855DOI:10.16660/j.cnki.1674-098x.2201-5640-6593
作者簡介:王亞東(1972—),男,碩士,副教授,研究方向為計算機應用。