精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā):基于MQTT消息總線的設(shè)計(jì)過程之一

物聯(lián)網(wǎng) 物聯(lián)網(wǎng)應(yīng)用
這篇文章討論的內(nèi)容還談不上架構(gòu)設(shè)計(jì),僅僅是一個(gè)簡單的物聯(lián)網(wǎng)網(wǎng)關(guān)內(nèi)部各功能模塊的通信模型。如果你有機(jī)會設(shè)計(jì)類似的產(chǎn)品,不妨嘗試一下這樣的通信模型,當(dāng)然你一定會設(shè)計(jì)的更好!
  • 一、前言
  • 二、網(wǎng)關(guān)的作用
  • 三、網(wǎng)關(guān)內(nèi)部進(jìn)程之間的通信
  • 四、網(wǎng)關(guān)與云平臺之間的通信
  • 五、總結(jié)

 一、前言

在上一篇中,我們聊了在一個(gè)嵌入式系統(tǒng)中,如何利用MQTT消息總線在各進(jìn)程之間進(jìn)行通信。

這樣的通信模型,我之前已經(jīng)在多個(gè)項(xiàng)目中應(yīng)用過,對于非工控產(chǎn)品來說,通信速度完全足夠。我以前做過測試,在x86平臺和ARM平臺,一條數(shù)據(jù)從本地到云端繞一下,然后再回到本地,可以控制在毫秒級別。

上篇文章只是簡單的介紹了這樣的一種設(shè)計(jì)思路,并沒有詳細(xì)的討論其中的一些細(xì)節(jié)問題。這一次,我們就來具體的聊一聊物聯(lián)網(wǎng)系統(tǒng)中的網(wǎng)關(guān)內(nèi)部程序應(yīng)該如何設(shè)計(jì)。

閱讀這篇文章,你可以有如下收獲:

  1. 物聯(lián)網(wǎng)系統(tǒng)中,設(shè)備之間是如何通信的;
  2. 網(wǎng)關(guān)中的進(jìn)程之間消息總線通信模型;
  3. 網(wǎng)關(guān)內(nèi)部消息總線上的數(shù)據(jù)如何與服務(wù)器進(jìn)行通信;
  4. 作為消遣,了解一下物聯(lián)網(wǎng)系統(tǒng)中的一些基本知識;

二、網(wǎng)關(guān)的作用

物聯(lián)網(wǎng)這個(gè)詞語的范疇太廣,似乎所有的硬件設(shè)備,只要能夠接入網(wǎng)絡(luò),就可以稱之為物聯(lián)網(wǎng)產(chǎn)品,似乎物聯(lián)網(wǎng)這個(gè)詞可以把一切都納入到其中。

這么空洞的詞語不利于我們的講解,因此我們就用一個(gè)可以感知、想象的場景來代替,那就是智能家居系統(tǒng),這是最能代表物聯(lián)網(wǎng)時(shí)代的典型產(chǎn)品了。

2.1 指令轉(zhuǎn)發(fā)

在一個(gè)智能家居系統(tǒng)中,假設(shè)有這么幾個(gè)設(shè)備:

這些設(shè)備的通信模塊,如果是 WiFi 或者是藍(lán)牙,那么一般都可以直接通過手機(jī)來控制(當(dāng)然,需要廠家提供相應(yīng)的手機(jī) APP),手機(jī)就相當(dāng)于一個(gè)中心節(jié)點(diǎn),控制著所有的設(shè)備。

目前市面上的一些智能設(shè)備單品都是這樣的通信方式,例如:空調(diào)、吸塵器、空氣凈化器、冰箱等等。只要在這些設(shè)備中加一個(gè)無線通信模塊即可(例如:ESP8266模塊)。

如果通信模塊是其它的通信模塊,例如:RF433、ZigBee、ZWave等,由于手機(jī)沒有這些通信模塊,因此就需要一個(gè)網(wǎng)關(guān)來“轉(zhuǎn)發(fā)”指令。

手機(jī)和網(wǎng)關(guān)都連接到家中的路由器,處于同一個(gè)局域網(wǎng)中,手機(jī)把控制指令發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)再把指令轉(zhuǎn)發(fā)給相應(yīng)的設(shè)備。通信模型如下:

2.2 外網(wǎng)通信

在上面的通信模型中,手機(jī)和網(wǎng)關(guān)由于處于同一個(gè)局域網(wǎng)中,因此可以直接通信。如果手機(jī)不在局域網(wǎng)中呢?那么就要通過云端的服務(wù)器來轉(zhuǎn)發(fā)了,通信模型如下:

  1. 手機(jī)把指令發(fā)到服務(wù)器;
  2. 服務(wù)器把指令轉(zhuǎn)發(fā)給網(wǎng)關(guān);
  3. 網(wǎng)關(guān)把指令發(fā)給指定的設(shè)備;

以上描述的是控制指令的流程,如果是設(shè)備發(fā)出的報(bào)警信息呢,數(shù)據(jù)的流向就是反向進(jìn)行的。

可以看出,網(wǎng)關(guān)是所有設(shè)備之間通信的中心節(jié)點(diǎn),也是內(nèi)網(wǎng)與外網(wǎng)之間通信的中轉(zhuǎn)節(jié)點(diǎn),也就是把各種智能設(shè)備連接到互聯(lián)網(wǎng)的中轉(zhuǎn)器。

2.3 協(xié)議轉(zhuǎn)換

上面已經(jīng)提到,硬件設(shè)備上的通信模塊都是確定的(RF,ZigBee,ZWave等等),一般來說,可以把這些通信模塊稱呼為無線通信協(xié)議。在一套智能家居系統(tǒng)中,所有設(shè)備的無線通信協(xié)議大部分都是相同的。

那么,不同類型的無線通信協(xié)議設(shè)備是否可以共存在同一個(gè)系統(tǒng)中呢?

答案是:可以。只要在網(wǎng)關(guān)中,集成了相應(yīng)的無線通信協(xié)議模塊就可以達(dá)到這個(gè)目的!如下圖所示:

從手機(jī)APP上看,所有的設(shè)備都是相同的,不會關(guān)心設(shè)備的無線通信協(xié)議是什么,因此,發(fā)出的控制指令都是協(xié)議無關(guān)的。

當(dāng)網(wǎng)關(guān)接收到控制指令時(shí),首先根據(jù)指令內(nèi)容查找出目標(biāo)設(shè)備,然后確定目標(biāo)設(shè)備的無線通信協(xié)議,最后把指令發(fā)送給對應(yīng)的硬件通信模塊,由該通信模塊通過無線電信號把控制指令發(fā)送到設(shè)備。

從這個(gè)指令的傳輸過程來看,網(wǎng)關(guān)就充當(dāng)著協(xié)議轉(zhuǎn)換的角色。

另外還有一種通信場景:當(dāng)系統(tǒng)中的一個(gè)“輸入”設(shè)備與一個(gè)“輸出”設(shè)備進(jìn)行綁定/關(guān)聯(lián)時(shí),例如:

  1. 紅外感應(yīng)器與聲光報(bào)警器綁定:當(dāng)紅外感應(yīng)器監(jiān)測到人體時(shí),發(fā)出信號,然后控制聲光報(bào)警器發(fā)出報(bào)警;
  2. 門磁與燈綁定:當(dāng)開門時(shí),門磁發(fā)出信號,自動打開燈光;

如果“輸入”設(shè)備與“輸出”設(shè)備是不同類型的無線通信協(xié)議,也需要網(wǎng)關(guān)來進(jìn)行協(xié)議轉(zhuǎn)換。

2.4 設(shè)備管理

在一個(gè)智能家居系統(tǒng)中,設(shè)備可多可少,對這些設(shè)備進(jìn)行管理也是很重要的事情。網(wǎng)關(guān)作為系統(tǒng)的中心節(jié)點(diǎn),對設(shè)備進(jìn)行管理的重任理所當(dāng)然就由網(wǎng)關(guān)來承擔(dān)。

設(shè)備管理功能包括:

設(shè)備的添加和刪除;

設(shè)備狀態(tài)的管理(電量、設(shè)備斷網(wǎng)、失聯(lián)等等);設(shè)備樹的管理;

2.5 邊沿計(jì)算(自動化控制)

在正常的情況下,網(wǎng)關(guān)是可以通過路由器,與服務(wù)器保持著長連接的。如果服務(wù)器的處理能力比較強(qiáng)大,智能家居系統(tǒng)中所有需要處理的事情都可以丟給服務(wù)器來計(jì)算、處理,服務(wù)器在計(jì)算之后把處理結(jié)果再發(fā)送給網(wǎng)關(guān)??雌饋硐敕ê芡昝?

但是,考慮下面這 2 種情況:

  1. 路由器出現(xiàn)問題了,網(wǎng)關(guān)無法連接到服務(wù)器,因此就無法把本地?cái)?shù)據(jù)及時(shí)上報(bào);
  2. 系統(tǒng)中出現(xiàn)了異常情況,需要緊急處理,如果把信息上報(bào)到服務(wù)器,由服務(wù)器計(jì)算之后再回傳給網(wǎng)關(guān),耗費(fèi)的時(shí)間可能超過了可容忍時(shí)間,該如何處理?(可以用車聯(lián)網(wǎng)系統(tǒng)來腦補(bǔ)一下這個(gè)場景:自動駕駛中的汽車遇到緊急情況,如果把所有信息上傳給服務(wù)器,然后等待服務(wù)器的下一步指令?)

對于上面的這些場景,把一些計(jì)算、處理操作放在網(wǎng)關(guān)這一端來處理也許更合適!這也是近幾年比較流行的邊沿計(jì)算。

1. 邊緣計(jì)算,是指在靠近物或數(shù)據(jù)源頭的一側(cè),采用網(wǎng)絡(luò)、計(jì)算、存儲、應(yīng)用核心能力為一體的開放平臺,就近提供最近端服務(wù)。

2. 其應(yīng)用程序在邊緣側(cè)發(fā)起,產(chǎn)生更快的網(wǎng)絡(luò)服務(wù)響應(yīng),滿足行業(yè)在實(shí)時(shí)業(yè)務(wù)、應(yīng)用智能、安全與隱私保護(hù)等方面的基本需求。

3. 邊緣計(jì)算處于物理實(shí)體和工業(yè)連接之間,或處于物理實(shí)體的頂端。而云端計(jì)算,仍然可以訪問邊緣計(jì)算的歷史數(shù)據(jù)

三、網(wǎng)關(guān)內(nèi)部進(jìn)程之間的通信

在設(shè)計(jì)一個(gè)應(yīng)用程序的架構(gòu)時(shí),可以通過多線程來實(shí)現(xiàn),也可以通過多進(jìn)程來實(shí)現(xiàn),每個(gè)人的習(xí)慣都不一樣,各有各的好處。我們這里不去討論孰優(yōu)孰劣,因?yàn)槲覍Χ噙M(jìn)程這樣的設(shè)計(jì)思想比較偏愛,所以就直接按照多進(jìn)程的程序架構(gòu)來討論。

3.1 網(wǎng)關(guān)中需要哪些進(jìn)程

網(wǎng)關(guān)中需要執(zhí)行的所有進(jìn)程,是根據(jù)網(wǎng)關(guān)的功能來決定的,假設(shè)包括如下的功能:

(1)連接外網(wǎng)的進(jìn)程 Proc_Bridge

網(wǎng)關(guān)需要連接到云端的服務(wù)器,需要一個(gè)進(jìn)程與服務(wù)器之間保持長連接,這樣就可以及時(shí)接收到服務(wù)器發(fā)來的控制指令,以及把系統(tǒng)內(nèi)部數(shù)據(jù)及時(shí)上報(bào)給服務(wù)器。

這個(gè)進(jìn)程需要把從服務(wù)器接收到的指令轉(zhuǎn)發(fā)到網(wǎng)關(guān)系統(tǒng)內(nèi)部,把從系統(tǒng)內(nèi)部接收到的信息轉(zhuǎn)發(fā)給服務(wù)器,類似于橋接的功能,因此命名為 Proc_Bridge。

(2)設(shè)備管理進(jìn)程 Proc_DevMgr

這個(gè)進(jìn)程用來執(zhí)行設(shè)備管理功能,設(shè)備的添加(入網(wǎng))、刪除(退網(wǎng)),都由此進(jìn)程來管理。

(3)協(xié)議轉(zhuǎn)換進(jìn)程 Proc_Protocol

下行:把應(yīng)用層的統(tǒng)一通信協(xié)議,轉(zhuǎn)換成不同類型無線通信協(xié)議,發(fā)送給相應(yīng)的無線模塊。

上行:把設(shè)備上報(bào)的、不同類型的無線通信協(xié)議,轉(zhuǎn)換成應(yīng)用層的統(tǒng)一通信協(xié)議。

(4)邊沿計(jì)算進(jìn)程(自動化控制) Proc_Auto

很明顯,這需要一個(gè)獨(dú)立的進(jìn)程來處理各種計(jì)算,這個(gè)進(jìn)程就相當(dāng)于系統(tǒng)的大腦。

(5)無線通信協(xié)議相關(guān)的進(jìn)程 Proc_ZigBee, Proc_RF, Proc_ZWave

在硬件上,每一種無線通信模塊通過串口或其他硬件連接方式與到網(wǎng)關(guān)的 CPU 進(jìn)行通信,因此,每一種無線通信模塊都需要一個(gè)相應(yīng)的進(jìn)程來處理。

(6)其他“軟設(shè)備”進(jìn)程 Proc_Xxx

在之前的項(xiàng)目中,還遇到一些硬件設(shè)備,它們與門磁、插座等設(shè)備在邏輯上處于同一個(gè)層次,但是與網(wǎng)關(guān)之間是通過 TCP 來連接。對于這樣的設(shè)備,也可以使用一個(gè)獨(dú)立的進(jìn)程來進(jìn)行管理。

上面的這些進(jìn)程,在網(wǎng)關(guān)中的運(yùn)行模型如下:

3.2 MQTT消息總線

以上這些進(jìn)程之間需要相互通信,不是簡單的點(diǎn)對點(diǎn)通信,而是一個(gè)網(wǎng)狀的通信模型。比如:

設(shè)備管理進(jìn)程 Proc_DevMgr:當(dāng)任何一種設(shè)備被添加到系統(tǒng)中時(shí),都需要處進(jìn)行處理,因此它需要與 Proc_ZigBee, Proc_RF, Proc_ZWave 這些進(jìn)程進(jìn)行通信;

當(dāng)某個(gè)設(shè)備上報(bào)數(shù)據(jù)時(shí)(例如:Proc_ZigBee),Proc_Protocol 進(jìn)程需要把數(shù)據(jù)進(jìn)行協(xié)議轉(zhuǎn)換,然后 Proc_Bridge 進(jìn)程把轉(zhuǎn)換后的數(shù)據(jù)上報(bào)給服務(wù)器,同時(shí) Proc_Auto 進(jìn)程需要檢查這個(gè)設(shè)備上報(bào)的數(shù)據(jù)是否觸發(fā)了其他相關(guān)聯(lián)的設(shè)備;

也就是說,這些進(jìn)程中間的通信是相互交叉的,如果通過傳統(tǒng)的 IPC 方式(共享內(nèi)存、命名管道、消息隊(duì)列、Socket)等,處理起來比較復(fù)雜。

引入了 MQTT 消息總線之后,每個(gè)進(jìn)程只需要掛載到總線上。每個(gè)進(jìn)程只需要監(jiān)聽自己感興趣的 topic,就可以接收到相應(yīng)的數(shù)據(jù)。

既然這些進(jìn)程之間的通信關(guān)系比較復(fù)雜,那么一個(gè)良好的 topic 設(shè)計(jì)規(guī)范就顯得很重要了!

3.3 Topic 的設(shè)計(jì)

MQTT 的通信模型是基于訂閱/發(fā)布的模式,一個(gè)客戶端(進(jìn)程)接入到消息總線之后,需要注冊自己感興趣的 主題 topic,其他客戶端(進(jìn)程)往這個(gè) topic 發(fā)送消息,即可被訂閱者接收到。

主題 topic 是一個(gè)以反斜線(/)分割的字符串,用來表示多層的分級結(jié)構(gòu),例如下面的這 2 個(gè) topic,是亞馬遜 AWS 平臺中在線升級(OTA)相關(guān)的 topic:

  1. $aws/things/MyThing/jobs/get/accepted 
  2.  
  3. $aws/things/MyThing/jobs/get/rejected 

在我們的示例場景中,可以按照下面這樣來設(shè)計(jì)主題 topic:

(1) Proc_DevMgr

訂閱主題:

  1. $iot/v1/ZigBee/Register   
  2. $iot/v1/ZigBee/UnRegister   
  3. $iot/v1/RF/Register   
  4. $iot/v1/RF/UnRegister   
  5. $iot/v1/ZWave/Register   
  6. $iot/v1/ZWave/UnRegister  

(2) Proc_Bridge

訂閱主題:

  1. $iot/v1/Device/Report 

發(fā)出數(shù)據(jù)的主題:

  1. $iot/v1/Device/Control   
  2. $iot/v1/Device/Remove   
  3. $iot/v1/Auto/AddRule   
  4. $iot/v1/Auto/RemoveRule  

(3) Proc_Protocol

訂閱主題:

  1. $iot/v1/Device/Control   
  2. $iot/v1/Device/Remove   
  3. $iot/v1/ZigBee/Report   
  4. $iot/v1/RF/Report   
  5. $iot/v1/ZWave/Report   

發(fā)送數(shù)據(jù)主題:

  1. $iot/v1/Device/Report   
  2. $iot/v1/ZigBee/Control   
  3. $iot/v1/ZigBee/Remove   
  4. $iot/v1/RF/Control   
  5. $iot/v1/RF/Remove   
  6. $iot/v1/ZWave/Control   
  7. $iot/v1/ZWave/Remove   

(4) Proc_Auto

訂閱主題:

  1. $iot/v1/Auto/AddRule   
  2. $iot/v1/Auto/RemoveRule   
  3. $iot/v1/Device/Report   

發(fā)送數(shù)據(jù)主題:

  1. $iot/v1/Device/Control 

(5) Proc_ZigBee

訂閱主題:

  1. $iot/v1/ZigBee/Control   
  2. $iot/v1/ZigBee/Remove   

發(fā)送數(shù)據(jù)主題:

  1. $iot/v1/ZigBee/Register   
  2. $iot/v1/ZigBee/UnRegister   
  3. $iot/v1/ZigBee/Report   

(6) Proc_RF

訂閱主題:

  1. $iot/v1/RF/Control   
  2. $iot/v1/RF/Remove  

發(fā)送數(shù)據(jù)主題:

  1. $iot/v1/RF/Register   
  2. $iot/v1/RF/UnRegister   
  3. $iot/v1/RF/Report   

(7) Proc_ZWave

訂閱主題:

  1. $iot/v1/ZWave/Control   
  2. $iot/v1/ZWave/Remove   

發(fā)送數(shù)據(jù)主題:

  1. $iot/v1/ZWave/Register   
  2. $iot/v1/ZWave/UnRegister   
  3. $iot/v1/ZWave/Report   

以上這些主題 topic 的設(shè)計(jì),還是有些粗略的。如果借助通配符(#, +, $),可以設(shè)計(jì)出更靈活的層次結(jié)構(gòu)。

  1. 多層通配符: “#”是用于匹配主題中任意層級的通配符,多層通配符表示它的父級和任意數(shù)量的子層級。
  2. 單層通配符:“+”加號是只能用于單個(gè)主題層級匹配的通配符,在主題過濾器的任意層級都可以使用單層通配符,包括第一個(gè)和最后一個(gè)層級。
  3. 通配符:“$”表示匹配一個(gè)字符,只要不是放在主題的最開頭,其它情況下都表示匹配一個(gè)字符。

我們以一個(gè)控制指令為例,來梳理一下數(shù)據(jù)是如何通過 topic 進(jìn)行流動:

  1. Proc_Bridge 進(jìn)程從服務(wù)器接收到控制指令后,發(fā)送到消息總線上的 topic: $iot/v1/Device/Control。
  2. 由于 Proc_Protocol 進(jìn)程訂閱了這個(gè) topic,所以立刻接收到指令。
  3. Proc_Protocol 分析指令內(nèi)容,發(fā)現(xiàn)是一個(gè) ZigBee 設(shè)備,于是進(jìn)行協(xié)議轉(zhuǎn)換,發(fā)送一個(gè) ZigBee 控制指令到消息總線上的 topic: $iot/v1/ZigBee/Control。
  4. 由于 Proc_ZigBee 進(jìn)程訂閱了這個(gè) topic,因此它接收到這個(gè)控制指令。
  5. Proc_ZigBee 把控制指令轉(zhuǎn)換成 ZigBee 無線通信模塊要求的格式,通過硬件發(fā)送給設(shè)備燈泡。

我們再分析一下設(shè)備數(shù)據(jù)上報(bào)的場景:

先關(guān)注圖中紅色箭頭,忽略藍(lán)色箭頭:

  1. 門磁打開后,通過無線通信把信息上報(bào)給進(jìn)程 Proc_CF。
  2. Proc_RF 進(jìn)程接收到 RF433 通信模塊上報(bào)的數(shù)據(jù),把“門磁打開”這個(gè)信息發(fā)送到消息總線上的 topic:$iot/v1/RF/Report。
  3. 由于 Proc_Protocol 進(jìn)程訂閱了這個(gè) topic,因此接收到上報(bào)的門磁數(shù)據(jù)。
  4. Proc_Protocol 分析數(shù)據(jù),把 RF433 協(xié)議的數(shù)據(jù)轉(zhuǎn)成統(tǒng)一的應(yīng)用層協(xié)議的數(shù)據(jù),發(fā)送到消息總線上的 topic:$iot/v1/Device/Report。
  5. 由于 Proc_Bridge 進(jìn)程訂閱了這個(gè) topic,因此就接收到了這次上報(bào)的數(shù)據(jù)。
  6. Proc_Bridge 進(jìn)程把數(shù)據(jù)上報(bào)給服務(wù)器。

再來看一下藍(lán)色箭頭流程:

在上面的第 4 步:Proc_Protocol 進(jìn)程把 RF433 協(xié)議數(shù)據(jù)轉(zhuǎn)成應(yīng)用層統(tǒng)一協(xié)議之后,把數(shù)據(jù)發(fā)送到消息總線上的 topic:$iot/v1/Device/Report 之后,Proc_Auto 進(jìn)程同時(shí)進(jìn)行如下操作:

5.由于 Proc_Auto 也訂閱了這個(gè) topic,因此它也接收到了門磁上報(bào)的這個(gè)應(yīng)用層協(xié)議的數(shù)據(jù)。

6.Proc_Auto 查找自己的配置信息(假設(shè)用戶已經(jīng)提前配置好了一條規(guī)則:當(dāng)門磁打開的時(shí)候,就觸發(fā)聲光報(bào)警器),發(fā)現(xiàn)匹配到了“門磁->報(bào)警器”這條規(guī)則,于是發(fā)出一條控制報(bào)警器的指令,發(fā)送到消息總線上的 topic: $iot/v1/Device/Control。

后面的 7,8,9,10 這四個(gè)步驟就與上面的控制指令流程完全一樣了。

3.4 與 DBUS 總線的對比

從上面描述的 3 個(gè)數(shù)據(jù)流向的場景中,是不是感覺到使用 topic 為“數(shù)據(jù)管道”的這種通信方式,與 Linux 系統(tǒng)中的 DBUS 總線特別的相似?

DBUS 總線也是用于進(jìn)程之間的通信,按照我個(gè)人的理解,DBUS中其實(shí)是把進(jìn)程之間的兩種通信組織在一起了:

  • 基于信號的數(shù)據(jù)傳輸;
  • 基于方法的 RPC 遠(yuǎn)程調(diào)用;

DBUS 總線包含的概念更復(fù)雜一些,包括:路徑、對象、接口、方法等等,這些概念組織在一起共同定位到一個(gè)具體的服務(wù)提供者了。

相比較而言,我感覺 MQTT 這樣的方式更簡潔一些。

所謂的 RPC 遠(yuǎn)程調(diào)用,就是調(diào)用位于遠(yuǎn)程機(jī)器上的一個(gè)函數(shù),主要解決兩個(gè)問題:

  1. 網(wǎng)絡(luò)連接;
  2. 數(shù)據(jù)的序列化和反序列化;

后面我會專門寫一篇文章,利用 protobuf 框架來實(shí)現(xiàn) RPC 調(diào)用。

四、網(wǎng)關(guān)與云平臺之間的通信

上面講解的設(shè)計(jì)過程,是網(wǎng)關(guān)內(nèi)部的各功能模塊之間通信方式,這也是我們作為嵌入式開發(fā)者能充分發(fā)揮的部分。

網(wǎng)關(guān)與云平臺之間的通信方式一般都是客戶指定的,就那么幾種(阿里云、華為云、騰訊云、亞馬遜AWS平臺)。一般都要求網(wǎng)關(guān)與云平臺之間處于長連接的狀態(tài),這樣云端的各種指令就可以隨時(shí)發(fā)送到網(wǎng)關(guān)。

當(dāng)然了,這些云平臺都會提供相應(yīng)的 SDK 開發(fā)包,一般使用的 MQTT 協(xié)議來連接云平臺更多一些。在一些文檔中,會把位于云端的 MQTT 服務(wù)器稱作 Broker,其實(shí)就是一個(gè)服務(wù)器。

進(jìn)程 Proc_Bridge 的功能主要有 2 點(diǎn):

  1. 與云平臺的數(shù)據(jù)傳輸通道;
  2. 協(xié)議轉(zhuǎn)換:把云平臺相關(guān)的協(xié)議轉(zhuǎn)換成網(wǎng)關(guān)內(nèi)部的協(xié)議,以及相反的轉(zhuǎn)換。

也就是說:Proc_Bridge 進(jìn)程需要同時(shí)連接到云平臺的 MQTT Broker 和網(wǎng)關(guān)內(nèi)部的 MQTT 消息總線。在下一篇文章中,我們來專門講解這部分的內(nèi)容,并提供一個(gè)實(shí)現(xiàn)橋接功能的代碼模板。

五、總結(jié)

作為一名嵌入式軟件開發(fā)人員,僅僅根據(jù)別人設(shè)計(jì)好的框架來填充代碼,時(shí)間久了就會有些倦怠,不知道技術(shù)提升的方向在哪里。仔細(xì)想想,其實(shí)方向挺多的:Linux 內(nèi)核、文件系統(tǒng)、算法、應(yīng)用程序設(shè)計(jì)等等。

這篇文章討論的內(nèi)容還談不上架構(gòu)設(shè)計(jì),僅僅是一個(gè)簡單的物聯(lián)網(wǎng)網(wǎng)關(guān)內(nèi)部各功能模塊的通信模型。如果你有機(jī)會設(shè)計(jì)類似的產(chǎn)品,不妨嘗試一下這樣的通信模型,當(dāng)然你一定會設(shè)計(jì)的更好!

本文轉(zhuǎn)載自微信公眾號「IOT物聯(lián)網(wǎng)小鎮(zhèn)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系IOT物聯(lián)網(wǎng)小鎮(zhèn)公眾號。

 

責(zé)任編輯:武曉燕 來源: IOT物聯(lián)網(wǎng)小鎮(zhèn)
相關(guān)推薦

2021-02-24 08:20:33

MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā)物聯(lián)網(wǎng)

2019-12-27 10:42:45

HTTPMQTT物聯(lián)網(wǎng)

2021-09-07 05:52:26

物聯(lián)網(wǎng)網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2023-01-31 15:35:46

物聯(lián)網(wǎng)邊緣計(jì)算工業(yè)物聯(lián)網(wǎng)

2022-01-08 21:49:00

物聯(lián)網(wǎng)網(wǎng)關(guān)PLC物聯(lián)網(wǎng)

2020-07-08 07:36:40

物聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2023-09-18 15:36:37

物聯(lián)網(wǎng)物聯(lián)網(wǎng)生態(tài)系統(tǒng)

2020-10-31 21:40:35

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2020-10-11 17:01:18

物聯(lián)網(wǎng)網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2022-11-02 10:59:34

2020-07-12 15:18:38

物聯(lián)網(wǎng)傳感器技術(shù)

2020-11-23 08:13:27

物聯(lián)網(wǎng)

2019-11-28 14:11:00

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2014-10-29 10:33:46

物聯(lián)網(wǎng)

2021-12-02 18:18:21

消費(fèi)網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)

2023-09-19 16:10:28

2023-10-20 13:43:16

2019-09-10 13:39:38

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2021-01-12 09:51:43

工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)

2021-03-16 16:07:37

物聯(lián)網(wǎng)藍(lán)牙連接IoT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

懂色av一区二区| 精品麻豆一区二区三区| 欧美亚洲免费| 社区色欧美激情 | 日韩精品――色哟哟| 波多野在线观看| 久久伊人蜜桃av一区二区| 国产精品视频久久久| 久久久久久久久久一区二区三区| 日本午夜精品| 欧美精品久久99| 人妻激情另类乱人伦人妻| 欧洲亚洲在线| 国产一区二区女| 欧美一级大片在线观看| 午夜黄色福利视频| 人妖一区二区三区| 日韩一区二区免费视频| 无遮挡又爽又刺激的视频| 黄色成人在线| 欧美高清在线一区二区| 国产伦精品一区二区三区四区视频 | 国产高清www| 日本视频在线| 91亚洲永久精品| 91久久极品少妇xxxxⅹ软件 | 欧美日韩国产系列| 欧美性大战久久久久xxx| 国产原厂视频在线观看| 国产午夜久久久久| 精品久久久久亚洲| 午夜精品久久久久久久爽| 日韩成人伦理电影在线观看| 97精品视频在线| 青青草原国产视频| 国产精品毛片一区二区在线看| 国产视频精品一区二区三区| 国偷自产av一区二区三区麻豆| 日韩三级一区| 欧美三区在线视频| 日本成人中文字幕在线| 这里有精品可以观看| 午夜精品影院在线观看| 国产精品自拍合集| 视频在线这里都是精品| 亚洲欧美国产三级| 国产日韩视频在线播放| 亚洲麻豆精品| 国产精品高清亚洲| 亚洲最新在线| 欧美18hd| 亚洲视频中文字幕| 午夜在线视频免费观看| 麻豆网站在线免费观看| 国产精品久久久久久久久快鸭 | 一区在线视频观看| 久久久久久久网站| 精品小视频在线观看| 国内在线观看一区二区三区| 欧美老女人性生活| 精国产品一区二区三区a片| 亚洲精品在线观看91| 久久久精品国产| 粉嫩av性色av蜜臀av网站| 国产精品伦理久久久久久| 久久综合网hezyo| 国产免费无码一区二区视频| 亚洲精品成人无限看| 久久艹在线视频| 免费日韩在线视频| 精品不卡视频| 欧美亚洲在线观看| 99成人精品视频| 久久精品72免费观看| 91久久嫩草影院一区二区| 国产精品无码久久av| 国产精品综合网| 99国产视频| 五月天激情开心网| 国产精品色婷婷久久58| 波多野结衣激情| 国模雨婷捆绑高清在线| 欧美日韩国产精品专区| 天天影视综合色| 国产一区二区三区免费观看在线 | 午夜日韩激情| 91av视频在线免费观看| www.五月婷婷.com| 国产在线国偷精品产拍免费yy| 99re在线播放| 国际av在线| 一区二区三区中文字幕电影 | 日韩av在线资源| 国产一区二区三区精品在线| 亚洲乱码免费伦视频| 韩国精品久久久999| 成人一二三四区| 国产精品正在播放| 日本不卡在线观看| 性爱视频在线播放| 91官网在线观看| 精品伦一区二区三区| 国产伦一区二区三区| 欧美理论片在线观看| 天堂网视频在线| 成人晚上爱看视频| 一区二区av| 亚洲天堂av影院| 91精品欧美一区二区三区综合在| 97香蕉碰碰人妻国产欧美 | 国产高清www| 精品自拍视频| 精品亚洲一区二区三区在线播放| 欧美丰满熟妇bbbbbb| 久久一区中文字幕| 国产精品国产亚洲精品看不卡15 | 中文在线最新版天堂| 丁香桃色午夜亚洲一区二区三区| 五月天色一区| 黄色污网站在线观看| 欧美精品丝袜中出| 欧美18—19性高清hd4k| 在线欧美日韩| 5566av亚洲| 毛片在线不卡| 欧美日韩一区二区三区四区五区 | 91精品国产91久久久久久不卡| 一区二区三区免费观看视频| 久久亚洲精华国产精华液 | 成人一级片免费看| 久久激情一区| 久久免费看av| 成人影院在线视频| 精品国产乱码久久久久久闺蜜 | 日本啊v在线| 亚洲成人免费av| 蜜桃色一区二区三区| 国产精品国产三级国产在线观看| 国产精品看片资源| 美女欧美视频在线观看免费| 欧美日韩精品在线播放| 星空大象在线观看免费播放| 欧美三级不卡| 成人欧美一区二区三区视频| 色在线视频网| 精品国产制服丝袜高跟| 黄色一级免费视频| 高清不卡一区二区在线| www.18av.com| 东京久久高清| 国产91精品久久久久久| 三级在线电影| 在线日韩av片| 九九热免费在线| 青草av.久久免费一区| 神马影院我不卡午夜| 韩日精品一区| 久久久精品亚洲| 亚洲第一页视频| 亚洲r级在线视频| 亚洲观看黄色网| 久久激情视频| 亚洲啪啪av| 日韩精品一区国产| 久久久久久久av| 婷婷色在线观看| 日本丶国产丶欧美色综合| 日韩免费成人av| 久久精品国产亚洲高清剧情介绍 | 波多野结衣福利| 日日夜夜免费精品| 中文字幕免费在线不卡| 亚洲国产视频二区| 91精品国产成人| 国产69久久| 日韩一级黄色大片| 可以在线观看av的网站| 国产女同性恋一区二区| 污色网站在线观看| 欧美日韩p片| 欧美精品亚洲精品| 亚洲影视资源| 97人人做人人爱| 国产对白叫床清晰在线播放| 欧美美女激情18p| 国产第100页| 日本一区二区视频在线观看| 手机精品视频在线| 新67194成人永久网站| 亚洲一二区在线| 国产精品自在线拍| 国产精品三级美女白浆呻吟| 欧美黑人猛交| 在线观看91久久久久久| 性一交一乱一乱一视频| 欧美综合在线视频| 免费在线视频观看| 亚洲国产高清在线观看视频| 久久久久亚洲av无码专区首jn| 久久久噜噜噜| 老司机激情视频| 日韩伦理视频| 国产精品9999久久久久仙踪林| 99久久综合国产精品二区| 久久久亚洲精品视频| 欧美边添边摸边做边爱免费| 亚洲开心激情网| 蜜臀久久99精品久久久| 欧美二区三区的天堂| www.av麻豆| 亚洲欧美激情一区二区| 亚洲一区 欧美| 99精品欧美一区二区三区小说 | 黑鬼大战白妞高潮喷白浆| 亚洲激情五月| 亚洲精品成人a8198a| 日韩有码一区| 国产91aaa| 精品国产亚洲日本| 国产精品网红福利| 亚洲人成午夜免电影费观看| 欧美黑人性视频| 九义人在线观看完整免费版电视剧| 亚洲欧美另类人妖| 污视频网站免费观看| 日韩欧美国产一区二区三区| 亚洲天天综合网| 欧美无乱码久久久免费午夜一区 | 免费欧美日韩| 999在线观看视频| 欧美 日韩 国产 一区| 欧洲成人一区二区| 欧美1区2区3区4区| 国产专区一区二区| 91成人噜噜噜在线播放| 99国产在线观看| 亚洲日本va午夜在线电影| 91色中文字幕| 欧美成年网站| 亚洲自拍av在线| 久久精品免视看国产成人| 国产日韩欧美中文在线播放| 久久久久伊人| 国产精品一区二区三区久久| 成人一级视频| 国产精品免费福利| 日韩国产91| 国产精品久久视频| 91丨精品丨国产| 成人深夜直播免费观看| 99国内精品久久久久| 91人成网站www| 日本免费精品| 国产伦理久久久| 亚洲8888| 日本不卡久久| 天天色天天射综合网| 色爽爽爽爽爽爽爽爽| 欧美精品成人| 午夜免费福利小电影| 免播放器亚洲| 九九热在线免费| 国内外成人在线| 欧美专区第二页| 成人午夜视频免费看| 熟女人妻在线视频| 久久精品男人天堂av| 国产亚洲精品精品精品| 亚洲视频 欧洲视频| 久草视频在线资源站| 欧美日韩亚洲视频| 在线观看视频中文字幕| 欧美一区二区三区成人| 蜜臀av在线观看| 国产一区二区三区毛片| 麻豆视频网站在线观看| 欧美激情精品久久久久久久变态 | 成人在线观看一区| 久久精品99久久香蕉国产色戒| 日本大片在线播放| 欧洲日本亚洲国产区| 色综合.com| 国内精品视频在线播放| 第四色成人网| 久久艹国产精品| 喷水一区二区三区| 折磨小男生性器羞耻的故事| 久久精品视频一区二区| 国产午夜精品理论片在线| 亚瑟在线精品视频| 中文字幕一区二区三区四区视频| 91精品国产综合久久久久久| 天堂资源中文在线| 久久精品视频在线播放| 色综合亚洲图丝熟| 亚洲一区二区三区香蕉| 国内黄色精品| 亚洲理论电影在线观看| 捆绑调教美女网站视频一区| 亚洲一区二区在线免费| 综合婷婷亚洲小说| 久久精品视频5| 日韩午夜激情免费电影| 成人在线免费观看| 97香蕉超级碰碰久久免费软件| 亚洲一区二区av| 欧美久久综合性欧美| 狠狠爱www人成狠狠爱综合网| 99视频在线视频| 91啪九色porn原创视频在线观看| 男人的午夜天堂| 色94色欧美sute亚洲线路一久| 精品人妻一区二区三区浪潮在线 | 蜜臀a∨国产成人精品| 国产麻豆xxxvideo实拍| 亚洲美女偷拍久久| 亚洲一级特黄毛片| 亚洲乱码国产乱码精品精| 久久久123| 亚洲精品免费在线视频| 欧美一区二区三| 少妇人妻互换不带套| av激情亚洲男人天堂| 精品无码免费视频| 欧美一区二区三区爱爱| eeuss影院www在线播放| 国产精品99导航| 在线视频亚洲专区| 欧美日韩一道本| 成人福利电影精品一区二区在线观看| 天天操天天操天天操天天操天天操| 欧美性色欧美a在线播放| 欧美视频综合| 欧美在线视频网站| 秋霞综合在线视频| 99爱视频在线| 久久综合久久综合久久| 日本黄色片视频| 亚洲高清色综合| 国产激情视频在线看| 精品一区二区不卡| 国产精品女主播一区二区三区| 怡红院一区二区| 亚洲va韩国va欧美va精品| 日本成人动漫在线观看| 91国内在线视频| 亚洲精品亚洲人成在线观看| 北条麻妃69av| 久久久久久久久久久久久夜| 婷婷激情五月综合| 中国china体内裑精亚洲片| 国产成人午夜性a一级毛片| 先锋影音一区二区三区| 另类的小说在线视频另类成人小视频在线 | 最近中文在线观看| www.国产精品一二区| 欧美经典一区| 国产精品12345| 久久这里都是精品| 波多野结衣av无码| 色偷偷av亚洲男人的天堂| www.久久99| 日韩国产成人无码av毛片| 99视频一区二区三区| www.久久久久久久| 色99之美女主播在线视频| 国产视频一区二| 无码粉嫩虎白一线天在线观看| aaa国产一区| 波多野结衣在线观看一区| 久久好看免费视频| youjizz亚洲| 日本熟妇人妻xxxxx| 国产精品天干天干在观线| 精品国产一级片| 5278欧美一区二区三区| 日本成人小视频| 香蕉久久久久久av成人| 色综合天天天天做夜夜夜夜做| 天堂资源在线中文| 国产一区二区三区高清| 热久久免费视频| 久久久久久久久久久久久久免费看| 亚洲老头老太hd| 欧美国产亚洲精品| 国产a级一级片| 亚洲欧美二区三区| 欧洲亚洲精品视频| 91久久精品www人人做人人爽| 亚洲看片一区| 极品魔鬼身材女神啪啪精品| 亚洲国产精品va在线看黑人动漫| 日韩在线短视频| 国产乱淫av片杨贵妃| 中文字幕制服丝袜成人av| 亚洲色欧美另类| 99国产高清| 精品制服美女丁香| 久久久久在线视频| 欧美激情视频一区二区|