1. 程式人生 > >阿里雲 MQTT 協議學習總結(一)

阿里雲 MQTT 協議學習總結(一)

寫在前面: 不扯淡了,直接 goto 正文, QQ: 993650814 

正文:

一、MQTT協議簡介:

MQTT(Message Queuing Telemetry Transport),是一個物聯網傳輸協議,它被設計用於輕量級的釋出/訂閱式訊息傳輸,旨在為低頻寬和不穩定的網路環境中的物聯網裝置提供可靠的網路服務。MQTT是專門針對物聯網開發的輕量級傳輸協議。MQTT協議針對低頻寬網路,低計算能力的裝置,做了特殊的優化,使得其能適應各種物聯網應用場景。

二、 概念總結

1、閘道器:能夠直接連線物聯網平臺的裝置,且具有子裝置管理功能,能夠代理子裝置連線雲端。

2、子裝置:子裝置不能直接連線物聯網平臺,只能通過閘道器連線。

3、三元組:PublicKey、DeviceName、DeviceSecret

      PublicKey:物聯網平臺為產品頒發的唯一標識,在裝置通訊及認證中都要用到,需妥善保管。

      DeviceName:在註冊裝置時,自定義的或者自動生成的裝置名稱,在通訊及認證中都要用到,需妥善保管。

      DeviceSecret:物聯網平臺為裝置頒發的裝置祕鑰,和DeviceName成對出現,在裝置認證時會用,需妥善保管。

4、Topic:Topic是UTF-8字串,是釋出/訂閱(Pub/Sub)模型中訊息的中介,可以向Topic釋出或者訂閱訊息。

5、Topic類:同一產品下不同裝置的Topic集合,用${productkey}和${deviceName}通配一個唯一的裝置,一個Topic類對一個ProductKey下所有裝置通用。

6、釋出(Pub):操作Topic的許可權型別,具有往Topic中釋出訊息的許可權。

7、訂閱(Sub):操作Topic的許可權型別,具有從Topic中訂閱訊息的許可權。

8、屬性:裝置的功能模型之一,一般用於描述裝置執行時的狀態,如環境監測裝置所讀取的環境溫度等,屬性支援GET和SET兩種請求方式,應用系統可發起對屬性的讀取或設定請求。

9、服務:裝置的功能模型之一,裝置可被外部呼叫的能力或者方法,可設定輸入引數或輸出引數。相比屬性,服務可用一條指令實現更復雜的業務邏輯,如執行某項特定的任務。

10、事件:裝置的功能模型之一,裝置執行時的事件,事件一般包含需要被外部感知和處理的通知訊息,可包含多個輸出引數。如。某項任務完成的資訊,裝置發生故障報警時的問題等,事件可以被訂閱和推送。

11、裝置影子:是一個JSON文件,用於儲存裝置或者應用的當前狀態資訊。每個裝置都會在雲端有唯一的裝置影子對應,無論裝置有沒有連線到Internet,都可以使用裝置影子通過MQTT或者HTTP獲取或者設定裝置的狀態。

二、Topic和Topic類

1、物聯網平臺中,服務端和裝置端通過Topic來實現訊息通訊,Topic是針對裝置的概念,Topic類是針對產品的概念。

2、Topic類

      建立產品之後,物聯網平臺會自動為該產品建立預設的Topic類,並且在建立裝置之後,會將產品Topic類自動的對映到裝置上,無需為每個裝置建立Topic,如下:Topic自動生成示意圖:

建立產品之後,IOT平臺會自動為產品生成一些標準的Topic類,可以在產品的消費通訊頁面,檢視該產品的所有Topic類

關於Topic類的說明:

(1)、Topic類是一類Topic的集合,例如:Topic 類:/${productKey}/${deviceName}/update是具體 Topic:/${productKey}/device1/update/${productKey}/device2/update的集合。

(2)、Topic類中必須以正斜線(/)進行分層,區分每個類目。其中,有兩個類目為既定類目:${productKey}表示產品的識別符號 ProductKey;${deviceName}表示裝置名稱。

(3)、類目命名只能包含字母,數字和下劃線(_)。每級類目不能為空。

(4)、裝置操作許可權:釋出表示裝置可以往 Topic 釋出訊息;訂閱表示裝置可以從 Topic 訂閱訊息。

(5)、基礎版產品支援自定義 Topic 類。您可以根據業務需求,通過自定義 Topic 類靈活地進行訊息通訊。高階版不支援自定義 Topic 類和修改類目名稱。

(6)、系統 Topic 類是由系統預定義的 Topic 類,不支援使用者自定義,不採用/${productKey}開頭。例如,高階版中,針對物模型所提供的 Topic 類一般以/sys/開頭;韌體升級相關的Topic類以/ota/開頭;裝置影子的 Topic 類以/shadow/開頭。

3、Topic:

    產品的Topic類不用於通訊,只用來定義Topic,真正用來訊息通訊的是Topic。

   (1)、TopicTopic類的格式一致,區別在於,Topic類中的變數${deviceName},在Topic中是具體的裝置名稱。

   (2)、裝置對應的Topic是從產品對應的Topic類中映射出來,根據裝置名稱而動態建立的。裝置的Topic中帶有裝置名稱即DeviceName,只能被該裝置用來Pub和Sub通訊。例如,Topic:/${productKey}/device1/update歸屬於裝置名為device1的裝置,所以只能被裝置 device1 用於釋出、訂閱訊息,而不能被裝置 device2 用於釋出訂閱訊息。

  (3)、在配置規則引擎時,配置的Topic中可使用萬用字元,且同一個類中只能出現一個萬用字元。如下表:

 

先到這裡,後續慢慢更新。。。。。。

相關推薦

阿里 MQTT 協議學習總結()

寫在前面: 不扯淡了,直接 goto 正文, QQ: 993650814  正文: 一、MQTT協議簡介: MQTT(Message Queuing Telemetry Transport),是一個物聯網傳輸協議,它被設計用於輕量級的釋出/訂閱式訊息傳輸,旨在為低頻寬和

MIPI協議學習總結()【轉】

轉自:https://www.cnblogs.com/EaIE099/p/5200341.html 一、MIPI 簡介:   MIPI(移動行業處理器介面)是Mobile Industry Processor Interface的縮寫。MIPI是MIPI聯盟發起的為移動應用處理器制定的開放標準。 &nb

MQTT協議實現Eclipse Paho學習總結

一、概述 遙測傳輸 (MQTT) 是輕量級基於代理的釋出/訂閱的訊息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。例如,但不僅限於此: 網路代價昂貴,頻寬低、不可靠。在嵌入裝置中執行,處理器和記憶體資源有限。 該協議的特點有: 使用

Struts+ibatis-學習總結

selectall var 開始 repl int str 對象 -s span 1查詢並返回list 別名映射->實體類:resultClass <select id=" selectAll" resultClass="AppLog">

Python基礎學習總結(

format 計數 python使用 flat rac 劃線 orm lex 讀取 1、變量和數據類型 1.1變量 1.每個變量都存儲了一個值——與變量相關聯的信息。 2.變量不僅可以為整數或浮點數,還可以是字符串,可以是任意數據類型。 1.1.1變量的命名和使用 變量名只

dubbo學習總結 API

技術 學習總結 src mode logs num 學習 分層 img API 一般用來暴露接口 項目分層一般是 api + entity + enums + model 就是接口加上一些實體之類的東西 dubbo學習總結一 API

webpack學習總結()

try .html rip scrip 執行 ebp 合成 項目 通過 * webpack安裝 1、 安裝最新node,node自帶npm包管理器; 2、 全局模式安裝webpack(只有將webpack在全局模式下安裝才能在命令行直接通過web

MQTT協議學習及實踐(Linux服務端,Android客戶端的例子)

nbsp hub 設備 log config cati href 10.10.4 rmi 前言 MQTT(Message Queuing Telemetry Transport),是一個物聯網傳輸協議,它被設計用於輕量級的發布/訂閱式消息傳輸,旨在為低帶寬和不穩定

Orleans學習總結()

nes ima com 文檔 直接 規模 .get 新的 結合 最近這段時間接觸了些新的東西:Orleans框架。今天是春節前最後一天班,把我這段時間學習的東西總結一下分享給大家。 一、什麽是Orleans (文檔地址。這裏我就直接翻譯官方的介紹,有點地方翻譯的有些蹩腳

HTTP協議學習總結

http消息格式: start line + headers + bodyRequest Message: <method> <request-URL> <version><headers><entity-body> Repsonse Messag

TPC協議學習總結(上)

組成 三次 -s 序列號 可謂 然而 image 計數器 結構 在計算機領域,數據的本質無非0和1,創造0和1的固然偉大,但真正百花齊放的還是基於0和1之上的各種層次之間的組合(數據結構)所帶給我們人類各種各樣的可能性。例如TCP協議,我們的生活無不無時無刻的站在TCP協議

TCP協議學習總結(中)

性能 bsp 復雜 完美 設置 通告 數據回顯 實時推送 實時性 很多人都說TCP協議是一個十分復雜的協議,在學習當中,我對協議每一個問題都分解學習後,每一個分解我都能體會和理解它的要點,並不難理解。但我把這些拆分的細節合並後,確認感覺這樣一個協議相對“臃腫”但又好像不得不

TCP協議學習總結(下)

out 窗口 我們 中間 strong 以及 簡單 就是 bsp 在前兩邊TCP學習總結中,也大概地學習了TCP的整個流程,但許多細節中的細節並沒有詳細學習,例如超時重傳問題,每次瓶頸回歸慢啟動效率問題以及最大窗口限制問題等。本學習篇章最要針對這些細節中的細節進行學習。TC

Spring Boot學習總結

請求 clas res control bject figure test 邏輯 context Spring Boot大大簡化了之前java項目的繁瑣xml配置,本文簡單的總結下spring boot的相關知識。 1,@RestController 配置在controll

阿里伺服器基本知識(

最近用 js 全棧玩小程式,玩的第一個流程便是要配置伺服器,而且是要繫結域名的伺服器。好吧,磕磕碰碰的,終於可以玩了。 寫著寫著,後臺介面便用上了,這時候伺服器知識又要上場了。心塞,硬著頭皮~ (在這裡就不說明怎樣購買以及伺服器搭建了,百度一大堆~還有先謝公司裡的蘇工和陳工幫忙,計算機知識也

Servlet3.0學習總結()——使用註解標註Servlet

一、Servlet3.0介紹   Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案中進行Servlet的部署描述,簡化開發流程。 二、開發Servlet3.0程式的所需要的環境   開

Java IO流學習總結:輸入輸出流

Java流類圖結構:   流的概念和作用 流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱或抽象。即資料在兩裝置間的傳輸稱為流,流的本質是資料傳輸,根據資料傳輸特性將流抽象為各種類,方便更直觀的進行資料操作。 IO流的分類 根據處理資料型別的不同分為:字元流和位元組

MyBatis的學習總結

一、MyBatis的介紹: MyBatis本是apache的一個開源專案iBatis,2010年這個專案由apache software foundation遷移到google code,並改名為MyBatis。 MyBtis是一個優秀的持久層框架,它對jdbc的

阿里MQTT 客戶端收發 MQTT 訊息(使用一個裝置控制另一個裝置)

https://help.aliyun.com/document_detail/44874.html?spm=a2c4g.11186623.6.721.qxegRK 1保證只有一組使用者AccessKey,怕衝突其他的可暫時禁用 (踩過的坑:域名必須是這個格式tcp://mqtt-c

二:MyBatis學習總結(二)——使用MyBatis對錶執行CRUD操作 MyBatis學習總結()——MyBatis快速入門

上一篇博文MyBatis學習總結(一)——MyBatis快速入門中我們講了如何使用Mybatis查詢users表中的資料,算是對MyBatis有一個初步的入門了,今天講解一下如何使用MyBatis對users表執行CRUD操作。本文中使用到的測試環境是上一篇博文中的測試環境。 一、使用MyBatis對錶執行