在這次的項(xiàng)目開始時(shí),我們使用了ESP32開發(fā)板,當(dāng)然,需要給設(shè)備聯(lián)網(wǎng),這個(gè)在代碼中添加,
在使用Easy IoT時(shí),需要連接一個(gè)可以訪問網(wǎng)絡(luò)的WiFi,
在使用SIoT時(shí)只需要提供一個(gè)WiFi就可以,形成局域網(wǎng),手機(jī)電腦的WiFi都可以
目錄
一、MQTT概念
1.基本特點(diǎn)
2.基本概念
MQTT 客戶端
MQTT 服務(wù)器
主題(Topic)
二、Easy IoT
1.如何注冊(cè)和配置Easy Iot
2.代碼實(shí)現(xiàn)
3.在電腦上通過Easy Iot管理掌控板
4.在手機(jī)上通過Easy Iot管理掌控板
三、SIoT
?1.運(yùn)行服務(wù)器
2.發(fā)送端代碼
3.接收端代碼?
4.查看我們的設(shè)備信息
一、MQTT概念
MQTT 全稱為 Message Queuing Telemetry Transport(消息隊(duì)列遙測(cè)傳輸)是一種基于發(fā)布/訂閱范式的“輕量級(jí)”消息協(xié)議,由 IBM 發(fā)布。
MQTT 可以被解釋為一種低開銷,低帶寬占用的即時(shí)通訊協(xié)議,可以用極少的代碼和帶寬的為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),它適用于硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的環(huán)境下,因此 MQTT 協(xié)議在 IoT(Internet of things,物聯(lián)網(wǎng)),小型設(shè)備應(yīng)用,移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。
IoT 設(shè)備要運(yùn)作,就必須連接到互聯(lián)網(wǎng),設(shè)備才能相互協(xié)作,以及與后端服務(wù)協(xié)同工作。而互聯(lián)網(wǎng)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議是 TCP/IP,MQTT 協(xié)議是基于 TCP/IP 協(xié)議棧而構(gòu)建的,因此它已經(jīng)慢慢的已經(jīng)成為了 IoT 通訊的標(biāo)準(zhǔn)。
1.基本特點(diǎn)
?????????MQTT是一種發(fā)布/訂閱傳輸協(xié)議,基本原理和實(shí)現(xiàn)如下;
MQTT 協(xié)議提供一對(duì)多的消息發(fā)布,可以解除應(yīng)用程序耦合,信息冗余小。該協(xié)議需要客戶端和服務(wù)端,而協(xié)議中主要有三種身份:發(fā)布者(Publisher)、代理(Broker,服務(wù)器)、訂閱者(Subscriber)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,而消息發(fā)布者可以同時(shí)是訂閱者,實(shí)現(xiàn)了生產(chǎn)者與消費(fèi)者的脫耦
2.基本概念
-
MQTT 客戶端
一個(gè)使用 MQTT 協(xié)議的設(shè)備、應(yīng)用程序等,它總是建立到服務(wù)器的網(wǎng)絡(luò)連接。
- 可以發(fā)布信息,其他客戶端可以訂閱該信息
- 訂閱其它客戶端發(fā)布的消息
- 退訂或刪除應(yīng)用程序的消息
- 斷開與服務(wù)器連接
-
MQTT 服務(wù)器
MQTT 服務(wù)器也稱為 Broker(消息代理),以是一個(gè)應(yīng)用程序或一臺(tái)設(shè)備。它是位于消息發(fā)布者 和訂閱者之間
- 接受來自客戶端的網(wǎng)絡(luò)連接
- 接受客戶端發(fā)布的應(yīng)用信息
- 處理來自客戶端的訂閱和退訂請(qǐng)求
- 向訂閱的客戶轉(zhuǎn)發(fā)應(yīng)用程序消息
-
主題(Topic)
- 連接到一個(gè)應(yīng)用程序消息的標(biāo)簽,該標(biāo)簽與服務(wù)器的訂閱相匹配。服務(wù)器會(huì)將消息發(fā)送給訂閱所匹配標(biāo)簽的每個(gè)客戶端。?
- ?要訂閱的主題。一個(gè)主題可以有多個(gè)級(jí)別,級(jí)別之間用斜杠字符分隔。例如,/world 和 emq/emqtt/emqx 是有效的主題。
- 訂閱者的Topic name支持通配符#和+ : # 支持一個(gè)主題內(nèi)任意級(jí)別話題,+ 只匹配一個(gè)主題級(jí)別的通配符,這里可能解釋的不到位,請(qǐng)讀者查閱資料
- 客戶端成功訂閱某個(gè)主題后,代理會(huì)返回一條 SUBACK 消息,其中包含一個(gè)或多個(gè) returnCode參數(shù)
二、Easy IoT
Easy Iot是一個(gè)旨在簡(jiǎn)化和加速物聯(lián)網(wǎng)設(shè)備的連接和管理的物聯(lián)網(wǎng)平臺(tái)。它提供了易于使用的工具和界面,使用戶能夠輕松地將各種設(shè)備和傳感器連接到云平臺(tái),并實(shí)時(shí)監(jiān)控和控制這些設(shè)備。平臺(tái)使用MQTT協(xié)議與開發(fā)板進(jìn)行通信。MQTT是一種輕量級(jí)的通信協(xié)議,專為物聯(lián)網(wǎng)設(shè)備和網(wǎng)絡(luò)環(huán)境設(shè)計(jì)。它采用發(fā)布-訂閱模式,其中消息發(fā)布者(可以是手機(jī),也可以是物聯(lián)網(wǎng)設(shè)備)將消息發(fā)送到特定的主題(Topic),而消息訂閱者(可以是手機(jī),也可以是物聯(lián)網(wǎng)設(shè)備)則訂閱感興趣的主題,以接收相應(yīng)的消息。
理解了發(fā)布者和訂閱者的概念,也就好理解本實(shí)驗(yàn)設(shè)置Topic的用途了。Topic0的發(fā)布者是電腦,發(fā)布內(nèi)容是指令,訂閱者是開發(fā)板,用于接收電腦指令。
1.如何注冊(cè)和配置Easy Iot
http://iot.dfrobot.com.cnhttp://iot.dfrobot.com.cn
(1)在首頁右上角選擇“注冊(cè)”,按提示注冊(cè)賬號(hào)
(2)登錄平臺(tái)后選擇“工作間”,在左邊查看賬號(hào)、密碼信息?(點(diǎn)擊小眼睛就可以看得到)
(3)新添加1個(gè)設(shè)備,命名為“送文件機(jī)械人”,了解Topic概念,下一步編程會(huì)用到?
2.代碼實(shí)現(xiàn)
#include <DFRobot_Iot.h>
// 函數(shù)聲明
void obloqMqttEventT0(String& message);
// 靜態(tài)常量
const String topics[5] = {"vUbidcvIg","","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 創(chuàng)建對(duì)象
DFRobot_Iot myIot;
// 主程序開始
void setup() {
Serial.begin(9600);
myIot.setMqttCallback(msgHandles);
myIot.wifiConnect("Xiaomi 13", "123456789");
while (!myIot.wifiStatus()) {}
myIot.init("iot.dfrobot.com.cn","AvPM-----","","AvPGi-----",topics,1883);
myIot.connect();
Serial.println("hello");
while (!myIot.connected()) {}
myIot.publish(topic_0, "hello");
}
void loop() {
}
// 事件回調(diào)函數(shù)
void obloqMqttEventT0(String& message) {
Serial.print(message);
}
在這里把vUbidcvIg改成自己的Easy IoT的主題就行
?
const String topics[5] = {"vUbidcvIg","","","",""};
在這里把"AvPM-----"改為自己的lot_id,vvv"AvPGi-----"改為自己的lot_pwd?
?
?
myIot.init("iot.dfrobot.com.cn","AvPM-----","","AvPGi-----",topics,1883);
?
?
3.在電腦上通過Easy Iot管理掌控板
登錄Easy Iot平臺(tái)查看Topic0接收到的信息,也可以在這里發(fā)送信息
在這里我們就可以看到開發(fā)板發(fā)送過來的信息?
4.在手機(jī)上通過Easy Iot管理掌控板
在手機(jī)微信搜索“Easy Iot”小程序,用在電腦上注冊(cè)的賬號(hào)登錄平臺(tái),界面和電腦有一定區(qū)別,但操作邏輯和功能是一樣的,可以按照博主的步驟來做。
三、SIoT
SIoT為一個(gè)為教育定制的跨平臺(tái)的開源MQTT服務(wù)器程序,S指科學(xué)(Science)、簡(jiǎn)單(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系統(tǒng),一鍵啟動(dòng),無需用戶注冊(cè)或者系統(tǒng)設(shè)置即可使用。
SIoT為“虛谷物聯(lián)”項(xiàng)目的核心軟件,是為了幫助中小學(xué)生理解物聯(lián)網(wǎng)原理,并且能夠基于物聯(lián)網(wǎng)技術(shù)開發(fā)各種創(chuàng)意應(yīng)用。因?yàn)槠渲攸c(diǎn)關(guān)注物聯(lián)網(wǎng)數(shù)據(jù)的收集和導(dǎo)出,是采集科學(xué)數(shù)據(jù)的最好選擇之一。
這里博主分享了SIoT的包,下載使用即可,也可以去官網(wǎng)下載
鏈接:https://pan.baidu.com/s/1rfKQJz64B0NjTIH2aO4Ecg?pwd=1ozm?提取碼:1ozmhttps://pan.baidu.com/s/1rfKQJz64B0NjTIH2aO4Ecg?pwd=1ozm
?1.運(yùn)行服務(wù)器
下載后打開我們的目錄下的應(yīng)用程序
?在最下面找到127.0.0.1
?然后在瀏覽器中復(fù)制改地址,在后面加上:8080(要注意這里是英文輸入法才行)??
這里的賬號(hào):siot,密碼是:dfrobot
2.發(fā)送端代碼
import siot
import time
SERVER = "127.0.0.1" #MQTT服務(wù)器IP
CLIENT_ID = "" #在SIoT上,CLIENT_ID可以留空
IOT_pubTopic = 'xzbot/001' #“topic”為“項(xiàng)目名稱/設(shè)備名稱”
IOT_UserName ='siot' #用戶名
IOT_PassWord ='dfrobot' #密碼
siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)
siot.connect()
siot.loop()
a= ''
try:
while True:
a=str(input('請(qǐng)輸入:'))
siot.publish(IOT_pubTopic, "value %s"%a)
print(a)
except:
siot.stop()
print("disconnect seccused")
3.接收端代碼?
import siot
import time
SERVER = "127.0.0.1" #MQTT服務(wù)器IP
CLIENT_ID = "" #在SIoT上,CLIENT_ID可以留空
IOT_pubTopic = 'xzbot/001' #“topic”為“項(xiàng)目名稱/設(shè)備名稱”
IOT_UserName ='siot' #用戶名
IOT_PassWord ='dfrobot' #密碼
def sub_cb(client, userdata, msg):
a=str(msg.payload)
#print("\nTopic:" + str(msg.topic) + " Message:" + a)
print(a[-2])
siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)
siot.connect()
siot.subscribe(IOT_pubTopic, sub_cb)
siot.loop()
try:
while True:
pass
except:
siot.stop()
print("disconnect seccused")
4.查看我們的設(shè)備信息
打開我們的設(shè)備名稱
?
在這里可以看到開發(fā)板端發(fā)送過來的信息文章來源:http://www.zghlxwxcb.cn/news/detail-762599.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-762599.html
到了這里,關(guān)于物聯(lián)網(wǎng)MQTT通信------部署Easy IoT、SIoT的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!