物聯(lián)網(wǎng)開發(fā)技術(shù)要素-網(wǎng)絡(luò)
在把設(shè)備連接到物聯(lián)網(wǎng)服務(wù)時,網(wǎng)絡(luò)是不可或缺的。不僅要把設(shè)備連接到物聯(lián)網(wǎng)服務(wù),還要把設(shè)備連接到其他設(shè)備。物聯(lián)網(wǎng)開發(fā)使用的網(wǎng)絡(luò)答題上分為兩種:一種是把設(shè)備連接到其他設(shè)備的網(wǎng)絡(luò),另外一種是把設(shè)備連接到物聯(lián)網(wǎng)服務(wù)的網(wǎng)絡(luò)。
用于物聯(lián)網(wǎng)開發(fā)的兩種網(wǎng)絡(luò)
1、把設(shè)備連接到其他設(shè)備的網(wǎng)絡(luò)
無法直接連接到互聯(lián)網(wǎng)的設(shè)備也是存在的。我們通過把設(shè)備連接到其他設(shè)備,就能通過其他設(shè)備把這些不能連接到互聯(lián)網(wǎng)的設(shè)備連接到互聯(lián)網(wǎng)。前面我們介紹的傳感器節(jié)點和網(wǎng)絡(luò)正是兩個典型的例子。此外,還有通過智能手機把可穿戴設(shè)備采集到的數(shù)據(jù)發(fā)給物聯(lián)網(wǎng)服務(wù)這一辦法。
藍牙和ZigBee是兩種具有代表性的網(wǎng)絡(luò)標準。它們是用無線連接的,利用的通信協(xié)議也是固定的。這些協(xié)議的特征有采用擅長近距離通信的無線連接、低功耗、易于嵌入嵌入式設(shè)備等。
要把設(shè)備連接到其他設(shè)備,除了1對1之外,還可以采用1對N、N對N的方式連接。特別是N對N連接的情況,我們稱這種情況為網(wǎng)狀網(wǎng)絡(luò)。
設(shè)備之間的網(wǎng)絡(luò)連接
有一種與網(wǎng)狀網(wǎng)絡(luò)對應(yīng)的通信標準,名為ZigBee。通過采用N對N的通信方式,設(shè)備可以一邊接管其他的設(shè)備,一邊進行遠程通信。除此之外它還有一個優(yōu)點,那就是即使有一臺設(shè)備發(fā)生故障無法通信,其他設(shè)備也會代替它來執(zhí)行通信。
2、把設(shè)備連接到服務(wù)器的網(wǎng)絡(luò)
把設(shè)備連接到物聯(lián)網(wǎng)的網(wǎng)絡(luò)時,會用到互聯(lián)網(wǎng)線路。3G和LTE等移動線路最為常用。
除了現(xiàn)在Web服務(wù)種廣泛使用的HTTP和WebSocket協(xié)議以外,還有一些專為機器對機器通信和物聯(lián)網(wǎng)而產(chǎn)生的輕量級協(xié)議,如MQTT等。
物聯(lián)網(wǎng)開發(fā)技術(shù)要素-物聯(lián)網(wǎng)服務(wù)
物聯(lián)網(wǎng)服務(wù)有兩個作用:一是從設(shè)備接受數(shù)據(jù)以及發(fā)送數(shù)據(jù)給設(shè)備;二是處理和保存數(shù)據(jù)。
Web系統(tǒng)的作用
我們來具體看一下這兩個作用。
1、數(shù)據(jù)交換
通常的Web服務(wù)會根據(jù)Web瀏覽器發(fā)送的HTTP請求發(fā)送HTML,然后用Web瀏覽器顯示。物聯(lián)網(wǎng)開發(fā)服務(wù)則不采用Web瀏覽器,而是接受從設(shè)備直接發(fā)來的數(shù)據(jù)。設(shè)備發(fā)來的數(shù)據(jù)內(nèi)容包括設(shè)備搭載的傳感器所采集到的信息,以及用戶對設(shè)備進行的操作。設(shè)備和物聯(lián)網(wǎng)開發(fā)服務(wù)的通信方法大致分為兩種:同步傳輸和異步傳輸。
Web系統(tǒng)和設(shè)備的通信
在同步傳輸?shù)那闆r下,設(shè)備發(fā)送數(shù)據(jù)時會把數(shù)據(jù)發(fā)送給物聯(lián)網(wǎng)服務(wù)。接下來直到物聯(lián)網(wǎng)服務(wù)接收完數(shù)據(jù)之前,不管設(shè)備向物聯(lián)網(wǎng)服務(wù)發(fā)送多少次數(shù)據(jù),都算作一次傳輸。反過來,物聯(lián)網(wǎng)服務(wù)在執(zhí)行對設(shè)備的反饋時,則是先由設(shè)備向物聯(lián)網(wǎng)服務(wù)發(fā)送請求消息,然后物聯(lián)網(wǎng)服務(wù)會響應(yīng)請求并將信息發(fā)送給設(shè)備。就這種方法而言,直到設(shè)備發(fā)送請求之前,物聯(lián)網(wǎng)服務(wù)都不能把消息發(fā)送給設(shè)備。但是這種方法只適用于不知道設(shè)備IP地址的情況,因為就算不知道設(shè)備的IP地址,只要設(shè)備發(fā)送了請求,物聯(lián)網(wǎng)服務(wù)就能把消息發(fā)送給設(shè)備。
在異步傳輸中,設(shè)備會把數(shù)據(jù)發(fā)送給物聯(lián)網(wǎng)服務(wù),每發(fā)送一次,就算作一次傳輸。此外,從物聯(lián)網(wǎng)服務(wù)向設(shè)備進行傳輸時,無需等待設(shè)備發(fā)來的請求,可以在任意時間點執(zhí)行發(fā)送。采用這個方法能在物聯(lián)網(wǎng)服務(wù)規(guī)定的任意一個時刻發(fā)送消息。但是,物聯(lián)網(wǎng)服務(wù)需要預(yù)先知道發(fā)送消息的設(shè)備的IP地址。
2、處理和保存數(shù)據(jù)
處理和保存數(shù)據(jù)的操作包括把從設(shè)備接受到的數(shù)據(jù)保存到數(shù)據(jù)庫,以及從接收到的數(shù)據(jù)來判斷如何控制設(shè)備。
從設(shè)備接收到的數(shù)據(jù)不只能用計算機簡單處理的數(shù)值型數(shù)據(jù),根據(jù)要實現(xiàn)的內(nèi)容,還包含圖像、語音、自然語言這些很難直接用計算機處理、沒有被結(jié)構(gòu)化的數(shù)據(jù)。我們把這種數(shù)據(jù)叫作非結(jié)構(gòu)化數(shù)據(jù)。處理時,有時也會把那些易于用計算機處理的數(shù)據(jù)從非結(jié)構(gòu)化數(shù)據(jù)中提取出來,例如把表示圖像和語音特征的值提取出來。這些信息會被保存到數(shù)據(jù)庫中。
設(shè)備按照所提取數(shù)據(jù)的判斷邏輯來決定反饋的內(nèi)容,例如基于某個房間的度數(shù)據(jù)來決定空調(diào)的開關(guān)狀態(tài)和目標溫度。這些處理和保存的方法大體上分為兩種:一種是對保存的數(shù)據(jù)定期進行采集和處理的批處理,另一種是將收到的數(shù)據(jù)逐次進行處理的流處理。
保存和處理數(shù)據(jù)的時機
根據(jù)房間的溫度變化來調(diào)整空調(diào)的運轉(zhuǎn)時,從向空調(diào)發(fā)出指示到溫度發(fā)生變化,這中間會需要一段時間。這種情況下就適合采用批處理來持續(xù)記錄每隔一定時間的溫度值,并定期執(zhí)行處理。此外,如果希望回到房間之后再打開空調(diào),那么就適合采用能立即執(zhí)行操作的流處理。
物聯(lián)網(wǎng)開發(fā)技術(shù)要素-數(shù)據(jù)分析
前一節(jié)我們以“溫度傳感器和空調(diào)運轉(zhuǎn)的關(guān)系”為例進行了說明。那么我們能像這個例子那樣,輕松實現(xiàn)根據(jù)房間溫度控制空調(diào)這一目的嗎?
要實現(xiàn)這一目的,需要決定控制空調(diào)開/關(guān)的房間溫度值,也就是決定溫度的閾值。這種情況下,閾值會根據(jù)使用者目的而有所不同。舉個例子,把空調(diào)的功耗降到最小所需要的閾值和保持令人體感舒適的溫度所需要的閾值就是兩個不同的值。此外,為了能準確判斷房間里有沒有人,需要從多個傳感器的值所包含的關(guān)聯(lián)性來判斷人再或不在房間里。人類很難光憑經(jīng)驗去摸索和決定這種值。這就凸顯出了數(shù)據(jù)分析的重要性。
數(shù)據(jù)分析的代表性方法有兩種,分別是統(tǒng)計分析和機器學習。
數(shù)據(jù)分析的兩種方法
1、統(tǒng)計分析
統(tǒng)計分析是用數(shù)學手法通過搜集到的大量數(shù)據(jù)來明確事物的聯(lián)系性的方法。比如為了實現(xiàn)給空調(diào)節(jié)能的目的,我們調(diào)查了空調(diào)在某個固定的溫度下運轉(zhuǎn)時,房間的溫度和空調(diào)的耗電量,并將這些數(shù)據(jù)制成了表格。
空調(diào)的電力和室溫的關(guān)系示例
從這個關(guān)系中可以推導出在室溫下把空調(diào)溫度設(shè)定在多少才能嘴省電,由此就能決定閥值了。
2、機器學習
統(tǒng)計分析基于大量數(shù)據(jù)之間的聯(lián)系,明確當前數(shù)據(jù)間形成的關(guān)聯(lián)。機器學習則不僅僅能進行分析,還能預(yù)測今后的發(fā)展狀況。
機器學習就如它的字面意思一樣,計算機會按照程序決定的算法,機械性地學習所給數(shù)據(jù)之間的聯(lián)系性。當給出未知數(shù)據(jù)時,也會輸出與其對應(yīng)的值。
機器學習分為兩個階段:學習階段和識別階段。在學習階段,一個名為學習器的程序會基于一些訓練數(shù)據(jù),機械性地掌握這些數(shù)據(jù)之間的聯(lián)系。作為學習階段的結(jié)果,計算機會根據(jù)機器學習的算法輸出參數(shù),然后以這個參數(shù)為基礎(chǔ)創(chuàng)建叫作鑒別器(discriminator)的程序。只要把未知的數(shù)據(jù)給這個鑒別器,就能輸出最合適這個值的結(jié)果。
機器學習示例
舉個例子,假設(shè)我們想使用若干種傳感器來識別房間里有沒有人。這種情況下需要準備兩種數(shù)據(jù),即房間里有人時的傳感器數(shù)據(jù)(正面例子)和房間里沒人時的傳感器數(shù)據(jù)(反面例子)。計算機通過把這兩種數(shù)據(jù)分別交給學習器,可以獲取制作鑒別器用的參數(shù)。對于以參數(shù)為基準制作的鑒別器而言,只要輸入從各個感測設(shè)備接收到的數(shù)據(jù),鑒別器就能輸出結(jié)果,告訴我們現(xiàn)在房間里是否有人。
上述內(nèi)容屬于機器學習的示例之一,被稱作分為問題。在用于執(zhí)行數(shù)據(jù)分類的機器學習算法中有很多途徑,如用于垃圾郵件過濾器的貝葉斯過濾器和用于分類文檔及圖像的支持向量機(Support Vector Machine,SVM)等。此外,除了分類問題以外,機器學習還能解決很多領(lǐng)域的問題。