首頁 - 關于我們 - 新聞活動 - 從程序員(yuán)的(de)角度,來(lái)拆解物(wù)聯網系統中的(de)開發工作

從程序員(yuán)的(de)角度,來(lái)拆解物(wù)聯網系統中的(de)開發工作

2021-7-14新聞

  • 物(wù)聯網系統

  • 設備端的(de)開發

    • 不需要網關的(de)設備

    • 需要網關的(de)設備

    • WiFi類設備

  • 物(wù)聯網平台開發

  • 業務應用(yòng)開發


物(wù)聯網的(de)概念已經被炒了(le)好多(duō)年了(le),奇怪的(de)是:市場(chǎng)中對(duì)這(zhè)個(gè)概念的(de)反應總是不愠不火

随著(zhe)5G 的(de)迅速普及,不知道是否能夠再次把這(zhè)個(gè)領域帶火起來(lái)。

但是不管怎樣,很多(duō)大(dà)學已經把物(wù)聯網這(zhè)個(gè)專業給坐(zuò)實了(le)。

前幾天,一位大(dà)一的(de)小夥伴私信我:進入物(wù)聯網專業已經快(kuài)一年時(shí)間了(le),卻不知道以後出去幹什(shén)麽?

這(zhè)篇文章(zhāng),我們就從開發者的(de)角度,來(lái)簡單看一下(xià)物(wù)聯網這(zhè)個(gè)領域使用(yòng)了(le)哪些技術棧、有哪些開發工作

物(wù)聯網系統

image.png

這(zhè)張圖從開發者的(de)角度,展示了(le)一個(gè)物(wù)聯網系統中的(de)各種角色,包括它們之間的(de)通(tōng)信。

如果從軟件開發崗位的(de)角度來(lái)對(duì)這(zhè)幾個(gè)模塊進行劃分(fēn)的(de)話(huà),這(zhè)個(gè)系統中主要包括:

  1. 前端、後端開發:負責物(wù)聯網平台和(hé)業務應用(yòng)的(de)開發;

  2. 嵌入式軟件:主要是設備端的(de)開發,這(zhè)部分(fēn)根據使用(yòng)的(de)不同技術(或者說硬件模塊),又可(kě)以分(fēn)爲很多(duō)不同的(de)子領域;

  3. 移動端開發:Android APP, iOS APP, H5 小程序,還(hái)有目前的(de)鴻蒙系統APP。

設備端的(de)開發

image.png

這(zhè)裏描述的(de)設備,還(hái)是屬于比較狹隘的(de)範疇,僅僅包含了(le)具有通(tōng)信功能的(de)物(wù)理(lǐ)硬件實體

如果從廣義的(de)物(wù)聯網來(lái)看,任何物(wù)品,隻要能夠接入網絡,都可(kě)以稱之爲設備,或者稱之爲 thing。

比如:把一件衣服附上一個(gè)電子标簽,也(yě)是物(wù)聯網的(de)一個(gè)小分(fēn)子。

image.png

我們這(zhè)裏,仍舊(jiù)以傳統意義上的(de)設備來(lái)講解,比如:智慧路燈,智能手表,智能家居裏的(de)門磁、報警器等等。

對(duì)設備端的(de)開發進行分(fēn)類的(de)話(huà),從通(tōng)信方式這(zhè)個(gè)角度來(lái)進行劃分(fēn)比較清晰。

一個(gè)設備要想接入到網絡,肯定需要通(tōng)信功能,包括:有線通(tōng)信,無線通(tōng)信。

在一些傳統行業,或者對(duì)通(tōng)信質量要求比較高(gāo)的(de)場(chǎng)景下(xià),部署有線網絡還(hái)是比較常見的(de),例如一些工業場(chǎng)景中。

對(duì)于一些民用(yòng)領域,大(dà)部分(fēn)還(hái)是以無線通(tōng)信爲主。

1. 不需要網關的(de)設備

這(zhè)一類設備,利用(yòng) 2G/3G/4G 基站來(lái)進行數據的(de)傳輸,産品的(de)形态是:

image.png

也(yě)就是 單片機+通(tōng)信模塊的(de)方式。

通(tōng)信模塊包括:GPRS 模塊、4G 模塊、NB-IoT 等等。

在開發這(zhè)一類産品的(de)時(shí)候,單片機負責産品的(de)功能部分(fēn);通(tōng)信模塊負責通(tōng)信部分(fēn)。

單片機與通(tōng)信模塊之間,在硬件上通(tōng)過 UART 口通(tōng)信居多(duō),在協議(yì)上可(kě)以通(tōng)過 AT 指令,或者其他(tā)的(de)一些專有協議(yì)。

image.png

近幾年,在傳統的(de)消費類電子産品上,添加一個(gè)通(tōng)信模塊,讓産品達到連網的(de)功能,還(hái)是比較流行的(de)。

這(zhè)一類的(de)産品的(de)軟件開發工作,與一般的(de)單片機開發并無兩樣。無非是增加了(le)一些通(tōng)過網絡來(lái)上報數據,或者從網絡接收控制指令。

隻要熟悉所使用(yòng)的(de)通(tōng)信協議(yì)即可(kě)。

上面的(de)這(zhè)種産品形态,需要對(duì)硬件進行重新設計,比較适合從零開始的(de)産品開發。

那麽對(duì)于那些已有的(de)産品,如果想連接到物(wù)聯網平台上,但是又不想重新設計,又該怎麽辦呢(ne)?

有需求就有供給!

比如:一些掃地機、吸塵器的(de)廠商,由于找不到其他(tā)可(kě)以創新、突破的(de)點,于是就開始内卷,紛紛加上連網的(de)功能。

image.png

他(tā)們直接在産品中,添加一個(gè) ESP8266 或者 ESP32 模組,就立刻升級成一個(gè)智能産品,多(duō)麽高(gāo)大(dà)上。當然了(le), 價格也(yě)同樣高(gāo)大(dà)上起來(lái)了(le)!

ESP8266 或者 ESP32 與一般的(de)通(tōng)信模組有一點不一樣:它是一個(gè)完整的(de)單片機,隻不過它們的(de)主要用(yòng)途就是專門用(yòng)來(lái)解決通(tōng)信問題,而不是一般的(de)功能控制。

2. 需要網關的(de)設備

image.png

如果提到智能家居,可(kě)能大(dà)部分(fēn)的(de)人(rén)會想到一個(gè)詞語 ZigBee,這(zhè)是一個(gè)局域網的(de)無線通(tōng)信協議(yì),大(dà)概在 2005 年左右就開始在智能家居中嶄露頭角了(le)。

與 ZigBee 類似的(de)無線通(tōng)信協議(yì)還(hái)有:ZWaveRF433BLE 等等。

它們的(de)作用(yòng)都是類似的(de):都是爲了(le)讓多(duō)個(gè)設備能夠組網,節點之間以多(duō)跳的(de)方式傳輸數據,達到通(tōng)信的(de)目的(de)。

這(zhè)些數據最終會彙總到一個(gè)叫做(zuò)網關的(de)設備,然後與雲端的(de)服務器進行通(tōng)信。

image.png

這(zhè)一類産品的(de)開發,包括:網關開發 和(hé) 設備開發這(zhè)兩種。

網關的(de)開發稍微複雜(zá)一些。從功能上來(lái)說,網關需要實現:

  1. 設備的(de)管理(lǐ)(與物(wù)聯網平台的(de)設備管理(lǐ)不是一個(gè)概念);

  2. 規則引擎(在斷網的(de)狀态下(xià)實現場(chǎng)景聯動等功能);

  3. 通(tōng)信協議(yì)轉換(把物(wù)理(lǐ)網平台的(de)通(tōng)信協議(yì)轉成設備私有協議(yì));

有些網關中,還(hái)會集成不同的(de)     無線通(tōng)信協議(yì)模塊,比如:把 ZigBeeBLE紅外等功能,集成在一個(gè)網關中,這(zhè)樣的(de)話(huà),不同通(tōng)信方式的(de)設備就可(kě)以在一個(gè)系統中共存了(le)。

image.png

此時(shí),網關就要做(zuò)更多(duō)的(de)工作:

  1. 上行鏈路(連接到雲平台):需要做(zuò)到協議(yì)的(de)統一,也(yě)就是說雲平台才不關系下(xià)面到底是什(shén)麽樣的(de)無線通(tōng)信技術,雲平台隻會以統一的(de)數據格式來(lái)表示每個(gè)設備;

  2. 下(xià)行鏈路(連接到設備):協議(yì)轉換,把雲平台發來(lái)的(de)統一的(de)數據格式,轉換成不同的(de)無線通(tōng)信協議(yì)特有的(de)數據格式;

設備的(de)開發工作就相對(duì)純粹一點了(le),它隻需要處理(lǐ)某一種無線協議(yì)即可(kě)。

這(zhè)一類設備的(de)開發,一般都是使用(yòng)相應的(de)通(tōng)信模組,底層的(de)協議(yì)棧都是提供好的(de)。

開發者需要做(zuò)的(de)工作主要就是熟悉應用(yòng)層的(de)通(tōng)信協議(yì),完成指令的(de)解析和(hé)數據上報工作。

3. WiFi 類設備

image.png

這(zhè)一類産品最常見的(de)就是各種品牌的(de)網絡攝像頭(IPCamera),比如:小米、360、螢石等等。

攝像頭如果作爲一個(gè)單品來(lái)使用(yòng),隻要把家中的(de) WiFi SSID 和(hé) 密碼配置到攝像頭中,就可(kě)以使用(yòng)官方的(de) APP 來(lái)遠(yuǎn)程查看實時(shí)畫(huà)面了(le)。

如果把攝像頭集成在一個(gè)智能家居的(de)系統中,就需要二次開發。

攝像頭廠家一般都會提供 SDK,作爲開發者需要做(zuò)的(de)事情就是:調用(yòng) SDK 中的(de) API 函數,獲取實時(shí)畫(huà)面、發送指令控制攝像頭雲台轉動。

這(zhè)裏有一個(gè)底層的(de)技術很有意思:P2P 網絡穿透

我們買來(lái)一個(gè)網絡攝像機,是不可(kě)能有一個(gè)獨立的(de) IP 地址的(de)。也(yě)就是說:其他(tā)設備(手機)是沒辦法通(tōng)過 IP:PORT 的(de)編程方式,直接連接到攝像頭的(de)。

但是爲了(le)實時(shí)畫(huà)面的(de)傳輸質量,爲了(le)減輕服務器的(de)轉發壓力,手機最好可(kě)以直接與攝像頭建立 TCP 通(tōng)信。

此時(shí),P2P 網絡穿透給這(zhè)種需求提供了(le)可(kě)能。

在早期的(de)時(shí)候,深圳有大(dà)批的(de)攝像頭廠商使用(yòng)的(de)都是 TUTK 這(zhè)家公司的(de) P2P 網絡穿透服務。

image.png

在 P2P Master(就是一台服務器)的(de)協助下(xià),實現移動端與攝像頭之間的(de)網絡穿透,直接建立 TCP 連接。

物(wù)聯網平台開發

物(wù)聯網平台,作爲連接業務應用(yòng)和(hé)設備的(de)中間層,屏蔽了(le)各種複雜(zá)的(de)設備接口,實現設備的(de)快(kuài)速接入。

目前,做(zuò)的(de)比較大(dà)的(de)就是那麽幾家巨頭:亞馬遜的(de) AWS 平台,阿裏雲、騰訊、華爲的(de)物(wù)聯網平台。

以上這(zhè)幾家的(de)物(wù)聯網平台,僅僅是他(tā)們的(de)雲平台中的(de)一個(gè)組成部分(fēn)。

它們的(de)目标就是提供一個(gè)通(tōng)用(yòng)的(de)通(tōng)信标準和(hé) SDK,快(kuài)速的(de)接入各種硬件設備,通(tōng)過設備接入數量、通(tōng)信數據的(de)流量,以及提供各種業務層的(de)服務來(lái)賺錢。

另外,還(hái)有一些下(xià)一梯隊的(de)公司,開發了(le)自己的(de)、專門針對(duì)物(wù)聯網領域的(de)平台。由于知名度不高(gāo),隻能以合作開發項目的(de)形式來(lái)吸引硬件設備的(de)接入。

從開發的(de)角度來(lái)看,物(wù)聯網平台的(de)開發技術棧主要是後台開發。由于這(zhè)部分(fēn)技術棧我不太熟悉,就不去深入討(tǎo)論了(le)。

物(wù)聯網平台最寶貴的(de)就是數據,如何利用(yòng)這(zhè)些數據,這(zhè)就是業務應用(yòng)的(de)事情了(le)。

業務應用(yòng)開發

image.png

所謂的(de)業務應用(yòng),簡單來(lái)說,就是通(tōng)過調用(yòng)物(wù)聯網平台提供的(de) API,實現設備管理(lǐ)、數據上報、命令下(xià)發等業務場(chǎng)景。

設備管理(lǐ)是在設備接入基礎上,提供了(le)更豐富完備的(de)設備管理(lǐ)能力,簡化(huà)海量設備管理(lǐ)複雜(zá)性,提升管理(lǐ)效率。

從物(wù)聯網平台的(de)設備和(hé)數據中,可(kě)以衍生出各種不同的(de)業務應用(yòng)場(chǎng)景,這(zhè)就要根據實際的(de)系統功能來(lái)進行按需開發了(le)。

比如:智慧城(chéng)市、智慧照(zhào)明(míng)、智慧工業、車聯網等行業應用(yòng)。

涉及到的(de)技術棧是:前端和(hé)後端開發。