當前位置:首頁 » 雲伺服器 » 伺服器如何回復mqtt指令

伺服器如何回復mqtt指令

發布時間: 2023-06-03 21:05:38

❶ 在雲伺服器上搭建了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的報文。

❷ 使用 Node-RED 處理 MQTT 數據

本文將介紹使用 Node-RED 連接到 MQTT 伺服器,並對 MQTT 數據進行過濾和處理後再將其發送至 MQTT 伺服器的完整操作流程。讀者可以快速了解如何使用 Node-RED 對 MQTT 數據進行簡單的流處理。

Node-RED 無論是在你本地的電腦上,還是樹莓派等設備,亦或是雲端伺服器,都可以快速安裝和使用,下面將使用兩種比較常見的安裝方式:

使用 npm 進行全局安裝:

使用 Docker 進行安裝:

如果使用的是 npm 進行的全局安裝,那麼在提示安裝成功後,只需要在全局運行 node-red 命令就可以立即啟動 Node-RED。

無論是使用 Docker 還是 npm 在啟動成功後,我們只需要打開瀏覽器,輸入當前地址加 1880 埠號,即可打開 Node-RED 的瀏覽器編輯器頁面,例如在本地運行的話,打開瀏覽器,輸入 http://127.0.0.1:1880,當看到如下圖所示頁面後,說明 Node-RED 已經成功啟動:

本文將使用 EMQ 提供的 免費公共 MQTT 伺服器,該服務基於 MQTT 物聯網雲平台 - EMQX Cloud 創建,伺服器接入信息如下:

在下面的功能演示中,我們將提供一個使用 Node-RED 來處理接收到的包含溫濕度信息的 JSON 數據,然後對溫度值進行規則判斷,當溫度發生改變的時候,就將當前發生改變的溫度值通過 MQTT 再次發送出去的簡單使用案例。

我們首先在左側菜單欄中,拖拽一個 MQTT in 的節點到頁面中,雙擊節點後,右側出現一個編輯 MQTT 節點的配置頁面,我們根據內容提示,新建一個連接信息後,再填入 MQTT 的其它連接信息後,點擊 Done 按鈕後,即可保存該節點信息。

接入數據:我們拖拽一個 JSON 節點到頁面中,可以在 JSON 節點的配置頁面中,配置一個 Action,我們設置為 Always convert to JavasScript Object ,因為我們無法確定發送過來的數據是一個 JSON 格式的數據還是一個 JSON 字元串,因此第一步都將接收到的消息進行一個 JSON 轉換。配置完成後,我們將該節點與 MQTT in 節點進行連接。

過濾數據

我們配置完成格式化發送過來的消息數據後,我們就可以拖拽一個 filter 節點到頁面中,同樣雙擊節點後,在配置頁面中配置規則,我們先選擇一個 Mode,我們設置為 blcok unless value changes ,過濾規則為需要當前接收到數據的值發生改變,因為目前數據為 JSON 格式,我們判斷的是 JSON 數據內的某一個值,因此我們需要在 Property 這里設置值為 msg.payload.temperature 配置完成後我們點擊 Done 按鈕來保存數據過濾節點的配置,最後將該節點連接到上一步配置完成後的 JSON 節點。

使用模版

當過濾完數據後,同樣拖拽一個 template 節點到頁面中,雙擊節點後來配置模版內容,使過濾完成後的數據,能通過模版將數據進行輸出。當然也可以不需要這個步驟,直接將過濾後的數據進行輸出。

完成以上對數據的處理和過濾後,最後我們再來將處理完成後的數據使用 MQTT 將其發送出去,拖拽一個 MQTT out 的節點到頁面中,填入和 MQTT in 節點相同的連接信息,配置一個用戶接收數據的 Topic,最後保存完成後,再將其和 template 節點進行連接,點擊右上角的 Deploy 按鈕,即可對當前規則應用進行在線部署。

在完成整個流數據處理的功能編排以後,我們使用 MQTT 5.0 客戶端工具 - MQTT X 來測試和驗證該功能的可用性。我們新建一個連接,連接到剛才在 Node-RED 中配置的 MQTT 雲服務地址,然後輸入 MQTT in 節點內的 Topic 來發送一條消息,使 Node-RED 能夠接收到我們發送的 MQTT 數據。

然後我們再在 MQTT X 中訂閱一個在 MQTT out 節點內配置的 Topic,用於接收處理過的消息數據。當發送一條包含了溫濕度的消息數據後,我們可以接收到一條根據我們設定的消息模版發送過來的消息,再次發送就無法接收到。

因為此時溫度值沒有發生變化,當我們再次修改溫度值後,就會發現我們又接收到了一條包含提醒溫度值發生變化的消息。

至此,我們完成了安裝並使用 Node-RED 連接到 MQTT 雲服務,以及對 MQTT 消息數據進行過濾和處理,最後再將處理完成後的數據消息發送至 MQTT 伺服器的全部流程。

Node-RED 的交互和使用方式,即用 UI 方式描述通用業務邏輯,可以降低非專業開發人員的上手門檻,使用一個可視化工具快速地創建需要的復雜執行任務,可以通過簡單 Node 即節點連接構建出復雜的任務,特別是針對一些物聯網的應用場景,都很有幫助。

❸ 海為物聯雲HMI如何設置MQTT

首先需要搭建MQTT伺服器,然後搭建MySQL資料庫,然後使用海為組態寫段程序,最後配置客戶端驗證即可。具體可以參考內容 Haiwell(海為)HMI/CBOX/IPC MQTT 配置應用教程網頁鏈接

❹ 黑群暉怎樣搭建MQTT伺服器

1、打開群暉Docker,注冊表搜索:mqtt;
2、點擊下載好的鏡像文件創建容器,輸入容器名字,點擊高級設置
3、勾選啟用自動重新啟動
4、點擊網路—-勾選與docker host相同的網路,點擊應用,一直下一步直到創建完成

❺ MQTT簡單介紹

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基於發布/訂閱模式的"輕量級"通訊協議,該協議構建於TCP/IP協議上。好比你給好友發送一封電子郵件,發送完成後你可以去做別的事情,收件人也不必立刻響應,可以在自己有空的時候查看郵件,是一個典型的非同步發布/訂閱場景。而另一種典型的同步請求/回答場景,可以用接打電話的場景來類比。

MQTT的設計遵循以下的原則:

為了滿足不同的場景,MQTT支持三種不同級別的服務質量(Quality of Service,QoS)為不同場景提供消息可靠性:

MQTT擁有14種不同的消息類型:

實現MQTT協議需要客戶端和伺服器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發布者(Publish)、代理(Broker)(伺服器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是伺服器,消息發布者可以同時是訂閱者。

MQTT傳輸的消息分為:主題(Topic)和負載(payload)兩部分:

MQTT會構建底層網路傳輸:它將建立客戶端到伺服器的連接,提供兩者之間的一個有序的、無損的、基於位元組流的雙向傳輸。

當應用數據通過MQTT網路發送時,MQTT會把與之相關的服務質量(QoS)和主題名(Topic)相關連。

一個使用MQTT協議的應用程序或者設備,它總是建立到伺服器的網路連接。客戶端可以:

MQTT伺服器以稱為"消息代理"(Broker),可以是一個應用程序或一台設備。它是位於消息發布者和訂閱者之間,它可以:

訂閱包含主題篩選器(Topic Filter)和最大服務質量(QoS)。訂閱會與一個會話(Session)關聯。一個會話可以包含多個訂閱。每一個會話中的每個訂閱都有一個不同的主題篩選器。

每個客戶端與伺服器建立連接後就是一個會話,客戶端和伺服器之間有狀態交互。會話存在於一個網路之間,也可能在客戶端和伺服器之間跨越多個連續的網路連接。

連接到一個應用程序消息的標簽,該標簽與伺服器的訂閱相匹配。伺服器會將消息發送給訂閱所匹配標簽的每個客戶端。

一個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。

消息訂閱者所具體接收的內容。

MQTT協議中定義了一些方法(也被稱為動作),來於表示對確定資源所進行操作。這個資源可以代表預先存在的數據或動態生成數據,這取決於伺服器的實現。通常來說,資源指伺服器上的文件或輸出。主要方法有:

❻ 怎麼將消息發送到mqtt代理伺服器

通過Cocoa Pods添加MQTTKit

MQTTKit在github上鏈接https://github.com/NormanLeeIOS/MQTTKit#send-a-message,down下來。

cd到工程目錄,輸入pod install,用xcode打開工程的打開xcworkspace擴展名的文件。

如果不是MQTTKit存在更新的版本,則輸入pod update。

新建一個MQTT的服務請求

NSString *clientID = ...
MQTTClient *client = [[MQTTClient alloc] initWithClientId:clientID];

發送消息,每次發送消息包括目標host和本地MQTT消息.具體MQTT格式消息見代碼。這里Host可以是Server的IP,不需要host表解析。

// connect to the MQTT server
[self.client connectToHost:@"iot.eclipse.org"
completionHandler:^(NSUInteger code) {
if (code == ConnectionAccepted) {
// when the client is connected, send a MQTT message
[self.client publishString:@"Hello, MQTT"
toTopic:@"/MQTTKit/example"
withQos:AtMostOnce
retain:NO
completionHandler:^(int mid) {
NSLog(@"message has been delivered");
}];
}
}];

訂閱主題並接受MQTT格式的消息,這部分在viewdidload中實現。

// define the handler that will be called when MQTT messages are received by the client
[self.client setMessageHandler:^(MQTTMessage *message) {
NSString *text = [message.payloadString];
NSLog(@"received message %@", text);
}];

// connect the MQTT client
[self.client connectToHost:@"iot.eclipse.org"
completionHandler:^(MQTTConnectionReturnCode code) {
if (code == ConnectionAccepted) {
// when the client is connected, subscribe to the topic to receive message.
[self.client subscribe:@"/MQTTKit/example"
withCompletionHandler:nil];
}
}];

斷開連接

[self.client :^(NSUInteger code) {
// The client is disconnected when this completion handler is called
NSLog(@"MQTT client is disconnected");
}];

整個連接建立、發送消息、接受消息、斷開連接都是通過Block的消息機制來實現,因此需要對block有很好地理解。

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:521
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:868
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91