自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大白話聊物聯(lián)網(wǎng)通信過(guò)程,看不懂算我輸!

物聯(lián)網(wǎng) 物聯(lián)網(wǎng)應(yīng)用
MQTT的服務(wù)器端管理著很多主題(topic),發(fā)布者是指對(duì)某個(gè)主題發(fā)布消息,訂閱者是指訂閱不同的主題。

[[427527]]

大家好,我是程序員小哈,十一假期結(jié)束了,我們繼續(xù)分享嵌入式相關(guān)知識(shí),喜歡的小伙伴,文末點(diǎn)贊,讓我看到哈。

上一篇網(wǎng)文 與OneNET服務(wù)器連接初體驗(yàn) 我們介紹了使用 MQTT.fx 軟件連接上OneNET服務(wù)器。

今天我們來(lái)看一下,MQTT客戶端如何與OneNET服務(wù)器進(jìn)行數(shù)據(jù)通信,發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)他們?nèi)咧g是什么樣的關(guān)系。

OneNET平臺(tái)的主題

MQTT的服務(wù)器端管理著很多主題(topic),發(fā)布者是指對(duì)某個(gè)主題發(fā)布消息,訂閱者是指訂閱不同的主題。

發(fā)布者和訂閱者都屬于客戶端,一個(gè)客戶端既可以是發(fā)布者,也可以是訂閱者。

發(fā)布者針對(duì)某個(gè)主題發(fā)布了一條消息至服務(wù)器,服務(wù)器會(huì)分發(fā)給所有訂閱了該主題的訂閱者。

因此定閱與發(fā)布必須要有主題,主題相當(dāng)于對(duì)發(fā)送給服務(wù)器端的消息進(jìn)行了分類,只有客戶端定閱了某個(gè)主題后,才能收到相應(yīng)主題的payload,才能進(jìn)行通信。

一個(gè)客戶端可以向服務(wù)器訂閱多個(gè)主題。

比如我們分享過(guò)的的綜合實(shí)例:基于ZigBee的智能家居 。

這里阿里云物聯(lián)網(wǎng)平臺(tái)就是MQTT的服務(wù)器(Broker),手機(jī)上的云智能APP和我們做的控制板就屬于客戶端。

手機(jī)控制電燈開關(guān),就是對(duì)設(shè)備屬性進(jìn)行設(shè)置,手機(jī)APP端發(fā)布了一個(gè)控制燈動(dòng)作的消息,控制板訂閱了這個(gè)消息,控制板就能收到服務(wù)器轉(zhuǎn)發(fā)來(lái)的這個(gè)消息,進(jìn)而就能實(shí)現(xiàn)手機(jī)對(duì)控制板的控制。

控制板通過(guò)溫濕度傳感器獲取室內(nèi)的溫濕度信息,控制板通過(guò)發(fā)布帶有溫濕度信息的消息至服務(wù)器,手機(jī)端因?yàn)橛嗛喠舜酥黝}的消息,手機(jī)端也就可以收到此消息了,對(duì)此消息進(jìn)行解析,進(jìn)而顯示到手機(jī)APP中,也就實(shí)現(xiàn)了控制板上的溫濕度數(shù)據(jù)的上傳,這就是對(duì)設(shè)備屬性的上報(bào)。

參考官方的文檔,我們得知OneNET平臺(tái)的主題格式如下:

主題類型 請(qǐng)求topic 響應(yīng)topic
設(shè)備屬性上報(bào) 上行:$sys/{pid}/{device-name}/thing/property/post $sys/{pid}/{device-name}/thing/property/post/reply
設(shè)備屬性設(shè)置 下行:$sys/{pid}/{device-name}/thing/property/set $sys/{pid}/{device-name}/thing/property/set_reply
設(shè)備屬性獲取 下行:$sys/{pid}/{device-name}/thing/property/get $sys/{pid}/{device-name}/thing/property/get_reply
設(shè)備事件上報(bào) 上行:$sys/{pid}/{device-name}/thing/event/post $sys/{pid}/{device-name}/thing/event/post/reply

其中, {pid} 由產(chǎn)品ID替換,我們上文創(chuàng)建的產(chǎn)品ID為:hg8zt6E3LP。{device-name} 設(shè)備名稱為:XiaoHaLED 。

下面我們使用 MQTT.fx 軟件充當(dāng)客戶端,與OneNET服務(wù)器進(jìn)行通信,我們看看如何發(fā)布和訂閱消息。

發(fā)布消息

MQTT傳輸?shù)南⒎譃椋褐黝}(topic--區(qū)分不同消息)和負(fù)載(payload--消息內(nèi)容)兩部分。

通過(guò)上面我們知道,如果設(shè)備的屬性要上報(bào)給服務(wù)器,那么其主題為:$sys/{pid}/{device-name}/thing/property/post

替換產(chǎn)品ID和設(shè)備名稱之后為:$sys/hg8zt6E3LP/XiaoHaLED/thing/property/post

  1.   "id""123"
  2.   "version""1.0"
  3.   "params": { 
  4.     "Runtime": { 
  5.       "value": 1000 
  6.     } 
  7.   } 

使用 MQTT.fx 軟件實(shí)現(xiàn)設(shè)備屬性上報(bào),具體操作如下:

也可以同時(shí)改變多個(gè)參數(shù):

  1.  "id""123"
  2.  "version""1.0"
  3.  "params": { 
  4.   "Runtime": { 
  5.    "value": 1000 
  6.   }, 
  7.   "PowerSwitch": { 
  8.    "value"true 
  9.   } 
  10.  } 

使用 MQTT.fx 軟件實(shí)現(xiàn)設(shè)備多屬性上報(bào),具體操作如下:

發(fā)布消息需要填寫 topic、payload和消息的服務(wù)質(zhì)量等級(jí)。

MQTT.fx軟件右側(cè)的 QoS0、 QoS1等是消息服務(wù)質(zhì)量等級(jí)。

MQTT協(xié)議中有三種消息發(fā)布服務(wù)質(zhì)量:

QoS0:“至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)的情況。此級(jí)別一般用于環(huán)境傳感器數(shù)據(jù)上傳,即使丟失一次數(shù)據(jù)也無(wú)所謂,因?yàn)橐话銈鞲衅鲾?shù)據(jù)的上傳都是周期性的。

QoS1:“至少一次”,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。

QoS2:“只有一次”,確保消息到達(dá)一次。這一級(jí)別可用于對(duì)消息丟失和重復(fù)不能容忍的場(chǎng)景,比如在計(jì)費(fèi)系統(tǒng)中,此服務(wù)質(zhì)量的消息因?yàn)橄到y(tǒng)開銷大,一般物聯(lián)網(wǎng)平臺(tái)都是不支持的。

OneNET平臺(tái)對(duì)協(xié)議特性支持如下:

MQTT的訂閱

通常客戶端與MQTT Broker建立連接之后,客戶端首先要對(duì)其感興趣的主題進(jìn)行一下訂閱。

比如設(shè)備屬性設(shè)置,下行:$sys/{pid}/{device-name}/thing/property/set

替換產(chǎn)品ID和設(shè)備名稱之后為:$sys/hg8zt6E3LP/XiaoHaLED/thing/property/set

下面演示一下,使用MQTT.fx軟件訂閱設(shè)備屬性設(shè)置的主題,然后使用OneNET控制臺(tái)中的應(yīng)用模擬器(模擬一個(gè)客戶端),當(dāng)其改變某個(gè)屬性的時(shí)候,MQTT.fx軟件會(huì)同步收到此主題的消息內(nèi)容,對(duì)此消息進(jìn)行解析,就可以知道對(duì)設(shè)備屬性設(shè)置的指令的具體內(nèi)容了。

總結(jié)

本文介紹了 MQTT協(xié)議 ,MQTT協(xié)議采用發(fā)布/訂閱(Publish/Subscribe)模式,該協(xié)議主要有三個(gè)角色:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。

他們?nèi)叩年P(guān)系如下圖所示:

由上圖我們可以看出來(lái),消息傳遞的時(shí)候,并不是從消息的發(fā)布方直接送達(dá)到訂閱端,而是經(jīng)過(guò) MQTT Broker 進(jìn)行消息的分發(fā)。

這種發(fā)布/訂閱消息模式,提供了一種一對(duì)多的消息分發(fā)機(jī)制,進(jìn)而實(shí)現(xiàn)了應(yīng)用程序的解耦。

發(fā)布者(Publish) 是發(fā)送消息的一方,可以為一個(gè)應(yīng)用程序或一臺(tái)設(shè)備。

代理(Broker)(服務(wù)器) 是管理消息隊(duì)列的一方,位于消息發(fā)布者和訂閱者之間。云端(服務(wù)器端)通過(guò)主題(Topic)的方式管理各個(gè)物聯(lián)網(wǎng)設(shè)備的訂閱,實(shí)現(xiàn)將設(shè)備與設(shè)備之間消息進(jìn)行轉(zhuǎn)發(fā)。

訂閱者(Subscribe) 是訂閱主題的一方,主要用于接收消息。 

怎么樣?通過(guò)上面的描述,物聯(lián)網(wǎng)的通信過(guò)程你明白了嗎?

本文轉(zhuǎn)載自微信公眾號(hào)「嵌入式從0到1」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系嵌入式從0到1公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 嵌入式從0到1
相關(guān)推薦

2020-02-04 15:00:25

大白話認(rèn)識(shí)JVM

2021-02-18 09:06:39

數(shù)據(jù)訪問(wèn)者模式

2023-12-26 18:22:05

RocketMQ延遲消息

2018-08-03 18:15:40

物聯(lián)網(wǎng)通信架構(gòu)IOT

2018-06-11 23:34:42

2019-08-14 09:13:38

中臺(tái)互聯(lián)網(wǎng)業(yè)務(wù)

2021-09-01 11:18:33

物聯(lián)網(wǎng)窄帶物聯(lián)網(wǎng)IoT

2020-02-20 11:32:09

Kafka概念問(wèn)題

2021-01-12 09:47:14

物聯(lián)網(wǎng) 通信技術(shù)通訊技術(shù)

2019-12-09 08:29:26

Netty架構(gòu)系統(tǒng)

2018-02-25 22:37:34

2023-04-27 17:49:38

物聯(lián)網(wǎng)通信協(xié)議

2019-05-17 08:27:23

SQL注入漏洞攻擊

2020-12-04 06:40:46

Zookeeper選舉機(jī)制

2020-06-01 14:15:57

物聯(lián)網(wǎng)通信協(xié)議無(wú)線通訊

2021-12-16 10:49:32

物聯(lián)網(wǎng)通信協(xié)議網(wǎng)絡(luò)

2024-01-23 12:47:27

2020-09-08 06:30:59

微服務(wù)代碼模塊

2018-12-07 13:58:38

物聯(lián)網(wǎng)通信協(xié)議IOT

2022-12-12 07:40:36

服務(wù)器項(xiàng)目Serverless
點(diǎn)贊
收藏

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