一、MQTT協(xié)議簡介
MQTT(消息隊(duì)列遙測傳輸)是一個基于客戶端-服務(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移動云為國內(nèi)主流的云平臺,提供免費(fèi)試用的物聯(lián)網(wǎng)平臺,本文使用小凌派RK2206開發(fā)板實(shí)現(xiàn)基于OpenHarmony的OneNET移動云IoT服務(wù)。小凌派RK2206開發(fā)板采用瑞芯微高性能、高性價(jià)比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無線局域網(wǎng)處理器,它可以應(yīng)用于不同的應(yīng)用領(lǐng)域,如物聯(lián)網(wǎng)、可穿戴設(shè)備、家庭自動化、云連接等。小凌派RK2206開發(fā)板內(nèi)置WIFI模塊,外部接口豐富,使用一個小凌派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)先級、線程堆棧大小等參數(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平臺通信;WIFI連接成功后,初始化網(wǎng)絡(luò),初始化MQTT客戶端,設(shè)置命令接收回調(diào)函數(shù);初始化完成后,成功連接OneNET IoT平臺。
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);
}
}
四、編譯測試
登錄OneNET平臺
設(shè)備連接OneNET平臺前,需要做一些準(zhǔn)備工作;登錄OneNET平臺,在平臺注冊個人用戶賬號,并且需要實(shí)名認(rèn)證后才可以正常使用。如圖2所示,為OneNET平臺地址:https://open.iot.10086.cn。

圖2 OneNET平臺地址
創(chuàng)建產(chǎn)品
在OneNET平臺注冊個人用戶賬號并進(jìn)行登錄,登錄后進(jìn)入控制臺首頁,點(diǎn)擊全部產(chǎn)品服務(wù),選擇多協(xié)議接入,如圖3所示。

圖3 控制臺頁面
進(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
對應(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詳情
對應(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平臺。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
運(yùn)行結(jié)果
例程代碼編譯燒寫到開發(fā)板后,按下開發(fā)板的RESET按鍵,通過串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
此時(shí)登錄OneNET平臺,點(diǎn)擊進(jìn)入設(shè)備詳情頁面,可以看到設(shè)備的當(dāng)前狀態(tài)為在線。如圖13所示。

圖13 設(shè)備上線OneNET平臺
點(diǎn)擊進(jìn)入設(shè)備詳情頁面,點(diǎn)擊數(shù)據(jù)流展示頁面,可以查看到開發(fā)板上報(bào)的數(shù)據(jù)在不斷刷新。

圖14 數(shù)據(jù)上報(bào)OneNET平臺
進(jìn)入命令下發(fā)頁面,點(diǎn)擊下發(fā)命令按鍵,下發(fā)命令,如圖15所示。

圖15 下發(fā)命令
選擇字符串命令,下發(fā)hello到開發(fā)板,如圖16所示。

圖16 下發(fā)字符串命令
此時(shí),開發(fā)板串口會打印接收到的字符串信息,如下所示。
recv data is hello
- 
                                IOT
                                +關(guān)注
關(guān)注
189文章
4359瀏覽量
205923 - 
                                OpenHarmony
                                +關(guān)注
關(guān)注
31文章
3902瀏覽量
20576 
發(fā)布評論請先 登錄
Onenet云網(wǎng)關(guān)方案應(yīng)用--基于米爾瑞芯微RK3576開發(fā)板
HarmonyOS5云服務(wù)技術(shù)分享--Serverless抽獎模板部署
HarmonyOS5云服務(wù)技術(shù)分享--ArkTS調(diào)用函數(shù)
基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設(shè)
    
基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制UART外設(shè)
    
基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷
    
基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設(shè)
    
使用 Flexus X 實(shí)例創(chuàng)建 FDS+Nginx 服務(wù)實(shí)現(xiàn)圖片上傳功能
    
采用華為云 Flexus 云服務(wù)器 X 實(shí)例部署 MQTT 服務(wù)器完成設(shè)備上云
    
梯度科技成為AI Cloud MSP技術(shù)服務(wù)實(shí)驗(yàn)室首批成員單位
OpenHarmony人才生態(tài)大會南向生態(tài)社區(qū)發(fā)展論壇在武漢圓滿舉辦
全新NVIDIA NIM微服務(wù)實(shí)現(xiàn)突破性進(jìn)展
通過工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)與微軟Azure IoT中心快速配置操作
    
api驅(qū)動的云服務(wù)是什么意思?
工業(yè)智能網(wǎng)關(guān)快速接入移動OneNET平臺配置操作
    
          
        
        
基于OpenHarmony的OneNet移動云IoT服務(wù)實(shí)現(xiàn)
                
 
           
            
            
                
            
評論