在本文中,我們將向您展示如何使用阿里云IoT平臺輕松將Android Things連接到您的物聯網(IoT)網絡,我們喊唯將為該項目構造一個示例:功能性甲醛和溫度傳感器。有些人可能不了解Android Things,簡單來說, 它就是讓開發者可以使用Android開發工具開發嵌入式設備 。
創新互聯-專業網站定制、快速模板網站建設、高性價比梅河口網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式梅河口網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋梅河口地區。費用合理售后完善,10年實體公司更值得信賴。
項目設備清單
NXP i.MX7D
設備接線圖
在設置硬件之后,是時候在阿里云IoT平臺上配置軟件了。
首先,導航到物聯網控制臺并激活阿里云IoT。創建高級產品并添加產品屬性定義:
Android Things設備開發
1、使用鄭皮培Android Studio創建Android Things項目,并授予網絡權限
2、將“eclipse.paho.mqtt”存儲庫添加到gradle
3、通過I2C讀取DHT12數據
4、通過UART獲取Ze08CH2O數據
5、創建阿里云IoT連接并報告數據
設備啟動后,您可以在阿里云IoT控制臺上查看設備的實時數據, 設備管理 - 運行狀態 。
此項目握物在GIT上的地址是:,有興趣的朋友可以試試。
物聯網 (internet of thing) ,表示的是可以把一些帶某些傳感器的設備(終端),接入到互聯網的行為。
通過互聯網連接這些設備,這些設備就能夠互相協作。
而 MQTT 就是這些設備之間數據通信的一個基于 TCP/IP 的協議。
每個終端都和實現了 MQTT 協議的代理/服務器相連。
通過 published MQTT 代理服務器的某個 主題 發送數據。
通過 subscription 從 MQTT 代理服務器獲取自己訂閱的 主題 數據。
MQTT 協議是一種輕量級的、靈活的網絡協議。并且非常適合 IOT 的場景。
大多數開發人員已經熟悉了 HTTP WEB 協議。那么為什么不讓 IOT 設置鏈接到 WEB 服務?
設備可以采用 HTTP 請求的形式發送數據,并采用 HTTP 響應的形式從服務器獲取數據,接受更新。
因為對于 IOT 的設備來說,這種 主動請求-- 被動等待應答的 數據傳輸模型存在嚴重的局限性:
那么,MQTT 為什么如此輕便且靈活?MQTT 協議的一個關鍵的特性是 發布/訂閱模型 。它將數據的發布者和接受者分離。
一個設備終端既可以是數據的發布者 (published) 也可以是數據的訂閱者 (subscription) 。
一個設備如果要發布數據,只需要往代理服務器中 相應的主題發布數據內容即可。
一個設備如果需要接受到數據,只需要在代理服務器中, 提前訂閱自己需要關注的主題即可。
MQTT 最基本的體驗,就是使用 mosquitto 。
Mosquitto是一款實現了 MQTT v3.1 協議的開源消息代理軟件,提供輕量級的,支持發布/訂閱的的消息推送模式,使設備對設備之間的短消息通信簡單易用。
它可以理解成一個 MQTT 的代理服務器。
基本步驟如下:
安裝成功截圖
使用 brew services start mosquitto 啟動 MQTT 服務
運行截圖
然后再打開另外兩個終端窗口,模擬兩個IOT設備。A 訂閱 MQTT 服務。B 向 MQTT 的服務枝悶唯發送數據。
A訂閱當前MQTT的某個服務。
B向 MQTT 服務器發布(published) 數據。
然后,我們就可以在A控制臺里看到由 B 通過 MQTT 服務發送的數據了。
基本流程圖
控制臺 A 向 MQTT 服務器訂閱 dw/demo 服務,并被動的等待 MQTT 服務器返回數據。
控制臺 B 主動的向 MQTT 服務器的 dw/demo 服務發送 published 數據,之后。服務器會主動向事先訂閱了 dw/demo 的終端分發此消息。
MQTT 是一種鏈接協議,它指定了如何組織數據字節并通過 TCP/IP 網絡傳輸它們。但實際上,開發人員并不需要鏈接這個鏈接協議的具體細節。我們只需要知道,每條消息都有一個命令和數據有效負載猛培。該命令定義消息類型(比如 CONNECT 消息或者 SUB SCRIBE 消息)。所有的 MQTT 庫和工具都提供了直接處理這些消息的基本方法,并且能自動填充一些必要的字段(在數據包的對應字節填充),比如消息和客戶端 ID。
首先客戶端發送一罩舉條 CONNECT消息 來鏈接代理。CONNECT 消息要求建立從客戶端到代理服務器的鏈接。
CONNECT 命令的基本參數
當客戶端向代理服務器發送一條 CONNECT 命令之后,服務器會調用 CONNACK 命令,告知服務鏈接的狀態。
CONNACK 命令的基本參數
當客戶端和服務器建立連接之后,客戶端就可以向服務器訂閱某些主題的。(發送一條或多條 SUBSCRIBE消息 )。
表明當服務器接受到其他終端推送的此主題數據時,服務器會默認發送給它。
SUBSCRIBE 參數列表
當客戶端成功的向服務器訂閱某個主題之后,服務器會返回一條 SUBACK 的消息,其中包含一個或者多個 returnCode 參數。
SUBACK消息參數
returnCode : 值 0 - 2 ,表示成功訂閱,并返回這個訂閱消息的 QOS。值 128 : 訂閱失敗。
既然客戶端可以向服務器訂閱某個主題,當然也可以取消訂閱。
與 SUBSCRIBE 訂閱命令相反的命令是 UNSUBSCRIBE 取消訂閱命令。
此命令非常簡單。只有一個topic(主題)參數。
上面講的是訂閱,訂閱是需要有消息從服務器發送過來的。但是服務器本身基本不產生數據,那數據從何而來呢?
通過另外一個客戶端執行 PUBLISH 命令,往代理服務器發送數據。并最終通過代理服務器將數據傳遞給訂閱了此服務的客戶端。
PUBLISH 消息參數
對于 MQTT 的一張基本理解圖
基本流程圖:
最后總結
參考資料: 初識 MQTT
網頁標題:在阿里云上部署mqtt服務器 阿里云mqtt服務器搭建 emq
文章路徑:http://vcdvsql.cn/article28/dsjjjcp.html
成都網站建設公司_創新互聯,為您提供企業建站、網頁設計公司、云服務器、手機網站建設、網站導航、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯