一、MQTT協議簡介
MQTT(消息隊列遙測傳輸)是一個基于客戶端-服務器的消息發布/訂閱傳輸協議,是ISO標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。MQTT工作在TCP/IP協議棧上,是為硬件性能低下的遠程設備以及網絡狀況不理想的情況下而設計的發布/訂閱型消息協議。由于MQTT協議的輕量、簡便、開放的特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中使用,廣泛應用于物聯網(IoT)。MQTT協議在衛星鏈路通信傳感器、醫療設備、智能家居、及一些小型化設備中已廣泛使用。
OneNET移動云為國內主流的云平臺,提供免費試用的物聯網平臺,本文使用小凌派RK2206開發板實現基于OpenHarmony的OneNET移動云IoT服務。小凌派RK2206開發板采用瑞芯微高性能、高性價比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無線局域網處理器,它可以應用于不同的應用領域,如物聯網、可穿戴設備、家庭自動化、云連接等。小凌派RK2206開發板內置WIFI模塊,外部接口豐富,使用一個小凌派RK2206開發板就能夠輕松實現MQTT物聯網多種應用。
二、硬件電路設計
如圖1所示,為小凌派RK2206開發板支持的外部接口,本文使用小凌派RK2206開發板內置的WIFI和MQTT服務器通信。
圖1 小凌派RK2206開發板
三、軟件設計
主程序設計
在iot_onenet_example函數中,通過LOS_TaskCreate函數創建iot_onenet_thread線程,并設置線程優先級、線程堆棧大小等參數。
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函數中,開發板先連接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平臺地址
創建產品
在OneNET平臺注冊個人用戶賬號并進行登錄,登錄后進入控制臺首頁,點擊全部產品服務,選擇多協議接入,如圖3所示。
圖3 控制臺頁面
進入多協議接入頁面,點擊添加產品按鍵,添加產品,如圖4所示。
圖4 多協議接入頁面
進入添加產品頁面,按照要求填寫產品信息,點擊確定,如圖5所示。
圖5 添加產品
添加產品成功后,進入產品概況頁面,可以看到創建的產品,如圖6所示。
圖6 產品概況
添加設備
點擊側邊欄設備列表頁面,點擊添加設備,如圖7所示。
圖7 添加設備
按照要求填入設備名稱和鑒權信息,點擊添加設備,如圖8所示。
圖8 添加設備詳情頁
成功創建設備后,側邊欄點擊設備列表,可以查看到創建的設備信息,如圖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"
運行結果
例程代碼編譯燒寫到開發板后,按下開發板的RESET按鍵,通過串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
此時登錄OneNET平臺,點擊進入設備詳情頁面,可以看到設備的當前狀態為在線。如圖13所示。
圖13 設備上線OneNET平臺
點擊進入設備詳情頁面,點擊數據流展示頁面,可以查看到開發板上報的數據在不斷刷新。
圖14 數據上報OneNET平臺
進入命令下發頁面,點擊下發命令按鍵,下發命令,如圖15所示。
圖15 下發命令
選擇字符串命令,下發hello到開發板,如圖16所示。
圖16 下發字符串命令
此時,開發板串口會打印接收到的字符串信息,如下所示。
recv data is hello
-
IOT
+關注
關注
187文章
4305瀏覽量
201854 -
OpenHarmony
+關注
關注
29文章
3854瀏覽量
18613
發布評論請先 登錄
Onenet云網關方案應用--基于米爾瑞芯微RK3576開發板
HarmonyOS5云服務技術分享--ArkTS調用函數
梯度科技成為AI Cloud MSP技術服務實驗室首批成員單位
全新NVIDIA NIM微服務實現突破性進展
工業智能網關快速接入移動OneNET平臺配置操作

一庫打通所有云平臺!合宙IoT_CLOUD之【騰訊云】
4G模組如何輕松上云?合宙IoT_CLOUD之中移OneNET

工業物聯網(IOT)云平臺是什么
Air780EP模塊 AT開發-MQTT接入OneNET移動物聯網平臺應用指南

評論