一、MQTT協議簡介
MQTT(消息隊列遙測傳輸)是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協議,是ISO標準(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協議。MQTT工作在TCP/IP協議棧上,是為硬件性能低下的遠程設備以及網絡狀況不理想的情況下而設計的發(fā)布/訂閱型消息協議。由于MQTT協議的輕量、簡便、開放的特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中使用,廣泛應用于物聯網(IoT)。MQTT協議在衛(wèi)星鏈路通信傳感器、醫(yī)療設備、智能家居、及一些小型化設備中已廣泛使用。
OneNET移動云為國內主流的云平臺,提供免費試用的物聯網平臺,本文使用小凌派RK2206開發(fā)板實現基于OpenHarmony的OneNET移動云IoT服務。小凌派RK2206開發(fā)板采用瑞芯微高性能、高性價比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無線局域網處理器,它可以應用于不同的應用領域,如物聯網、可穿戴設備、家庭自動化、云連接等。小凌派RK2206開發(fā)板內置WIFI模塊,外部接口豐富,使用一個小凌派RK2206開發(fā)板就能夠輕松實現MQTT物聯網多種應用。
二、硬件電路設計
如圖1所示,為小凌派RK2206開發(fā)板支持的外部接口,本文使用小凌派RK2206開發(fā)板內置的WIFI和MQTT服務器通信。
圖1 小凌派RK2206開發(fā)板
三、軟件設計
主程序設計
在iot_onenet_example函數中,通過LOS_TaskCreate函數創(chuàng)建iot_onenet_thread線程,并設置線程優(yōu)先級、線程堆棧大小等參數。
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服務程序設計
iot_onenet_thread函數中,開發(fā)板先連接WIFI,通過WIFI和OneNET IoT平臺通信;WIFI連接成功后,初始化網絡,初始化MQTT客戶端,設置命令接收回調函數;初始化完成后,成功連接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平臺
設備連接OneNET平臺前,需要做一些準備工作;登錄OneNET平臺,在平臺注冊個人用戶賬號,并且需要實名認證后才可以正常使用。如圖2所示,為OneNET平臺地址:https://open.iot.10086.cn。
圖2 OneNET平臺地址
創(chuàng)建產品
在OneNET平臺注冊個人用戶賬號并進行登錄,登錄后進入控制臺首頁,點擊全部產品服務,選擇多協議接入,如圖3所示。
圖3 控制臺頁面
進入多協議接入頁面,點擊添加產品按鍵,添加產品,如圖4所示。
圖4 多協議接入頁面
進入添加產品頁面,按照要求填寫產品信息,點擊確定,如圖5所示。
圖5 添加產品
添加產品成功后,進入產品概況頁面,可以看到創(chuàng)建的產品,如圖6所示。
圖6 產品概況
添加設備
點擊側邊欄設備列表頁面,點擊添加設備,如圖7所示。
圖7 添加設備
按照要求填入設備名稱和鑒權信息,點擊添加設備,如圖8所示。
圖8 添加設備詳情頁
成功創(chuàng)建設備后,側邊欄點擊設備列表,可以查看到創(chuàng)建的設備信息,如圖9所示。
圖9 設備列表頁面
點擊詳情,進入剛添加的設備,可以查看到設備的詳細信息,點擊添加APIKey,按照要求填寫APIKey,如圖10所示。
圖10 添加APIKey
代碼設備信息修改
點擊側邊欄產品概況頁面,查看產品ID和Master-APIkey,如圖11所示。
圖11 產品ID和Master-APIkey
對應修改如下代碼中的值,其中,ONENET_INFO_PROID為產品ID,ONENET_MASTER_APIKEY為Master-APIkey。
#define ONENET_INFO_PROID "535158"
#define ONENET_MASTER_APIKEY "RhPzbaX813t=Uyjxb9Cyf=GdXhw="
點擊側邊欄設備列表頁面,點擊進入設備詳情頁面,查看設備ID詳情,如圖12所示。
圖12 設備ID詳情
對應修改如下代碼的值,其中,ONENET_INFO_DEVID為設備ID,ONENET_INFO_AUTH為鑒權信息,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和密匙,用于連接網絡,設備通過WIFI訪問阿里云IoT平臺。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
運行結果
例程代碼編譯燒寫到開發(fā)板后,按下開發(fā)板的RESET按鍵,通過串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
此時登錄OneNET平臺,點擊進入設備詳情頁面,可以看到設備的當前狀態(tài)為在線。如圖13所示。
圖13 設備上線OneNET平臺
點擊進入設備詳情頁面,點擊數據流展示頁面,可以查看到開發(fā)板上報的數據在不斷刷新。
圖14 數據上報OneNET平臺
進入命令下發(fā)頁面,點擊下發(fā)命令按鍵,下發(fā)命令,如圖15所示。
圖15 下發(fā)命令
選擇字符串命令,下發(fā)hello到開發(fā)板,如圖16所示。
圖16 下發(fā)字符串命令
此時,開發(fā)板串口會打印接收到的字符串信息,如下所示。
recv data is hello
-
IOT
+關注
關注
189文章
4356瀏覽量
205615 -
OpenHarmony
+關注
關注
31文章
3895瀏覽量
20433
發(fā)布評論請先 登錄
Onenet云網關方案應用--基于米爾瑞芯微RK3576開發(fā)板
HarmonyOS5云服務技術分享--Serverless抽獎模板部署
HarmonyOS5云服務技術分享--ArkTS調用函數
基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設

基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制UART外設

基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設

使用 Flexus X 實例創(chuàng)建 FDS+Nginx 服務實現圖片上傳功能

采用華為云 Flexus 云服務器 X 實例部署 MQTT 服務器完成設備上云

梯度科技成為AI Cloud MSP技術服務實驗室首批成員單位
OpenHarmony人才生態(tài)大會南向生態(tài)社區(qū)發(fā)展論壇在武漢圓滿舉辦
全新NVIDIA NIM微服務實現突破性進展
通過工業(yè)智能網關實現與微軟Azure IoT中心快速配置操作

工業(yè)智能網關快速接入移動OneNET平臺配置操作

評論