一、MQTT協(xié)議簡介
MQTT(消息隊(duì)列遙測(cè)傳輸)是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,是ISO標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。MQTT工作在TCP/IP協(xié)議棧上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況不理想的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。由于MQTT協(xié)議的輕量、簡便、開放的特點(diǎn)使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中使用,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)。MQTT協(xié)議在衛(wèi)星鏈路通信傳感器、醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。
OneNET移動(dòng)云為國內(nèi)主流的云平臺(tái),提供免費(fèi)試用的物聯(lián)網(wǎng)平臺(tái),本文使用小凌派RK2206開發(fā)板實(shí)現(xiàn)基于OpenHarmony的OneNET移動(dòng)云IoT服務(wù)。小凌派RK2206開發(fā)板采用瑞芯微高性能、高性價(jià)比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無線局域網(wǎng)處理器,它可以應(yīng)用于不同的應(yīng)用領(lǐng)域,如物聯(lián)網(wǎng)、可穿戴設(shè)備、家庭自動(dòng)化、云連接等。小凌派RK2206開發(fā)板內(nèi)置WIFI模塊,外部接口豐富,使用一個(gè)小凌派RK2206開發(fā)板就能夠輕松實(shí)現(xiàn)MQTT物聯(lián)網(wǎng)多種應(yīng)用。
二、硬件電路設(shè)計(jì)
如圖1所示,為小凌派RK2206開發(fā)板支持的外部接口,本文使用小凌派RK2206開發(fā)板內(nèi)置的WIFI和MQTT服務(wù)器通信。
圖1 小凌派RK2206開發(fā)板
三、軟件設(shè)計(jì)
主程序設(shè)計(jì)
在iot_onenet_example函數(shù)中,通過LOS_TaskCreate函數(shù)創(chuàng)建iot_onenet_thread線程,并設(shè)置線程優(yōu)先級(jí)、線程堆棧大小等參數(shù)。
static void iot_onenet_example(){
unsigned int ret = LOS_OK;
unsigned int thread_id1;
TSK_INIT_PARAM_S task1 = {0};
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)iot_onenet_thread;
task1.uwStackSize = 10240;
task1.pcName = "iot_onenet_thread";
task1.usTaskPrio = 24;
ret = LOS_TaskCreate(&thread_id1, &task1);
if (ret != LOS_OK)
{
printf("Falied to create iot_onenet_thread ret:0x%x\n", ret);
return;
}
}
IoT OneNET服務(wù)程序設(shè)計(jì)
iot_onenet_thread函數(shù)中,開發(fā)板先連接WIFI,通過WIFI和OneNET IoT平臺(tái)通信;WIFI連接成功后,初始化網(wǎng)絡(luò),初始化MQTT客戶端,設(shè)置命令接收回調(diào)函數(shù);初始化完成后,成功連接OneNET IoT平臺(tái)。
void iot_onenet_thread(){
unsigned int data = 0;
/*wifi連接*/
SetWifiModeOn();
device_info_init(ONENET_INFO_DEVID, ONENET_INFO_PROID, ONENET_INFO_AUTH, ONENET_INFO_APIKEY, ONENET_MASTER_APIKEY);
onenet_mqtt_init();
onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb);
while (1)
{
onenet_mqtt_upload_digit("data", data++);
sleep(1);
}
}
四、編譯測(cè)試
登錄OneNET平臺(tái)
設(shè)備連接OneNET平臺(tái)前,需要做一些準(zhǔn)備工作;登錄OneNET平臺(tái),在平臺(tái)注冊(cè)個(gè)人用戶賬號(hào),并且需要實(shí)名認(rèn)證后才可以正常使用。如圖2所示,為OneNET平臺(tái)地址:https://open.iot.10086.cn。
圖2 OneNET平臺(tái)地址
創(chuàng)建產(chǎn)品
在OneNET平臺(tái)注冊(cè)個(gè)人用戶賬號(hào)并進(jìn)行登錄,登錄后進(jìn)入控制臺(tái)首頁,點(diǎn)擊全部產(chǎn)品服務(wù),選擇多協(xié)議接入,如圖3所示。
圖3 控制臺(tái)頁面
進(jìn)入多協(xié)議接入頁面,點(diǎn)擊添加產(chǎn)品按鍵,添加產(chǎn)品,如圖4所示。
圖4 多協(xié)議接入頁面
進(jìn)入添加產(chǎn)品頁面,按照要求填寫產(chǎn)品信息,點(diǎn)擊確定,如圖5所示。
圖5 添加產(chǎn)品
添加產(chǎn)品成功后,進(jìn)入產(chǎn)品概況頁面,可以看到創(chuàng)建的產(chǎn)品,如圖6所示。
圖6 產(chǎn)品概況
添加設(shè)備
點(diǎn)擊側(cè)邊欄設(shè)備列表頁面,點(diǎn)擊添加設(shè)備,如圖7所示。
圖7 添加設(shè)備
按照要求填入設(shè)備名稱和鑒權(quán)信息,點(diǎn)擊添加設(shè)備,如圖8所示。
圖8 添加設(shè)備詳情頁
成功創(chuàng)建設(shè)備后,側(cè)邊欄點(diǎn)擊設(shè)備列表,可以查看到創(chuàng)建的設(shè)備信息,如圖9所示。
圖9 設(shè)備列表頁面
點(diǎn)擊詳情,進(jìn)入剛添加的設(shè)備,可以查看到設(shè)備的詳細(xì)信息,點(diǎn)擊添加APIKey,按照要求填寫APIKey,如圖10所示。
圖10 添加APIKey
代碼設(shè)備信息修改
點(diǎn)擊側(cè)邊欄產(chǎn)品概況頁面,查看產(chǎn)品ID和Master-APIkey,如圖11所示。
圖11 產(chǎn)品ID和Master-APIkey
對(duì)應(yīng)修改如下代碼中的值,其中,ONENET_INFO_PROID為產(chǎn)品ID,ONENET_MASTER_APIKEY為Master-APIkey。
#define ONENET_INFO_PROID "535158"
#define ONENET_MASTER_APIKEY "RhPzbaX813t=Uyjxb9Cyf=GdXhw="
點(diǎn)擊側(cè)邊欄設(shè)備列表頁面,點(diǎn)擊進(jìn)入設(shè)備詳情頁面,查看設(shè)備ID詳情,如圖12所示。
圖12 設(shè)備ID詳情
對(duì)應(yīng)修改如下代碼的值,其中,ONENET_INFO_DEVID為設(shè)備ID,ONENET_INFO_AUTH為鑒權(quán)信息,ONENET_INFO_APIKEY為APIKey。
#define ONENET_INFO_DEVID "970784873"
#define ONENET_INFO_AUTH "oneNet2022"
#define ONENET_INFO_APIKEY "E=fejcLgjl2tuyw=Aqy2aBTMRFc="
WIFI連接
修改代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網(wǎng)絡(luò),設(shè)備通過WIFI訪問阿里云IoT平臺(tái)。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
運(yùn)行結(jié)果
例程代碼編譯燒寫到開發(fā)板后,按下開發(fā)板的RESET按鍵,通過串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
此時(shí)登錄OneNET平臺(tái),點(diǎn)擊進(jìn)入設(shè)備詳情頁面,可以看到設(shè)備的當(dāng)前狀態(tài)為在線。如圖13所示。
圖13 設(shè)備上線OneNET平臺(tái)
點(diǎn)擊進(jìn)入設(shè)備詳情頁面,點(diǎn)擊數(shù)據(jù)流展示頁面,可以查看到開發(fā)板上報(bào)的數(shù)據(jù)在不斷刷新。
圖14 數(shù)據(jù)上報(bào)OneNET平臺(tái)
進(jìn)入命令下發(fā)頁面,點(diǎn)擊下發(fā)命令按鍵,下發(fā)命令,如圖15所示。
圖15 下發(fā)命令
選擇字符串命令,下發(fā)hello到開發(fā)板,如圖16所示。
圖16 下發(fā)字符串命令
此時(shí),開發(fā)板串口會(huì)打印接收到的字符串信息,如下所示。
recv data is hello
-
IOT
+關(guān)注
關(guān)注
187文章
4282瀏覽量
200551 -
OpenHarmony
+關(guān)注
關(guān)注
26文章
3820瀏覽量
18102
發(fā)布評(píng)論請(qǐng)先 登錄
HarmonyOS5云服務(wù)技術(shù)分享--ArkTS調(diào)用函數(shù)
采用華為云 Flexus 云服務(wù)器 X 實(shí)例部署 MQTT 服務(wù)器完成設(shè)備上云

梯度科技成為AI Cloud MSP技術(shù)服務(wù)實(shí)驗(yàn)室首批成員單位
全新NVIDIA NIM微服務(wù)實(shí)現(xiàn)突破性進(jìn)展
api驅(qū)動(dòng)的云服務(wù)是什么意思?
工業(yè)智能網(wǎng)關(guān)快速接入移動(dòng)OneNET平臺(tái)配置操作

告別繁瑣的云平臺(tái)開發(fā)!IoT_CLOUD之 百度云

一庫打通所有云平臺(tái)!合宙IoT_CLOUD之【騰訊云】
輕松上云怎么操作?IoT_CLOUD之中移OneNET

4G模組如何輕松上云?合宙IoT_CLOUD之中移OneNET

工業(yè)物聯(lián)網(wǎng)(IOT)云平臺(tái)是什么
優(yōu)易通DTU連接OneNET實(shí)現(xiàn)數(shù)據(jù)可視化示例

Air780EP模塊 AT開發(fā)-MQTT接入OneNET移動(dòng)物聯(lián)網(wǎng)平臺(tái)應(yīng)用指南

評(píng)論