趙鑫+王亞剛+王凱
摘 要:為了解決當(dāng)前用戶反映智能家居控制系統(tǒng)占用了手機(jī)或電腦大量內(nèi)存而導(dǎo)致電子設(shè)備運(yùn)行緩慢的問題,設(shè)計了基于B/S模式的智能家居管理系統(tǒng)。運(yùn)用B/S結(jié)構(gòu)模式,結(jié)合Node.js平臺,通過MongoDB數(shù)據(jù)庫與Socket.IO通訊協(xié)議,搭建Express框架的服務(wù)器,并布置網(wǎng)站到云服務(wù)器上,使用戶可以通過4G和WiFi等網(wǎng)絡(luò)控制與管理設(shè)備。經(jīng)測試,系統(tǒng)在不同設(shè)備終端均運(yùn)行正常,系統(tǒng)的擴(kuò)展也非常容易,可實(shí)現(xiàn)客戶端的零安裝、零維護(hù),只要有網(wǎng)絡(luò)即可控制設(shè)備。
關(guān)鍵詞:物聯(lián)網(wǎng);智能家居;B/S模式
DOIDOI:10.11907/rjdk.172945
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2018)002-0099-03
0 引言
“智能家居”的概念,伴隨著物聯(lián)網(wǎng)技術(shù)的不斷推進(jìn),已頻繁出現(xiàn)在實(shí)際生活應(yīng)用中,切實(shí)改變了人們的生活方式與工作習(xí)慣。它包含兩層含義,一層是自動化處理過程,自動化處理過程是智能的基礎(chǔ),包括遠(yuǎn)程監(jiān)測、控制設(shè)備開關(guān),根據(jù)設(shè)備的功能性分類進(jìn)行參數(shù)設(shè)置、定時啟動等,能夠以自動和手動兩種方式,在家庭內(nèi)或家庭外達(dá)到遠(yuǎn)程同步控制,不再受地理位置限制,給予作為“控制者”的用戶最大程度的自由;另一層是信息分析過程,對從物理層采集的數(shù)據(jù)進(jìn)行分析處理,實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計、行為預(yù)測等功能。提供處理后的有價值的生活信息能讓用戶或系統(tǒng)本身成為家居的智能“管理者”,實(shí)現(xiàn)在應(yīng)用層的不同應(yīng)用。本文基于B/S架構(gòu)模式,設(shè)計并實(shí)現(xiàn)了一個智能家居管理系統(tǒng)。綜合運(yùn)用智能化家居技術(shù)和Web技術(shù),能夠使用戶在客戶端零安裝的前提下通過不同的設(shè)備終端訪問系統(tǒng),建立個人家居管理檔案,實(shí)現(xiàn)設(shè)備遠(yuǎn)程監(jiān)控、智能信息分析等功能。
1 基于Web的B/S模式架構(gòu)
在系統(tǒng)的組成結(jié)構(gòu)方面,最常見的架構(gòu)主要為B/S模式(Browser/Server)和C/S模式(Client/Server)。通常B/S模式的構(gòu)成可分為三層,其體系結(jié)構(gòu)如圖1所示。
B/S模式由瀏覽器和服務(wù)器組成,服務(wù)器包括Web服務(wù)器、數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器等多層結(jié)構(gòu),并存有應(yīng)用程序與數(shù)據(jù)信息。在網(wǎng)頁端加載服務(wù)器端運(yùn)行程序,瀏覽器向用戶提供應(yīng)用界面顯示。B/S模式利用Web技術(shù)結(jié)合瀏覽器的多種腳本語言,瀏覽器作為通信平臺實(shí)現(xiàn)交互功能。C/S模式與B/S應(yīng)用程序架構(gòu)對比如表1所示。
考慮到智能家居對滿足用戶需求的實(shí)時性要求很高,本文采用了B/S模式。
2 智能家居管理系統(tǒng)設(shè)計
將智能家居管理系統(tǒng)分為用戶信息模塊、設(shè)備列表模塊,分別進(jìn)行功能設(shè)計。
(1)用戶信息模塊:建立用戶信息檔案,有系統(tǒng)注冊、登錄等基本功能。提交以常用郵箱為地址的用戶名,可向郵箱發(fā)送系統(tǒng)信息等。核實(shí)信息采用MD5驗(yàn)證方式,以保證系統(tǒng)安全性。
(2)設(shè)備列表模塊:主要具有顯示和控制功能,顯示信息分為屬性信息和使用信息兩類。前者以列表方式呈現(xiàn),列明設(shè)備名稱、編號,后者顯示如設(shè)備實(shí)時電量、累計電量,設(shè)備狀態(tài)是處于開啟還是關(guān)閉等使用信息情況??刂乒δ馨ㄟh(yuǎn)程控制設(shè)備開關(guān)和設(shè)置定時開關(guān),還可以根據(jù)用電對象進(jìn)行模式修改如調(diào)節(jié)空調(diào)溫度等。另外,加入第三方天氣數(shù)據(jù)接口,向用戶提供溫度變化、空氣質(zhì)量等信息,以便對溫控及風(fēng)控設(shè)備進(jìn)行控制。系統(tǒng)具體結(jié)構(gòu)如圖2所示。
3 系統(tǒng)軟件實(shí)現(xiàn)
3.1 用戶模塊實(shí)現(xiàn)
首先需要實(shí)現(xiàn)系統(tǒng)Web服務(wù)器,本文用到的軟件開發(fā)工具有:①Node.js v4.4.3運(yùn)行平臺;②Node Package Manager v2.15.1 JavaScript包管理器;③MongoDB v3.2.6數(shù)據(jù)庫;④可視化數(shù)據(jù)庫Robomongo v0.9.0;⑤IDE工具Sublime Text。對以上工具進(jìn)行下載、安裝并在系統(tǒng)環(huán)境下進(jìn)行配置。
由Express搭建HTTPs服務(wù)器,具體步驟如下:①用NPM在全局安裝express模塊(V4.13.1)“npm install-g express”;②采用Express創(chuàng)建網(wǎng)站基本結(jié)構(gòu)和項目名稱smarthome “exprss-e smarthome”;③進(jìn)入工程目錄cd./smarthome,根據(jù)package.json文件“npm install”自動安裝文件內(nèi)所有指定的dependencies依賴模塊。
由Node.js搭建http服務(wù)器,先引入http模塊,設(shè)定端口號并存儲(默認(rèn)端口號3000),用http.createServer方法新建一個App實(shí)例,監(jiān)聽端口號并啟動服務(wù)器“npm start”,終端顯示Express server listening on port 3000 in development mode。在服務(wù)器上,軟件運(yùn)行環(huán)境是Windows Server 2012 R2系統(tǒng),瀏覽器地址輸入http://182.61.17.241:3000(云服務(wù)器公網(wǎng)IP地址)。
用戶模塊主要功能實(shí)現(xiàn)原理如下:用戶在/reg注冊頁中填寫表單信息,采用POST方式得到req.body.username,req.body.password,req.body.email三個參數(shù),按照預(yù)設(shè)的User.protype.save保存到數(shù)據(jù)庫中。在/login登錄頁中填寫表單信息,得到的username和password用User.get方法進(jìn)行檢驗(yàn)。
3.2 設(shè)備控制模塊實(shí)現(xiàn)
在數(shù)據(jù)庫中建立設(shè)備集合Device,用于將設(shè)備對象的屬性信息和控制信息保存到數(shù)據(jù)庫中。對需要定時的設(shè)備也建立集合Schedule,用于保存定時事件信息、觸發(fā)時間與觸發(fā)事件,使用mongoose模塊可以更加簡化地使用native mongoDB。簡要實(shí)現(xiàn)代碼如下:endprint
//Device集合
var mongoose = require('./database.js');
var Schema=mongoose.Schema;
var deviceSchema=
new Schema({
owner:String,
name:String,
type:{type:Number,default:0},
online:{type:Boolean,default:true},
status:{type:Boolean,default:false},
power:{type:Number,default:0},
sumpower:{type:Number,default:0},
time:{type:String,default:Date.now}
//Schedule集合
var mongoose=require('./database.js');
var Schema=mongoose.Schema;
var scheduleSchema=
new Schema({
device_id:String,
task:{type:Boolean,default:false},
scheduletimestart:{type:String,default:Date.now}
},
scheduletimefinish:{type:String,default:Date.now}
}
界面功能實(shí)現(xiàn)如圖3所示。
4 結(jié)語
結(jié)合用戶需求,本文分析了B/S和C/S的架構(gòu)特點(diǎn),提出基于B/S架構(gòu)模式的Web應(yīng)用程序。在無需安裝App、無需占用移動設(shè)備內(nèi)存的前提下,實(shí)現(xiàn)了智能家居管理系統(tǒng)設(shè)計。在軟件實(shí)現(xiàn)上,運(yùn)用了Node.js平臺,結(jié)合MongoDB數(shù)據(jù)庫和Socket.IO通訊協(xié)議,搭建Express框架的服務(wù)器,并布置網(wǎng)站到云服務(wù)器上,使用戶在任何時間、地點(diǎn)都可以通過4G和WiFi等網(wǎng)絡(luò)控制與管理設(shè)備。經(jīng)測試,該系統(tǒng)中各個功能模塊均運(yùn)行良好。因此,本文的設(shè)計具有良好的通用性和可擴(kuò)展性,可以作為其它智能項目的基礎(chǔ)框架。
參考文獻(xiàn):
[1] 廖俊.基于B/S模式的遠(yuǎn)程監(jiān)控系統(tǒng)的研究及軟件實(shí)現(xiàn)[D].成都:西南交通大學(xué),2006.
[2] 閆石.基于嵌入式B/S架構(gòu)的智能家居遠(yuǎn)程監(jiān)控系統(tǒng)開發(fā)[D].南京:南京理工大學(xué),2014.
[3] 丁智剛.C/S模式與B/S模式相結(jié)合的數(shù)據(jù)庫系統(tǒng)技術(shù)研究[J].信息安全與技術(shù),2011(11):41-44.
[4] CHONG G, ZHIHAO L, YIFENG Y. The research and implement of smart home system based on Internet of Things[C].2011 International Conference on Electronics, Communications and Control (ICECC),2011.
[5] YANG W. Smart home system conception based on Internet of Things[J]. Management Science and Engineering,2016.
[6] 董紀(jì)國.基于B/S架構(gòu)的物聯(lián)網(wǎng)應(yīng)用組態(tài)平臺研發(fā)[D].南京:南京大學(xué),2015.
[7] 郭家寶.Node.js開發(fā)指南[M].北京:人民郵電出版社,2012.
[8] KARAGOEZ M F, TURGUT C. Design and implementation of RESTful wireless sensor network gateways using Node.js framework[C].European Wireless 2014,20th European Wireless Conference,2014.
[9] 單振華,王舒憬,陳凱,等.基于NodeJS的智能家居語音控制系統(tǒng)服務(wù)器端設(shè)計與實(shí)現(xiàn)[J].工業(yè)控制計算機(jī),2016(4):66-67.
[10] 王越.基于node.js的微博系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2014.
[11] 陳敏敏.基于MongoDB云存儲平臺的論壇信息抽取與存儲研究[D].上海:上海交通大學(xué),2012.
[12] 劉嬋媛.基于物聯(lián)網(wǎng)的智能家居系統(tǒng)研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012.endprint