99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

程序員小哈
認證:優質創作者
作者動態
自動洗碗機綜合實例第二講 - 最小系統核心板PCB繪制
2024-07-18 09:21
自動洗碗機綜合實例第一講 - 最小系統核心板原理圖繪制
2024-07-16 09:40
線路板焊接的干貨都在這里呢
2024-07-14 12:08
基于單片機的智能風扇DIY總結
2024-07-13 14:42
基于HAL庫實現按鍵(外部中斷)翻轉一個LED
2024-06-30 14:02

大白話聊物聯網通信過程,看不懂算我輸!

大家好,我是程序員小哈,假期結束了,我們繼續分享嵌入式相關知識,喜歡的小伙伴,文末點贊,讓我看到哈。

今天我們來看一下,MQTT客戶端如何與OneNET服務器進行數據通信,發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)他們三者之間是什么樣的關系。

OneNET平臺的主題

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

發布者和訂閱者都屬于客戶端,一個客戶端既可以是發布者,也可以是訂閱者。

發布者針對某個主題發布了一條消息至服務器,服務器會分發給所有訂閱了該主題的訂閱者。

因此定閱與發布必須要有主題,主題相當于對發送給服務器端的消息進行了分類,只有客戶端定閱了某個主題后,才能收到相應主題的payload,才能進行通信。

一個客戶端可以向服務器訂閱多個主題。

這里阿里云物聯網平臺就是MQTT的服務器(Broker),手機上的云智能APP和我們做的控制板就屬于客戶端。

手機控制電燈開關,就是對設備屬性進行設置,手機APP端發布了一個控制燈動作的消息,控制板訂閱了這個消息,控制板就能收到服務器轉發來的這個消息,進而就能實現手機對控制板的控制。

控制板通過溫濕度傳感器獲取室內的溫濕度信息,控制板通過發布帶有溫濕度信息的消息至服務器,手機端因為訂閱了此主題的消息,手機端也就可以收到此消息了,對此消息進行解析,進而顯示到手機APP中,也就實現了控制板上的溫濕度數據的上傳,這就是對設備屬性的上報。

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

其中, {pid} 由產品ID替換,我們上文創建的產品ID為:hg8zt6E3LP{device-name} 設備名稱為:XiaoHaLED 

下面我們使用 MQTT.fx 軟件充當客戶端,與OneNET服務器進行通信,我們看看如何發布和訂閱消息。

發布消息

MQTT傳輸的消息分為:主題(topic--區分不同消息)和負載(payload--消息內容)兩部分。

通過上面我們知道,如果設備的屬性要上報給服務器,那么其主題為:$sys/{pid}/{device-name}/thing/property/post

替換產品ID和設備名稱之后為:$sys/hg8zt6E3LP/XiaoHaLED/thing/property/post

{
  "id": "123",
  "version": "1.0",
  "params": {
    "Runtime": {
      "value": 1000
    }
  }
}

使用 MQTT.fx 軟件實現設備屬性上報,具體操作如下:

也可以同時改變多個參數:

{
 "id": "123",
 "version": "1.0",
 "params": {
  "Runtime": {
   "value": 1000
  },
  "PowerSwitch": {
   "value": true
  }
 }
}

使用 MQTT.fx 軟件實現設備多屬性上報,具體操作如下:

發布消息需要填寫 topicpayload和消息的服務質量等級。

MQTT.fx軟件右側的 QoS0 QoS1等是消息服務質量等級。

MQTT協議中有三種消息發布服務質量:

QoS0:“至多一次”,消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復的情況。此級別一般用于環境傳感器數據上傳,即使丟失一次數據也無所謂,因為一般傳感器數據的上傳都是周期性的。

QoS1:“至少一次”,確保消息到達,但消息重復可能會發生。

QoS2:“只有一次”,確保消息到達一次。這一級別可用于對消息丟失和重復不能容忍的場景,比如在計費系統中,此服務質量的消息因為系統開銷大,一般物聯網平臺都是不支持的。

OneNET平臺對協議特性支持如下:

MQTT的訂閱

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

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

替換產品ID和設備名稱之后為:$sys/hg8zt6E3LP/XiaoHaLED/thing/property/set

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

總結

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

他們三者的關系如下圖所示:

由上圖我們可以看出來,消息傳遞的時候,并不是從消息的發布方直接送達到訂閱端,而是經過 MQTT Broker 進行消息的分發。

這種發布/訂閱消息模式,提供了一種一對多的消息分發機制,進而實現了應用程序的解耦。

發布者(Publish) 是發送消息的一方,可以為一個應用程序或一臺設備。

代理(Broker)(服務器) 是管理消息隊列的一方,位于消息發布者和訂閱者之間。云端(服務器端)通過主題(Topic)的方式管理各個物聯網設備的訂閱,實現將設備與設備之間消息進行轉發。

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

怎么樣通過上面的描述,物聯網的通信過程你明白了嗎?

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關注 69
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 国产香蕉一区二区三区 | 一区日本 | 精品国产日韩亚洲一区二区 | 天堂VA视频一区二区 | www.国产日本| 亚洲中文字幕精品久久 | 熟女泄火一区二区三区在线 | 亚洲韩国精品无码一区二区三区 | 久做在线视频免费观看 | 久久精品国产一区二区三区四区 | 麻豆国产手机福利看片 | 日本一区免费看 | 青青草免费在线播放 | 国产欧美日韩精品一区二区三区 | 69堂免费视频 | 国产精品久久久免费视频 | 脱了老师内裤猛烈进入在线观看 | 国产学生av娇小av毛片 | 成人免费看吃奶视频网站 | 国产精品粉嫩jk国产呦系列 | 国产精品国产片 | 麻豆福利在线 | 亚洲AV网址在线 | 中文无码精品视频在线看 | 日本黄在线观看 | 国产乱码精品一区二区三区忘忧草 | 国产偷国产偷亚洲高清日韩 | 边勾边做1V1H顾慕琛 | 亚洲精品中文字幕乱码4区 一本一道波多野结衣av黑人 | 极品少妇粉嫩小泬v片可看 99热婷婷 | 久久一级黄色片 | 大乳妇女99精品免费91 | 亚洲二区三区在线 | 超碰人人上 | 精品国产一卡2卡3卡4卡新区 | 亚洲日韩中文在线精品第一 | 免费人成视频网站在线18 | 日本一道本免费 | 欧美人免费视频网站在线 | 伊人色综合久久天天网图片 | 刮伦人妇a片1级 |