在阿里云上部署mqtt服務器 阿里云mqtt服務器搭建 emq

將Android Things與阿里云集成,輕松實現(xiàn)物聯(lián)網(wǎng)項目

在本文中,我們將向您展示如何使用阿里云IoT平臺輕松將Android Things連接到您的物聯(lián)網(wǎng)(IoT)網(wǎng)絡,我們喊唯將為該項目構造一個示例:功能性甲醛和溫度傳感器。有些人可能不了解Android Things,簡單來說, 它就是讓開發(fā)者可以使用Android開發(fā)工具開發(fā)嵌入式設備 。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比梅河口網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式梅河口網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋梅河口地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

項目設備清單

NXP i.MX7D

設備接線圖

在設置硬件之后,是時候在阿里云IoT平臺上配置軟件了。

首先,導航到物聯(lián)網(wǎng)控制臺并激活阿里云IoT。創(chuàng)建高級產(chǎn)品并添加產(chǎn)品屬性定義:

Android Things設備開發(fā)

1、使用鄭皮培Android Studio創(chuàng)建Android Things項目,并授予網(wǎng)絡權限

2、將“eclipse.paho.mqtt”存儲庫添加到gradle

3、通過I2C讀取DHT12數(shù)據(jù)

4、通過UART獲取Ze08CH2O數(shù)據(jù)

5、創(chuàng)建阿里云IoT連接并報告數(shù)據(jù)

設備啟動后,您可以在阿里云IoT控制臺上查看設備的實時數(shù)據(jù), 設備管理 - 運行狀態(tài) 。

此項目握物在GIT上的地址是:,有興趣的朋友可以試試。

MQTT 基本認知

物聯(lián)網(wǎng) (internet of thing) ,表示的是可以把一些帶某些傳感器的設備(終端),接入到互聯(lián)網(wǎng)的行為。

通過互聯(lián)網(wǎng)連接這些設備,這些設備就能夠互相協(xié)作。

而 MQTT 就是這些設備之間數(shù)據(jù)通信的一個基于 TCP/IP 的協(xié)議。

每個終端都和實現(xiàn)了 MQTT 協(xié)議的代理/服務器相連。

通過 published MQTT 代理服務器的某個 主題 發(fā)送數(shù)據(jù)。

通過 subscription 從 MQTT 代理服務器獲取自己訂閱的 主題 數(shù)據(jù)。

MQTT 協(xié)議是一種輕量級的、靈活的網(wǎng)絡協(xié)議。并且非常適合 IOT 的場景。

大多數(shù)開發(fā)人員已經(jīng)熟悉了 HTTP WEB 協(xié)議。那么為什么不讓 IOT 設置鏈接到 WEB 服務?

設備可以采用 HTTP 請求的形式發(fā)送數(shù)據(jù),并采用 HTTP 響應的形式從服務器獲取數(shù)據(jù),接受更新。

因為對于 IOT 的設備來說,這種 主動請求-- 被動等待應答的 數(shù)據(jù)傳輸模型存在嚴重的局限性:

那么,MQTT 為什么如此輕便且靈活?MQTT 協(xié)議的一個關鍵的特性是 發(fā)布/訂閱模型 。它將數(shù)據(jù)的發(fā)布者和接受者分離。

一個設備終端既可以是數(shù)據(jù)的發(fā)布者 (published) 也可以是數(shù)據(jù)的訂閱者 (subscription) 。

一個設備如果要發(fā)布數(shù)據(jù),只需要往代理服務器中 相應的主題發(fā)布數(shù)據(jù)內(nèi)容即可。

一個設備如果需要接受到數(shù)據(jù),只需要在代理服務器中, 提前訂閱自己需要關注的主題即可。

MQTT 最基本的體驗,就是使用 mosquitto 。

Mosquitto是一款實現(xiàn)了 MQTT v3.1 協(xié)議的開源消息代理軟件,提供輕量級的,支持發(fā)布/訂閱的的消息推送模式,使設備對設備之間的短消息通信簡單易用。

它可以理解成一個 MQTT 的代理服務器。

基本步驟如下:

安裝成功截圖

使用 brew services start mosquitto 啟動 MQTT 服務

運行截圖

然后再打開另外兩個終端窗口,模擬兩個IOT設備。A 訂閱 MQTT 服務。B 向 MQTT 的服務枝悶唯發(fā)送數(shù)據(jù)。

A訂閱當前MQTT的某個服務。

B向 MQTT 服務器發(fā)布(published) 數(shù)據(jù)。

然后,我們就可以在A控制臺里看到由 B 通過 MQTT 服務發(fā)送的數(shù)據(jù)了。

基本流程圖

控制臺 A 向 MQTT 服務器訂閱 dw/demo 服務,并被動的等待 MQTT 服務器返回數(shù)據(jù)。

控制臺 B 主動的向 MQTT 服務器的 dw/demo 服務發(fā)送 published 數(shù)據(jù),之后。服務器會主動向事先訂閱了 dw/demo 的終端分發(fā)此消息。

MQTT 是一種鏈接協(xié)議,它指定了如何組織數(shù)據(jù)字節(jié)并通過 TCP/IP 網(wǎng)絡傳輸它們。但實際上,開發(fā)人員并不需要鏈接這個鏈接協(xié)議的具體細節(jié)。我們只需要知道,每條消息都有一個命令和數(shù)據(jù)有效負載猛培。該命令定義消息類型(比如 CONNECT 消息或者 SUB SCRIBE 消息)。所有的 MQTT 庫和工具都提供了直接處理這些消息的基本方法,并且能自動填充一些必要的字段(在數(shù)據(jù)包的對應字節(jié)填充),比如消息和客戶端 ID。

首先客戶端發(fā)送一罩舉條 CONNECT消息 來鏈接代理。CONNECT 消息要求建立從客戶端到代理服務器的鏈接。

CONNECT 命令的基本參數(shù)

當客戶端向代理服務器發(fā)送一條 CONNECT 命令之后,服務器會調(diào)用 CONNACK 命令,告知服務鏈接的狀態(tài)。

CONNACK 命令的基本參數(shù)

當客戶端和服務器建立連接之后,客戶端就可以向服務器訂閱某些主題的。(發(fā)送一條或多條 SUBSCRIBE消息 )。

表明當服務器接受到其他終端推送的此主題數(shù)據(jù)時,服務器會默認發(fā)送給它。

SUBSCRIBE 參數(shù)列表

當客戶端成功的向服務器訂閱某個主題之后,服務器會返回一條 SUBACK 的消息,其中包含一個或者多個 returnCode 參數(shù)。

SUBACK消息參數(shù)

returnCode : 值 0 - 2 ,表示成功訂閱,并返回這個訂閱消息的 QOS。值 128 : 訂閱失敗。

既然客戶端可以向服務器訂閱某個主題,當然也可以取消訂閱。

與 SUBSCRIBE 訂閱命令相反的命令是 UNSUBSCRIBE 取消訂閱命令。

此命令非常簡單。只有一個topic(主題)參數(shù)。

上面講的是訂閱,訂閱是需要有消息從服務器發(fā)送過來的。但是服務器本身基本不產(chǎn)生數(shù)據(jù),那數(shù)據(jù)從何而來呢?

通過另外一個客戶端執(zhí)行 PUBLISH 命令,往代理服務器發(fā)送數(shù)據(jù)。并最終通過代理服務器將數(shù)據(jù)傳遞給訂閱了此服務的客戶端。

PUBLISH 消息參數(shù)

對于 MQTT 的一張基本理解圖

基本流程圖:

最后總結

參考資料: 初識 MQTT

網(wǎng)頁標題:在阿里云上部署mqtt服務器 阿里云mqtt服務器搭建 emq
文章路徑:http://muchs.cn/article28/dsjjjcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)頁設計公司、云服務器、手機網(wǎng)站建設網(wǎng)站導航、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)