導航:首頁 > 配伺服器 > 阿里雲伺服器部署mqtt

阿里雲伺服器部署mqtt

發布時間:2023-01-02 20:15:19

1. 如何在阿里雲上部署MQTT需要購買什麼樣的阿里服務

在阿里雲的後台終端安裝MQTT

2. 阿里雲mqtt收費標准

以下是阿里雲mqtt收費標准:
其中鉑金版實例、標准版實例、輕量版實例是包年包月(預付費)。是一種預付費模式,即先付費再使用。一般適用於業務量較大且長期運行的場景,通過包年包月付費方式您可以提前預留資源,同時享受更大的價格優化,幫您最大程度節省成本。

還有就是按量付費實例是按量付費(後付費)。即是一種後付費模式,即先使用再付費。一般適用於業務流量波峰波谷差異明顯或臨時測試的場景,可以有效避免資源浪費。

微消息隊列mqtt版費用組成:
按量付費包括:同時在線連接數;消息收發量;訂閱關系數
包年包月包括:連接數上限;消息TPS上限;訂閱關系數上限
計價倍率介紹:

MQTT協議QoS=0且cleanSession=true 1
MQTT協議QoS=0且cleanSession=false 1
MQTT協議QoS=1且cleanSession=true 2
MQTT協議QoS=1且cleanSession=false 5
MQTT協議QoS=2且cleanSession=true 5

3. 阿里雲物聯網平台搭建(5)基礎平台服務的調用

之前一直想要使用mqtt協議模擬tcp協議的實時返回監控參數的功能,經過幾個月的摸索和試驗,終於將同步服務的開發摸透,僅僅看飛燕平台的技術文檔是看不懂的,核心文檔鏈接如下:

1、什麼是rrpc,同步服務如何使用rrpc實現實時返回的效果

https://help.aliyun.com/document_detail/90568.html?spm=5176.11065259.1996646101.searchclickresult.17d42700JKyg9e&aly_as=odhFNfAc

阿里將同步服務使用rrpc

2、服務的數據格式

https://help.aliyun.com/document_detail/89301.html?spm=5176.11065259.1996646101.searchclickresult.17d42700JKyg9e&aly_as=KNMEpUOP

看完文檔還有不懂的同學們,我給你准備了總結:

1.RRPC有專用的topic,服務端的實現,在物的模型服務中有invoke的請求方式和返回結果。

設備端根據文檔1中的訂閱topic與上報topic。上報的數據格式根據文檔2上報。

例子:

1.按照物的服務調用方法請求

2.設備端訂閱到服務的下發,將msgid從topic上面截取下來此處為1214836938775870464

3.將msgid填充到上報topic結尾,數據格式注意param改為data,加上code,其餘數據對照功能定義中的物模型

4.在調試窗口中找到服務調用菜單

顯示上報成功,注意服務的解析與屬性事件不一樣,通過通用列印只能列印出result ok,要進一步解析data出來再列印。

4. 想問一下,如何用MQTT協議搭建一個物聯網空調的阿里雲伺服器,謝謝

MQTT推薦使用EMQ,來自國人開發的產品

5. 在雲伺服器上搭建了mqtt,為什麼手機連接不上mqtt,要怎麼做才能連接上求求大神幫忙

MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,一是租用現成的MQTT伺服器,如阿里雲,網路雲,華為雲等公用的雲平台提供的MQTT服務,使用公用的MQTT伺服器的好處是省事,但如果僅僅用於測試學習還需要注冊帳號,靈活性差些,有的平台還需要付費。另一方法是自己使用開源的MQTT組件來搭建。
MQTT伺服器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT伺服器。
第一步:需要安裝一台linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。
第二步:下載mosquitto需要的依賴
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下載mosquitto並解壓,現在mosquitto官網最新的版本是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就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,
啟動時候加上參數 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto監聽的埠為1883.
這時候我們的MQTT伺服器就搭建好了。可找一個mqtt客戶端來測試一下。
先發布一個主題「home/garden/fountain/2」
內容是「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」

可以看到收到了自己發布的消息。
用wireshark抓包
可以看到抓到了一個MQTT的publish的報文。

6. java 實現串口接收到數據,立馬將接收到的數據通過mqtt上傳到阿里雲。

也不是特別麻煩,你先要清楚串口和伺服器用的什麼協議,假設串口用232,伺服器採用TCP,那麼你需要做的是建立一個客戶端的發送模塊,和一個串口的操作模塊(結合必須要用到多線程,以隊列或者委託來做數據交換);在測試之前一定要保證串口和客戶端發送接收是ok的才能做結合功能。
因為你串口已經做好了,那你需要的是將採集到的數據(字元串)保存到數組中,然後創建一個指向數組的指針p,然後在客戶端模塊里,將發送的數據寫成&p。建議先將數據轉16進制發,應該沒毛病。

7. NE35E MQTT協議對接阿里雲

MQTT通信協議的基本介紹參考文章 NT35 MQTT通信 ,本篇給出阿里雲的基本操作,NT35E通過訂閱阿里雲的主題&發布信息與阿里雲平台相互通信。

登錄阿里雲 → 工作台 → 物聯網平台 → 進入控制台→ 公共實例

阿里雲默認通信協議為MQTT,不需要特殊選擇,用戶按照如下步驟創建自己的產品:

創建產品 → 添加設備 

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

      用戶每定義一類產品都會自動生成對應的Topic列表,當然我們也可以"自定義Topic"便於自己測試。

       指令解析參考《Lierda NT35E&NT26E-CN AT命令手冊》,這里給出使用到的AT指令對應參數說明以便於理解。

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

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

<cloud_type>整型。2 alibaba,其他參數指定其他平台

<data_type>整型。阿里雲平台 1 json數據 

AT+LMQTTCFG="cloud",0,2,1   對應就是對接阿里雲平台,發送json格式的數據

AT+LMQTTCFG=aliauth,<tcpconnectID>[,<proct_key>,<device_name>,<device_secret>]

填充阿里雲平台中設備的三元組信息

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

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

AT+LMQTTOPEN=<tcpconnectID>,<host_name>,<port>

host_name對應阿里雲 "設備信息"→"MQTT連接參數" 中的 "mqttHostUrl"

AT+LMQTTOPEN=0,"a1JszCpjS61.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883

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

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>整型。數據包消息標識符。范圍:0~65535。

<topic>帶雙引號的字元串型。客戶端訂閱或者退訂的主題。長度范圍:0~256 位元組。

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

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

這里注意<topic>對應參數的替換,裡面的deviceName需要替換。

訂閱主題之後,伺服器下發的數據模組就可以正常接收了。模組下發位置

       發布消息在對應的設備目錄下,如果有設備"訂閱"對應的消息,平台"發布"相應的數據設備就可以接收到了。

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

<msgID>整型。 0~65535。任意定義,但<qos>=0 時,該參數值只能為0。

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

<retain>整型 。伺服器是否保存該消息。0 不保存  1 保存

<topic>帶雙引號的字元串型。 客戶端發布消息的主題。長度范圍:0~256 位元組

<msglen>整型 。指定的消息數據長度。范圍:0~1460。

<msg>字元串型。 需要發布的消息數據。

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

       注意剛剛自己創建的主題屬性是" 發布和訂閱 ",所以模組發送該主題的信息,阿里雲也是可以收到的

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

       前面我們通過NT35E與平台進行信息交互,那麼為什麼是這樣填寫對應的參數呢,每個參數對應的說明在阿里雲上是什麼樣的呢,用戶可以查看阿里雲的<幫助文檔>進行確認。

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

一型一密模組端實現方式後續更新。

8. 玩轉 ESP32 + Arino (十六) 通過mqtt協議連接阿里雲

需要用到的庫:

引入"PubSubClient.h"後

打開"PubSubClient.h"

修改如下內容:

關於MQTT協議, 請參考文章: https://zhuanlan.hu.com/p/89057819

請參考我之前整理的文檔:
【騰訊文檔】MQTT連接阿里雲示例(1) https://docs.qq.com/sheet/DWXBaUE9nWmZVaGJX

如果使用了AliyunMqttArino, 就不需要關系協議的報文和加密方式了

首先創建一個mqtt客戶端

返回值: 連接結果

返回: 狀態碼

mqttClient.publish(主題, 內容)

首先, 創建產品:

其次, 為產品添加設備

第三, 查看設備關鍵信息:

創建完後,我們發現系統已經自動創建了一些功能定義

找到產品的功能頁面, 點擊"編輯草稿"

最後發布新的物模型

非常簡單的修改, 只修改了要發送json里的param
注意同步修改param和json的內存佔用大小

9. 阿里雲微消息隊列(MQTT)的基本使用

最近應系統功能需求,采購了一款雲喇叭的物聯網設備,就是插著4G卡那種,可以播放各種語音,仔細閱讀了開發文檔之後發現使用的是MQTT的協議,記錄一下在對接中遇到的各種問題

MQTT是一個輕量的發布訂閱模式消息傳輸協議,專門針對低帶寬和不穩定網路環境的物聯網應用設計。
MQTT特點:

阿里雲的MQTT有兩個版本,這里只說沒有RocketMQ依賴的3.1.1及以上版本。

這里會自動生成用戶名密碼

10. 如何使用 NB-Iot + Arino 通過MQTT協議上傳數據至阿里雲平台

有很多通信模塊只有TCP功能,沒有MQTT功能,比如WIFI,W5500等模塊,還有一些NBIOT模塊,但是又想連接阿里雲物聯網平台,官方提供了操作系統,需要自己移植,很麻煩,比較難看得懂。就在想有沒有一些簡單一定的方法。
心想MQTT是基於TCP的,能否使用TCP轉MQTT?因此就想使用TCP協議然後轉MQTT協議連接阿里雲物聯網平台,經過試驗證明是可以的。

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

先從它數據格式開始分析。首先我們要從後台取出三個信息,我們以這個為例。

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

其實阿里雲物聯網平台的MQTT協議用的就是標準的,不過它加入了自己的認證方式。

MQTT協議需要上傳四個參數,報活時間,clientID,用戶名,密碼。

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

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

用戶名:設備名和秘鑰組成

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

下面我們來介紹一下

MQTT接入都是發十六進制的數據。

么我們發送的時候就是這樣子的一串數據

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

十六進制解釋

數據長度:0x74

協議數據長度 0x00 0x04

協議類型: 0x4d 0x51 0x54 0x54

協議數據: 0x04 0xC0

keepAlive數據: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復制代碼上面的就是連接伺服器的連接包

下面呢,我們來做個發布包(上傳數據到伺服器)

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

十六進制數據解釋

數據頭:0x30

數據長度:0x1D

TopicName數據長度:0009

TopicName數據內容:2f7379732f706f7374

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

閱讀全文

與阿里雲伺服器部署mqtt相關的資料

熱點內容
360命令行 瀏覽:726
程序員騙色 瀏覽:668
cisco2950重啟命令 瀏覽:459
加密貨幣區塊鏈可以增發嗎 瀏覽:290
黃龍公式源碼 瀏覽:773
linux系統ftp伺服器 瀏覽:321
山西配電伺服器機櫃雲主機 瀏覽:452
量化選股模型公式源碼 瀏覽:9
龍卡購車分期怎麼綁app 瀏覽:779
python讀取bios信息 瀏覽:113
程序員老爸初體驗 瀏覽:729
aes加密後長什麼樣子 瀏覽:978
語言有編譯器嗎 瀏覽:31
解壓聲控怎麼調大音量 瀏覽:216
纏論中的高精度畫筆源碼 瀏覽:824
通用計算型雲伺服器 瀏覽:620
程序員手機分享 瀏覽:296
pdfsmart 瀏覽:425
nginx部署php 瀏覽:666
javaaes加密解密代碼 瀏覽:269