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