阿里云mqtt服務(wù)器連接 8266mqtt連接阿里云

NE35E MQTT協(xié)議對接阿里云

MQTT通信協(xié)議的基本介紹參考文章 NT35 MQTT通信 ,本篇給出阿里云的基本操作,NT35E通過訂閱阿里云的主題發(fā)布信息與阿里云平臺相互通信。

紅河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,紅河網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為紅河成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的紅河做網(wǎng)站的公司定做!

登錄阿里云?→?工作臺?→ 物聯(lián)網(wǎng)平臺?→ 進入控制臺→ 公共實例

阿里云默認通信協(xié)議為MQTT,不需要特殊選擇,用戶按照如下步驟創(chuàng)建自己的產(chǎn)品:

創(chuàng)建產(chǎn)品 → 添加設(shè)備?

在"查看"標簽中,包含了MQTT連接的基本三元組信息,也就是后面設(shè)備要填充的基本參數(shù)

? 用戶每定義一類產(chǎn)品都會自動生成對應(yīng)的Topic列表,當然我們也可以"自定義Topic"便于自己測試。

? ?指令解析參考《Lierda NT35ENT26E-CN AT命令手冊》,這里給出使用到的AT指令對應(yīng)參數(shù)說明以便于理解。

AT+LMQTTCFG=cloud,tcpconnectID[,cloud _ type,data_type ]

tcpconnectID 。MQTT Socket 標識符。范圍:0~4。

cloud_type整型。2 alibaba,其他參數(shù)指定其他平臺

data_type整型。阿里云平臺 1 json數(shù)據(jù)?

AT+LMQTTCFG="cloud",0,2,1 ? 對應(yīng)就是對接阿里云平臺,發(fā)送json格式的數(shù)據(jù)

AT+LMQTTCFG=aliauth,tcpconnectID[,product_key,device_name,device_secret]

填充阿里云平臺中設(shè)備的三元組信息

AT+LMQTTCFG="aliauth",0,"a1JszCpjS61","NT35E_06011","390358fc595040aa73221e8393aba86c"

這部分是模組進行TCP鏈路連接(需抓包確認)

AT+LMQTTOPEN=tcpconnectID,host_name,port

host_name對應(yīng)阿里云 "設(shè)備信息"→"MQTT連接參數(shù)" 中的 "mqttHostUrl"

AT+LMQTTOPEN=0,"a1JszCpjS61.iot-as-mqtt點吸煙 -shanghai.aliyuncs點抗 ",1883

模組作為客戶端,通過MQTT協(xié)議連接到服務(wù)器(需抓包確認)

AT+LMQTTCONN=tcpconnectID[,clientID[,username[,password]]]

clientID字符串型。客戶端標識符。用戶可以隨便定義。 username,password 不需要填寫

AT+LMQTTCONN=0,"NT35E"

AT+LMQTTSUBUNSUB=tcpconnectID,subflag,msgID,topic1[,qos1[,topic2[,qos2]d…]]

subflag整型。消息類型 0 訂閱 1 取消訂閱

msgID整型。數(shù)據(jù)包消息標識符。范圍:0~65535。

topic帶雙引號的字符串型。客戶端訂閱或者退訂的主題。長度范圍:0~256 字節(jié)。

qos整型。客戶端發(fā)送訂閱消息(SUBSCRIBE)的 QoS 等級,此時為必選參數(shù)。2?正好一次,該主題下的消息確保接收端僅接收到一次

AT+LMQTTSUBUNSUB=0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",2

這里注意topic對應(yīng)參數(shù)的替換,里面的deviceName需要替換。

訂閱主題之后,服務(wù)器下發(fā)的數(shù)據(jù)模組就可以正常接收了。模組下發(fā)位置

? ?發(fā)布消息在對應(yīng)的設(shè)備目錄下,如果有設(shè)備"訂閱"對應(yīng)的消息,平臺"發(fā)布"相應(yīng)的數(shù)據(jù)設(shè)備就可以接收到了。

AT+LMQTTPUB=tcpconnectID,msgID,qos,retain,topic,msglen,msg

msgID整型。 0~65535。任意定義,但qos=0 時,該參數(shù)值只能為0。

qos整型。 0?最多一次 1?至少一次 2 ?正好一次

retain整型 。服務(wù)器是否保存該消息。0?不保存? 1?保存

topic帶雙引號的字符串型。 客戶端發(fā)布消息的主題。長度范圍:0~256 字節(jié)

msglen整型 。指定的消息數(shù)據(jù)長度。范圍:0~1460。

msg字符串型。 需要發(fā)布的消息數(shù)據(jù)。

AT+LMQTTPUB=0,0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",10,"1122334455"

?注意剛剛自己創(chuàng)建的主題屬性是" 發(fā)布和訂閱 ",所以模組發(fā)送該主題的信息,阿里云也是可以收到的

注意這里模組發(fā)送數(shù)據(jù)的時候,也推送了自己發(fā)送的數(shù)據(jù),因為剛剛訂閱了這個主題,所以模組訂閱(收)到了對應(yīng)的數(shù)據(jù)

? ?前面我們通過NT35E與平臺進行信息交互,那么為什么是這樣填寫對應(yīng)的參數(shù)呢,每個參數(shù)對應(yīng)的說明在阿里云上是什么樣的呢,用戶可以查看阿里云的幫助文檔進行確認。

? ?上面我們使用三元組的方式( 一機一密 )實現(xiàn)NT35E與阿里云平臺通信,但實際生產(chǎn)過程中該方式不好實現(xiàn),比如工廠有1000個設(shè)備生產(chǎn),如果每個設(shè)備都復(fù)制不同的三元組,很難實現(xiàn)工廠批量化生產(chǎn),此時可以通過 一型一密 的通信方式解決該問題。

一型一密模組端實現(xiàn)方式后續(xù)更新。

玩轉(zhuǎn) ESP32 + Arduino (十六) 通過mqtt協(xié)議連接阿里云

需要用到的庫:

引入"PubSubClient.h"后

打開"PubSubClient.h"

修改如下內(nèi)容:

關(guān)于MQTT協(xié)議, 請參考文章:

請參考我之前整理的文檔:

【騰訊文檔】MQTT連接阿里云示例(1)

如果使用了AliyunMqttArduino, 就不需要關(guān)系協(xié)議的報文和加密方式了

首先創(chuàng)建一個mqtt客戶端

返回值: 連接結(jié)果

返回: 狀態(tài)碼

mqttClient.publish(主題, 內(nèi)容)

首先, 創(chuàng)建產(chǎn)品:

其次, 為產(chǎn)品添加設(shè)備

第三, 查看設(shè)備關(guān)鍵信息:

創(chuàng)建完后,我們發(fā)現(xiàn)系統(tǒng)已經(jīng)自動創(chuàng)建了一些功能定義

找到產(chǎn)品的功能頁面, 點擊"編輯草稿"

最后發(fā)布新的物模型

非常簡單的修改, 只修改了要發(fā)送json里的param

注意同步修改param和json的內(nèi)存占用大小

在云服務(wù)器上搭建了mqtt,為什么手機連接不上mqtt,要怎么做才能連接上?求求大神幫忙

MQTT協(xié)議是廣泛應(yīng)用的物聯(lián)網(wǎng)協(xié)議,使用測試MQTT協(xié)議需要MQTT的代理。有兩種方法使用MQTT服務(wù),一是租用現(xiàn)成的MQTT服務(wù)器,如阿里云,百度云,華為云等公用的云平臺提供的MQTT服務(wù),使用公用的MQTT服務(wù)器的好處是省事,但如果僅僅用于測試學(xué)習(xí)還需要注冊帳號,靈活性差些,有的平臺還需要付費。另一方法是自己使用開源的MQTT組件來搭建。

MQTT服務(wù)器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。

這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬于自己的MQTT服務(wù)器。

第一步:需要安裝一臺linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。

第二步:下載mosquitto需要的依賴

sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下載mosquitto并解壓,現(xiàn)在mosquitto官網(wǎng)最新的版本是1.5.1

tar xzvf mosquitto-1.5.1.tar.gz

第四步:編譯

cd mosquitto-1.5.1/

make

make install

第五步:啟動mosquitto

./mosquitto -v

1535473957: mosquitto version 1.5.1 starting

1535473957: Using default config.

1535473957: Opening ipv4 listen socket on port 1883.

1535473957: Opening ipv6 listen socket on port 1883.

這時候mosquitto就會以默認的參數(shù)啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,

啟動時候加上參數(shù) -c,

./mosquitto -c mosquitto.conf

可以看到,mosquitto監(jiān)聽的端口為1883.

這時候我們的MQTT服務(wù)器就搭建好了??烧乙粋€mqtt客戶端來測試一下。

先發(fā)布一個主題“home/garden/fountain/2”

內(nèi)容是“hello world”

這時候在mosquitto會打印出下面的log

535474247: New connection from 192.168.1.105 on port 1883.

1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).

1535474247: No will message specified.

1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)

1535474307: Received PINGREQ from MQTT_FX_Client

1535474307: Sending PINGRESP to MQTT_FX_Client

1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))

1535474367: Received PINGREQ from MQTT_FX_Client

1535474367: Sending PINGRESP to MQTT_FX_Client

訂閱主題“home/garden/fountain/2”

可以看到收到了自己發(fā)布的消息。

用wireshark抓包

可以看到抓到了一個MQTT的publish的報文。

如何使用 NB-Iot + Arduino 通過MQTT協(xié)議上傳數(shù)據(jù)至阿里云平臺?

有很多通信模塊只有TCP功能,沒有MQTT功能,比如WIFI,W5500等模塊,還有一些NBIOT模塊,但是又想連接阿里云物聯(lián)網(wǎng)平臺,官方提供了操作系統(tǒng),需要自己移植,很麻煩,比較難看得懂。就在想有沒有一些簡單一定的方法。

心想MQTT是基于TCP的,能否使用TCP轉(zhuǎn)MQTT?因此就想使用TCP協(xié)議然后轉(zhuǎn)MQTT協(xié)議連接阿里云物聯(lián)網(wǎng)平臺,經(jīng)過試驗證明是可以的。

首先我們先分析一下如何登陸接入Onenet平臺。

先從它數(shù)據(jù)格式開始分析。首先我們要從后臺取出三個信息,我們以這個為例。

我們把產(chǎn)品ID,設(shè)備名稱,設(shè)備秘鑰,簡稱三要素 (具體是什么看你自己的設(shè)備)

其實阿里云物聯(lián)網(wǎng)平臺的MQTT協(xié)議用的就是標準的,不過它加入了自己的認證方式。

MQTT協(xié)議需要上傳四個參數(shù),報活時間,clientID,用戶名,密碼。

那么阿里云的就在clientID,用戶名,密碼做了手腳。

clientID比較長,按照一定的格式

用戶名:設(shè)備名和秘鑰組成

密碼:使用了加密串進行了加密,有sha1或者MD5加密方式

下面我們來介紹一下

MQTT接入都是發(fā)十六進制的數(shù)據(jù)。

么我們發(fā)送的時候就是這樣子的一串數(shù)據(jù)

0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67

0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009

0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36

十六進制解釋

數(shù)據(jù)長度:0x74

協(xié)議數(shù)據(jù)長度 0x00 0x04

協(xié)議類型: 0x4d 0x51 0x54 0x54

協(xié)議數(shù)據(jù): 0x04 0xC0

keepAlive數(shù)據(jù):0078

ClientID長度:0033

ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c

用戶名:0009

用戶名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34

密碼長度:0028

密碼: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36復(fù)制代碼上面的就是連接服務(wù)器的連接包

下面呢,我們來做個發(fā)布包(上傳數(shù)據(jù)到服務(wù)器)

0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d

十六進制數(shù)據(jù)解釋

數(shù)據(jù)頭:0x30

數(shù)據(jù)長度:0x1D

TopicName數(shù)據(jù)長度:0009

TopicName數(shù)據(jù)內(nèi)容:2f7379732f706f7374

主體json數(shù)據(jù): 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d復(fù)制代碼以上就是連接阿里云的數(shù)據(jù)包格式及發(fā)布數(shù)據(jù)的格式,由于時間問題沒有做訂閱的數(shù)據(jù)包分析,下一次更新訂閱的內(nèi)容。

本文題目:阿里云mqtt服務(wù)器連接 8266mqtt連接阿里云
文章路徑:http://muchs.cn/article10/ddiggdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站App設(shè)計、全網(wǎng)營銷推廣、商城網(wǎng)站ChatGPT、域名注冊

廣告

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

手機網(wǎng)站建設(shè)