講到物聯(lián)網(wǎng),大多數(shù)人還是不太清楚物聯(lián)網(wǎng)具體是什么、運作模式什么樣、作用如何。而本文中,筆者就從物聯(lián)網(wǎng)的三個構(gòu)成要素出發(fā),向我們介紹什么是物聯(lián)網(wǎng)。
近年來,物聯(lián)網(wǎng)在國內(nèi)乃至全世界都非常火熱,它被稱為三次信息產(chǎn)業(yè)浪潮,將極大地改變?nèi)藗兊纳罘绞脚c人類社會的運行。
作為發(fā)展不是特別成熟的行業(yè),很多人對于物聯(lián)網(wǎng)結(jié)構(gòu)還不具備特別清晰的認識。作為物聯(lián)網(wǎng)行業(yè)中摸爬滾打6年的老兵,本次我將用通俗易懂的語言,解開物聯(lián)網(wǎng)服務的神秘面紗,希望幫助各位童鞋更加深刻的理解物聯(lián)網(wǎng)服務結(jié)構(gòu)的搭建。
一、引言
簡單地說實現(xiàn)物聯(lián)網(wǎng)時,主要是在服務上解決兩個層面的東西:
1. 把設備采集的傳感器數(shù)據(jù),通過各種網(wǎng)絡方式傳輸?shù)椒掌鞅4嬖跀?shù)據(jù)庫,并對采集的數(shù)據(jù)進行加工分析,然后執(zhí)行對應呈現(xiàn)和響應。
2. 基于控制設備的需求,需要能夠?qū)崿F(xiàn)向設備發(fā)送相關指令和信息,讓設備作出對應響應。
本次我們也將是主要這兩個層面進行剖析,幫助大家理解清楚如何構(gòu)建物聯(lián)網(wǎng)服務,以及用于實現(xiàn)物聯(lián)網(wǎng)的重要要素。
結(jié)合物聯(lián)網(wǎng)標準的三層的結(jié)構(gòu)定義,同時考慮實際運用的通俗說法,我們可以將物聯(lián)網(wǎng)劃分為3個構(gòu)成要素:設備、網(wǎng)關、服務器。
二、要素之設備
大家很容易理解和感知的是——身邊的智能手機以及其他智能硬件設備,都是由硬件和軟件兩部分組成的。
硬件主要是經(jīng)過ID設計、MD設計,然后基于實體制作的精致實體。軟件則是基于使用使用需求制作來控制硬件的。設備開發(fā)的角度看問題,就是在最大限度內(nèi)實現(xiàn)硬件和軟件的完美結(jié)合。
對于平日里從事應用程序開發(fā)的工程師來說,說到設備開發(fā),多少都很感覺茫然,在考慮設備軟件開發(fā)時,也多少會擔心以下問題:
做硬件設備的控制軟件需不需要對硬件有深入的了解
開發(fā)設備軟件需要什么樣的專業(yè)知識
開發(fā)設備軟件需要一些不同于應用程序的開發(fā)環(huán)境嗎
毫無疑問,需要!
設備軟件就是大家通常聽到的“嵌入式程序”,主要就是控制設備中的各種器件,需要較強的專業(yè)性以及一些硬件功底。
2.1 連通性給設備帶來的變化
在設備層面,物聯(lián)網(wǎng)會帶來哪些變化呢?
總結(jié)下來就是“連通性”——幫助設備實現(xiàn)與外部系統(tǒng)或者設備的相互連接。
以前由于一些原因,很多設備是不具備連通性的:一些是因為之前沒有詳細的需求,另外一些是由于設備本身就是用來獨立實現(xiàn)功能的。這樣的設備一旦出廠就沒有再對產(chǎn)品進行升級了,所以研發(fā)周期相對較長,對于測試也相對嚴苛。
賦予連通性后,物聯(lián)網(wǎng)設備就不僅僅是是一個設備本身份,還提供的是一種與云服務或者智能手機等外部機器組合在一起的服務。
這樣的情況下,更新設備應用程序變得非常簡單,產(chǎn)品發(fā)布之后,還可以根據(jù)用戶反饋,采用OTA方式不斷改良設備軟件。
此外,還可以在云端對大量設備進行匯總和信息整合加工,以應用程序的方式向用戶提供有益的信息。
硬件本身的開發(fā)成本競爭一直都異常激化,物聯(lián)網(wǎng)會導致設備開發(fā)走向高級化。
基于設備開發(fā),將服務整體作為一個生態(tài)系統(tǒng)來進行適宜的設計規(guī)劃,重要性不言而喻。
比如:基于大數(shù)據(jù)算法,為用戶提供吃力設備數(shù)據(jù)的高級分析服務,或者構(gòu)建應用程序呈現(xiàn)設備的變化情況,亦或者基于人工智能計劃,使設備基于變化情況作出一些正確的反饋動作。
為了最大程度適應物聯(lián)網(wǎng)帶來的連通性變化,設備開發(fā)工程師和應用程序開發(fā)工程師,需要相互理解對方并達成共識。
只有雙方各自理解對方領域的程序是如何工作和運行的,才能在應用程序高速開發(fā)的牽引下,打造成非常匹配的物聯(lián)網(wǎng)設備和對應的服務。
2.2 物聯(lián)網(wǎng)設備的組成要素
物聯(lián)網(wǎng)設備和傳統(tǒng)生活中我們所見的其他設備沒有多大的本質(zhì)區(qū)別,主要作用均是通過感知周邊環(huán)境變化,然后輸出對應信息,或者在用戶操控下執(zhí)行某些動作,差異點就在于多了一個物聯(lián)網(wǎng)網(wǎng)絡服務。
也就是我們常說的單片機,使用較為廣泛的是傳統(tǒng)的51系列單片機及STM32,是一個微型控制器芯片。支持編寫程序,然后按照對應程序讀取各IO口狀態(tài)信息,或者利用IO口輸出各特定電信號。
微控制器主要由CPU、內(nèi)存、外圍電路組成。
輸入設備
輸入設備主要是幫助設備感知周邊的數(shù)據(jù)信息,主要是一些傳感器或者按鈕等電子元件。
比如我們常見的麥克風、鼠標、鍵盤、溫度傳感器、重力感應陀螺儀等都屬于輸入設備,主要是負責采集信號,幫助了解周邊現(xiàn)實世界的信息。
輸出設備
設備要實現(xiàn)的不僅僅是對周邊的環(huán)境信息的感知,還需要將感知的信息進行呈現(xiàn),將狀態(tài)“可視化”,方便人類獲取信息,并進行干預操作。向用戶反饋信息,我們常見的輸出設備有LED顯示屏、蜂鳴器等。
連接網(wǎng)絡
物聯(lián)網(wǎng)一個重要的特性就是連接網(wǎng)絡,設備通過網(wǎng)絡與服務器進行信息交換,積累數(shù)據(jù)做出分析決策,同時可以遠程控制設備。連接的網(wǎng)絡包含了有線網(wǎng)絡和無線網(wǎng)絡兩種方式,根據(jù)不同應用需求可以選擇不同連接網(wǎng)絡方式。
有線連接包含以太網(wǎng)、串口通信、USB等,無線連接包含WIFI、2G/3G/4G/5G、藍牙、NB等等。
2.3 物聯(lián)設備連接網(wǎng)絡的方式
設備連接網(wǎng)絡的方式有兩種,一種是設備直連,一種是設備連接網(wǎng)關,網(wǎng)關連接網(wǎng)絡。
目前發(fā)展最快的方式,主要是直連型的方式,尤其是廣域網(wǎng)通信方式下。
網(wǎng)關設備與物聯(lián)網(wǎng)設備相比較,其更加復雜可以處理數(shù)據(jù)再次發(fā)送及數(shù)據(jù)存儲,另外通常情況下,網(wǎng)關設備還支持高級加密數(shù)據(jù),可以加大數(shù)據(jù)安全性。
直連型設備無須考慮網(wǎng)關,構(gòu)建系統(tǒng)更容易,但是需要考慮再次發(fā)送數(shù)據(jù)等。
2.4 傳感器機制
利用物理特性的傳感器
傳感器根據(jù)用途而內(nèi)置不同的檢測元件,檢測元件的電子特性會隨著環(huán)境的變化而變化,檢測電子特性的變化就可以檢測對應信息的變化。
利用幾何變異的傳感器
傳感器根據(jù)不同的幾何學特性來輸出特定信息,例如測距傳感器利用與障礙物之間的幾何學關系來測算距離,不同距離傳感器輸出對應的電壓值。
2.5 傳感器的利用過程
微控制器主要是負責接收傳感器輸出的信息及控制設備,它具體是如何控制處理電子信號的呢?
首先我們需要先了解一下傳感器的電子信號特性。傳感器具備具有毫伏級的微信號,并且輸出的是具有一定噪聲的模擬信號,控制器要完整接收信息就需要進行一系列的信號處理。
傳感器采集到信號后,由于信號比較微弱因此需要先放大信號,由于微控制芯片屬于數(shù)字器件因此需要將模擬信號轉(zhuǎn)為數(shù)字信號,最后是轉(zhuǎn)換成具體測量的數(shù)值。
2.6 輸出設備使用
傳感器的作用是采集信息進行分析,處理后同樣需要把結(jié)果反饋給用戶或者環(huán)境,那么就需要使用到輸出設備。使用輸出設備,我們需要注意的輸出設備的利用效能,以便將相關結(jié)果進行很好的呈現(xiàn)。
三、要素之網(wǎng)關
3.1 網(wǎng)關組成
在物聯(lián)網(wǎng)系統(tǒng)中,不能連接到互聯(lián)網(wǎng)的設備就需要使用網(wǎng)關,網(wǎng)關主要就是負責把這些設備連接到互聯(lián)網(wǎng)那個。
網(wǎng)關是指能連接多臺設備,并具備直接連接到互聯(lián)網(wǎng)的功能機器和軟件。
3.2網(wǎng)關的作用
網(wǎng)關扮演的重要作用是采集數(shù)據(jù)的環(huán)節(jié),主要是三種功能:
1)從設備接收數(shù)據(jù)
設備和網(wǎng)關通過各種各樣的接口連接,當通過傳感器終端連接時,多數(shù)情況下是傳感器單方面持續(xù)向服務器發(fā)送數(shù)據(jù)。
根據(jù)設備不同,也存在設備申請從外部獲取數(shù)據(jù)時,服務器向設備發(fā)送數(shù)據(jù)的情況,這個時候就需要通過網(wǎng)關申請數(shù)據(jù)。
2)生成要發(fā)送的數(shù)據(jù)
從設備接收到數(shù)據(jù)后,就需要轉(zhuǎn)換成能發(fā)送給服務器的格式,通常是轉(zhuǎn)化成數(shù)值數(shù)據(jù)或者字符串格式。發(fā)送數(shù)據(jù)的過程中,可能會存在這樣的操作,對數(shù)據(jù)進行整合減少數(shù)據(jù)量,或者合并發(fā)送。
3)把數(shù)據(jù)發(fā)送到服務器
向服務器發(fā)送數(shù)據(jù)的協(xié)議取決于服務器端,如果需要發(fā)現(xiàn)接收數(shù)據(jù),需要實現(xiàn)準備好相關功能設置。
四、要素之服務器
服務器在整個物聯(lián)網(wǎng)服務結(jié)構(gòu)中,主要扮演者4層作用,即:數(shù)據(jù)接收、數(shù)據(jù)處理、存儲數(shù)據(jù)、反控數(shù)據(jù)發(fā)送。
4.1 數(shù)據(jù)接收
服務器通過約定的協(xié)議接收來自設備端的數(shù)據(jù),協(xié)議包含有HTTP協(xié)議、WebSocket、MQTT、COAP等,下面我們將來詳細了解一下各個協(xié)議。
HTTP、WebSocket都是常見協(xié)議我們就不說了,我們來看一下MQTT協(xié)議。
MQTT是最近幾年出來的協(xié)議,物聯(lián)網(wǎng)領域會將其作為標準協(xié)議,MQTT原本是IBM公司開發(fā)的協(xié)議,現(xiàn)在開源了。
MQTT協(xié)議能夠?qū)崿F(xiàn)一對多通信,主要由發(fā)布者、訂閱者、中介構(gòu)成。
中介承擔著轉(zhuǎn)發(fā)MQTT通信的服務器作用,發(fā)布者和訂閱者承擔的是客戶端的作用。
發(fā)布者是發(fā)送消息的客戶端,訂閱者是接收消息的客戶端。
COAP協(xié)議設計的初衷是為了在受約束的網(wǎng)絡和終端環(huán)境下傳輸物聯(lián)網(wǎng)應用數(shù)據(jù),所以COAP協(xié)議的設計有一些特別的考慮——它的數(shù)據(jù)包很小,再加上嚴格的重傳機制,使得COAP特別適合在帶寬不高,終端能力受限的網(wǎng)絡中使用。優(yōu)點是數(shù)據(jù)包小、傳輸靈活、實現(xiàn)簡單,具有完善的請求應答模型和重傳機制。
COAP和HTTP存在一定的對應關系,二者互譯較為簡單,這為物聯(lián)網(wǎng)和互聯(lián)網(wǎng)的對接提供了很好的標準化基礎。
COAP的缺點是在業(yè)務發(fā)現(xiàn)、組播和安全方面的設計仍不完善。
聊完部分協(xié)議,還有一個重點的東西我們需要說一下:
數(shù)據(jù)時經(jīng)過協(xié)議進行交換,但是數(shù)據(jù)的格式也是這個過程中很重要的一環(huán),典型的就是XML和JSON。
從物聯(lián)網(wǎng)的角度來說,除了設備傳感器數(shù)據(jù)之外,還需要發(fā)送例如接收時間、設備信息等一些其他數(shù)據(jù),因此使用者就需要將從設備發(fā)送過來的數(shù)據(jù)結(jié)構(gòu)化,我們分別用XML和JSON表示傳感器的信息、設備狀態(tài)、獲取數(shù)據(jù)的時間以及發(fā)送數(shù)據(jù)的設備名稱等。
對比二者,我們可以發(fā)現(xiàn)XML格式比JSON更容易理解,然而XML字符相比更多,數(shù)據(jù)量更大,JSON格式則相反。
XML和JSON數(shù)據(jù),究竟使用哪一種更好呢?
我們不能直接一概而論,不過JSON數(shù)據(jù)最小,更適合移動數(shù)據(jù)通信的情況。
設備傳來的數(shù)據(jù)和Web是有差異的,大多數(shù)是傳感器數(shù)據(jù)、語音、圖像等數(shù)值數(shù)據(jù);與文本而言比較而言,這樣的數(shù)據(jù)更適合二進制形式處理。
基于物聯(lián)網(wǎng)服務處理這些格式時,需要把文本數(shù)據(jù)轉(zhuǎn)換成數(shù)值數(shù)據(jù)和二進制數(shù)據(jù),因此需要解析XML和JSON格式數(shù)據(jù),以及把解析的結(jié)果從文本格式轉(zhuǎn)換到二進制形式。
如果能夠直接以二進制形式接收數(shù)據(jù),是不是就更夠更快速地處理數(shù)據(jù)呢,對此產(chǎn)生了MessagePack格式,其數(shù)據(jù)格式與JSON相似,卻保留了二進制的形式。
——人們不方便閱讀,但是機器卻很容易處理。同時因為MessagePack發(fā)送的是二進制數(shù)據(jù),所以比起文本形式的JSON更加緊湊。
4.2 數(shù)據(jù)處理
服務器接收到數(shù)據(jù)之后,接下來就需要對數(shù)據(jù)進行處理。說到數(shù)據(jù)處理,基本上就是常見的那4樣:數(shù)據(jù)分析、數(shù)據(jù)加工、數(shù)據(jù)保存以及向設備發(fā)送指令。
對于數(shù)據(jù)的分析與加工,常見的有“批處理”和“流處理”兩種典型的處理方式。
下面我們一起來看一下這兩種處理方式:
批處理
顧名思義批處理就是每隔一段時間處理一批積攢下來的數(shù)據(jù),通常情況下是先把數(shù)據(jù)存入數(shù)據(jù)庫,隔一段時間就從數(shù)據(jù)庫獲取數(shù)據(jù),執(zhí)行處理操作。
批處理重點在于在規(guī)定時間內(nèi)處理完成所有的數(shù)據(jù),因此數(shù)據(jù)的數(shù)據(jù)量越大,就需要越好性能的機器。
要處理來自于數(shù)量龐大的設備發(fā)出來的傳感器數(shù)據(jù)和圖像等大型數(shù)據(jù),就需要使用分布式處理平臺軟件,高效處理數(shù)據(jù),常見的是Hadoop和Spark。
流處理
指不保存數(shù)據(jù),按照到達服務器的順序?qū)?shù)據(jù)依次進行處理,對于實時對數(shù)據(jù)作出反應,流處理就是一個有效的方法。
批處理是把數(shù)據(jù)積攢之后進行隔一段時間處理,所以從數(shù)據(jù)到達至處理完畢會出現(xiàn)時間延遲。因此,流處理這樣把到達的數(shù)據(jù)逐次立即處理的方法就變得比較重要。流處理基本上不會保存數(shù)據(jù),使用過的數(shù)據(jù)直接丟棄,保存處理結(jié)果就好。
4.3 數(shù)據(jù)存儲
說到數(shù)據(jù)存儲不得不說的是數(shù)據(jù)庫,數(shù)據(jù)庫的作用主要是存儲并靈活運用數(shù)據(jù),除此之外還包括從保存的數(shù)據(jù)中找出與所指定條件相符的數(shù)據(jù)。
數(shù)據(jù)庫從作用上講,主要是數(shù)據(jù)的增刪改查,下面我們就介紹一下常見的數(shù)據(jù)庫及其特性。
關系數(shù)據(jù)庫
關系數(shù)據(jù)庫是最普通的數(shù)據(jù)庫,其具備一種叫作表格的表格型數(shù)據(jù)結(jié)構(gòu),其用途在于存儲數(shù)據(jù),用戶通過SQL語言可以對其執(zhí)行數(shù)據(jù)的提取、插入以及刪除。
關系型數(shù)據(jù)庫不擅長于保存圖片、語音等二進制形式的數(shù)據(jù)。
舉個例子,如下圖可以看看示意的表格結(jié)構(gòu):
文檔型數(shù)據(jù)庫
文檔型數(shù)據(jù)庫屬于NoSQL數(shù)據(jù)庫的一種,其可以以XML和JSON這種結(jié)構(gòu)化文檔的格式保存數(shù)據(jù)。
比如:MongoDB就是典型的文檔型數(shù)據(jù)庫,它以JSON的格式保存數(shù)據(jù),同時能夠用JSON指令檢索條件。
這樣一來,在用JSON交換傳感器信息時,就能直接對數(shù)據(jù)進行保存和使用即使增加新的數(shù)據(jù)條目或者新增設備,也能直接以JSON格式保存數(shù)據(jù)。非常適合用于無法讀出設備數(shù)量和數(shù)據(jù)種類的情況,以及保存?zhèn)鞲衅鞯仍O備的數(shù)據(jù)。
鍵值存儲
鍵值存儲也屬于NoSQL數(shù)據(jù)庫的一種,就是巴一中叫作“值”(value)的數(shù)據(jù)值和與其一一對應的“鍵”(key)的集合保存在一起。
鍵值存儲可以保存在內(nèi)存里,也可以保存硬盤里。
前者能夠?qū)崿F(xiàn)高速保存,但是軟件停止運行時,保存的內(nèi)容就會消失,因此前者適合當緩存用。
后者的速度不如前者,但是即使軟件停止運行,數(shù)據(jù)仍然不會丟失。
4.4 反控數(shù)據(jù)發(fā)送
“反控”主要是指服務器端向設備端發(fā)送數(shù)據(jù)或者指令,控制設備,發(fā)送時可以采取接收時的相關協(xié)議。
下面我們列舉一下HTTP、MQTT是如何實現(xiàn)同步異步數(shù)據(jù)傳輸?shù)模?/p>
通過HTTP發(fā)送數(shù)據(jù)
HTTP是簡單的方法,在這個方法里服務器是等待接收HTTP請求的Web服務器,設備申請,服務器下發(fā)數(shù)據(jù)給設備,設備端需要不斷地執(zhí)行輪詢連接,來獲取看服務器是否有需要下發(fā)的數(shù)據(jù)信息。
采用HTTP方法的主要應用場景:
1. 無法確定設備唯一地址,不知道該把數(shù)據(jù)發(fā)給哪個設備
2. 設備考慮移動傳輸費用問題(節(jié)省)
通過MQTT發(fā)送數(shù)據(jù)
上面我們已經(jīng)介紹了HTTP方法由設備訪問服務器獲取數(shù)據(jù),這種方法只要客戶端沒有發(fā)出申請,數(shù)據(jù)就不會被發(fā)送。
當然,使用者可以在服務器端來連接設備,但是新增設備后,服務器如何管理龐大的設備呢?
基于此,我們考慮MQTT方法,運用其發(fā)布/訂閱的優(yōu)點。
實現(xiàn)步驟:
Step1:設備作為訂閱者,向MQTT中介進行訂閱
Step2:服務器作為發(fā)布者,向MQTT中介進行發(fā)布
該種模式下,發(fā)送服務器只需要把確定的數(shù)據(jù)加在主題上發(fā)送就行了,服務器和設備之間無需知道對方的地址,只需要知道中介的地址即可。
一旦訂閱者斷開,中介將肩負起斷開時的發(fā)送,在設備重連后再次發(fā)送數(shù)據(jù)。
運用MQTT協(xié)議后,服務器反控下發(fā)數(shù)據(jù)到設備就變得簡單了很多。
五、總結(jié)
相信經(jīng)過上面的分析總結(jié),無論是剛?cè)腴T或者還是已經(jīng)接觸過一定物聯(lián)網(wǎng)的童鞋,都能夠?qū)⒄麄€物聯(lián)網(wǎng)的實現(xiàn)架構(gòu)串聯(lián)起來了吧;并且知道中間的數(shù)據(jù)信息怎么流轉(zhuǎn)和處理,各個部分分別是怎樣的,扮演什么樣的作用。
無論你是物聯(lián)網(wǎng)硬件設備產(chǎn)品經(jīng)理,亦或者是物聯(lián)網(wǎng)云平臺及應用產(chǎn)品經(jīng)理,相信你對于物聯(lián)網(wǎng)服務架構(gòu)都有了更加深刻的理解。
-
微控制器
+關注
關注
48文章
7651瀏覽量
152123 -
物聯(lián)網(wǎng)
+關注
關注
2914文章
44939瀏覽量
377087 -
服務器
+關注
關注
12文章
9308瀏覽量
86071
發(fā)布評論請先 登錄
相關推薦
評論