點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們
王維平
OpenHarmony知識(shí)體系工作組

什么是MQTT
MQTT的基本原理


MQTT客戶端開(kāi)發(fā)流程

//訂閱的回調(diào)函數(shù)
void messageArrived(MessageData *data)
{
printf("Message arrived on topic %.*s: %.*s
", data->topicName->lenstring.len,
data->topicName->lenstring.data, data->message->payloadlen, data->message->payload);
}
//主流程函數(shù)
static void MQTTDemoTask(void)
{
WifiConnect("BearPi", "123456789");
printf("Starting ...
");
int rc, count = 0;
MQTTClient client;
NetworkInit(&network);
printf("NetworkConnect ...
");
NetworkConnect(&network, MQTT_SERVERIP, MQTT_SERVERPORT);//本地電腦作為消息代理 此處為電腦IP
printf("MQTTClientInit ...
");
//1-------------創(chuàng)建客戶端對(duì)象
MQTTClientInit(&client, &network, MQTT_CMD_TIMEOUT_MS, sendBuf, sizeof(sendBuf), readBuf, sizeof(readBuf));
MQTTString clientId = MQTTString_initializer;
clientId.cstring = "bearpi";
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.clientID = clientId;
data.willFlag = 0;
data.MQTTVersion = MQTT_VERSION;
data.keepAliveInterval = MQTT_KEEP_ALIVE_MS;
data.cleansession = 1;
printf("MQTTConnect ...
");
//2-------------連接服務(wù)端
rc = MQTTConnect(&client, &data);
if (rc != 0) {
printf("MQTTConnect: %d
", rc);
NetworkDisconnect(&network);
MQTTDisconnect(&client);
osDelay(MQTT_DELAY_2S);
}
printf("MQTTSubscribe ...
");
//3-------------訂閱主題substopic
rc = MQTTSubscribe(&client, "substopic", MQTT_QOS, messageArrived);
if (rc != 0) {
printf("MQTTSubscribe: %d
", rc);
osDelay(MQTT_DELAY_2S);
}
while (++count) {
MQTTMessage message;
char payload[30];
message.qos = MQTT_QOS;
message.retained = 0;
message.payload = payload;
(void)sprintf_s(payload, sizeof(payload), "message number %d", count);
message.payloadlen = strlen(payload);
//4------------發(fā)布pubtopic主題
if ((rc = MQTTPublish(&client, "pubtopic", &message)) != 0) {
printf("Return code from MQTT publish is %d
", rc);
NetworkDisconnect(&network);
MQTTDisconnect(&client);
}
osDelay(MQTT_DELAY_500_MS);
}
}
MQTT實(shí)操驗(yàn)證







NetworkConnect(&network, 192.168.120.137, 1883);//本地電腦作為消息代理 此處為電腦IP Mosquitto相匹配
printf("Starting ...
");
NetworkInit(&network);
printf("NetworkConnect ...
");
NetworkConnect(&network, MQTT_SERVERIP, MQTT_SERVERPORT);//本地電腦作
printf("MQTTClientInit ...
");
//1-------------創(chuàng)建客戶端對(duì)象
MQTTClientInit(&client, &network, MQTT_CMD_TIMEOUT_MS, sendBuf, sizeof(sendBuf), readBuf, sizeof(readBuf));
printf("MQTTConnect ...
");
//2-------------連接服務(wù)端
rc = MQTTConnect(&client, &data);
printf("MQTTSubscribe ...
");
//3-------------訂閱主題substopic
rc = MQTTSubscribe(&client, "substopic", MQTT_QOS, messageArrived);
(void)sprintf_s(payload, sizeof(payload), "message number %d", count);
//4------------循環(huán)發(fā)布pubtopic主題 內(nèi)容為message number+connt的計(jì)數(shù)值
MQTTPublish(&client, "pubtopic", &message)
//訂閱的回調(diào)函數(shù)輸出以下內(nèi)容
printf("Message arrived on topic %.*s: %.*s
", data->topicName->lenstring.len,
data->topicName->lenstring.data,data->message->payloadlen,data->message->payload);


總結(jié)
相關(guān)鏈接
小熊派開(kāi)發(fā)板學(xué)習(xí)路徑:
https://growing.openharmony.cn/mainPlay/learnPathMaps?id=19
小熊派開(kāi)發(fā)板MQTT文檔:
https://gitee.com/bearpi/bearpi-hm_nano/blob/master/applications/BearPi/BearPi-HM_Nano/sample/D5_iot_mqtt/README.md
Windows + mosquitto搭建MQTT Broker:
https://blog.csdn.net/wallace89/article/details/125617330
OpenHarmony源碼獲取:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/sourcecode-acquire.md
OpenHarmony三方庫(kù)MQTT:
https://gitee.com/openharmony-tpc/talkweb_mqtt
OpenHarmony知識(shí)體系工作組智慧家居開(kāi)發(fā)樣例
https://gitee.com/openharmony-sig/knowledge_demo_smart_home
使用MQTT協(xié)議連華為IOT平臺(tái)
https://gitee.com/bearpi/bearpi-hm_nano/blob/master/applications/BearPi/BearPi-HM_Nano/sample/D6_iot_cloud_oc/README.md
原文標(biāo)題:OpenHarmony開(kāi)發(fā)之MQTT講解
文章出處:【微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
鴻蒙
+關(guān)注
關(guān)注
59文章
2532瀏覽量
43793 -
OpenHarmony
+關(guān)注
關(guān)注
28文章
3836瀏覽量
18189
原文標(biāo)題:OpenHarmony開(kāi)發(fā)之MQTT講解
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制ADC外設(shè)

鴻蒙北向開(kāi)發(fā)OpenHarmony4.1 DevEco Studio開(kāi)發(fā)工具安裝與配置

MQTT協(xié)議深度應(yīng)用:Air780E模組AT指令的創(chuàng)新實(shí)踐

OpenHarmony應(yīng)用開(kāi)發(fā)精品課程重磅來(lái)襲

MQTT應(yīng)用:Air780EP低功耗4G模組AT開(kāi)發(fā)

觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板成功適配OpenHarmony5.0 Release,開(kāi)啟新征程

MQTT調(diào)試助手中文版(物聯(lián)網(wǎng)開(kāi)發(fā)必備)
基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):HelloOpenharmony

OpenHarmony 明星開(kāi)發(fā)板和應(yīng)用招募啟動(dòng),等你來(lái)!
基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):簡(jiǎn)易計(jì)數(shù)器
合宙Air780EP模塊——AT指令MQTT接入OneNET開(kāi)發(fā)指南

MQTT應(yīng)用看這篇!合宙Air780EP_LuatOS_MQTT應(yīng)用指南

評(píng)論