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