自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)

系統(tǒng) OpenHarmony
MQTT(消息隊(duì)列遙測(cè)傳輸)是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,是ISO標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

一、MQTT協(xié)議簡(jiǎn)介

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é)議的輕量、簡(jiǎn)便、開(kāi)放的特點(diǎn)使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中使用,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)。MQTT協(xié)議在衛(wèi)星鏈路通信傳感器、醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。

阿里云為國(guó)內(nèi)主流的云平臺(tái),提供免費(fèi)試用的物聯(lián)網(wǎng)平臺(tái),之前的文章已經(jīng)詳細(xì)介紹了使用小凌派RK2206開(kāi)發(fā)板實(shí)現(xiàn)基于OpenHarmony的阿里云IoT服務(wù),并在阿里云上成功上線,本文將在此基礎(chǔ)上,繼續(xù)講解小凌派RK2206開(kāi)發(fā)板與阿里云平臺(tái)數(shù)據(jù)交互的實(shí)現(xiàn)。小凌派RK2206開(kāi)發(fā)板采用瑞芯微高性能、高性價(jià)比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無(wú)線局域網(wǎng)處理器,它可以應(yīng)用于不同的應(yīng)用領(lǐng)域,如物聯(lián)網(wǎng)、可穿戴設(shè)備、家庭自動(dòng)化、云連接等。小凌派RK2206開(kāi)發(fā)板內(nèi)置WIFI模塊,外部接口豐富,使用一個(gè)小凌派RK2206開(kāi)發(fā)板就能夠輕松實(shí)現(xiàn)MQTT物聯(lián)網(wǎng)多種應(yīng)用。

二、硬件電路設(shè)計(jì)

如圖1所示,為小凌派RK2206開(kāi)發(fā)板支持的外部接口,本文使用小凌派RK2206開(kāi)發(fā)板內(nèi)置的WIFI和MQTT服務(wù)器通信。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖1 小凌派RK2206開(kāi)發(fā)板

三、軟件設(shè)計(jì)

主程序設(shè)計(jì)。

在iot_aliyun_example函數(shù)中,通過(guò)LOS_TaskCreate函數(shù)創(chuàng)建iot_aliyun_thread和message_thread線程,并設(shè)置線程優(yōu)先級(jí)、線程堆棧大小等參數(shù)。

void iot_aliyun_example()
{
unsigned int ret = LOS_OK;
unsigned int thread_id1;
unsigned int thread_id2;
TSK_INIT_PARAM_S task1 = {0};
TSK_INIT_PARAM_S task2 = {0};
ret = LOS_QueueCreate("queue", MSG_QUEUE_LENGTH, &m_msg_queue, 0, BUFFER_LEN);
if (ret != LOS_OK)
{
printf("Falied to create Message Queue ret:0x%x\n", ret);
return;
}
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)iot_aliyun_thread;
task1.uwStackSize = 10240;
task1.pcName = "iot_aliyun_thread";
task1.usTaskPrio = 24;
ret = LOS_TaskCreate(&thread_id1, &task1);
if (ret != LOS_OK)
{
printf("Falied to create iot_aliyun_thread ret:0x%x\n", ret);
return;
}
task2.pfnTaskEntry = (TSK_ENTRY_FUNC)message_thread;
task2.uwStackSize = 2048;
task2.pcName = "message_thread";
task2.usTaskPrio = 25;
ret = LOS_TaskCreate(&thread_id2, &task2);
if (ret != LOS_OK)
{
printf("Falied to create message_thread ret:0x%x\n", ret);
return;
}
}

阿里云服務(wù)程序設(shè)計(jì)

iot_aliyun_thread函數(shù)中,開(kāi)發(fā)板先連接WIFI,通過(guò)WIFI和阿里云IoT平臺(tái)通信;WIFI連接成功后,初始化網(wǎng)絡(luò),初始化MQTT客戶端;初始化完成后,成功連接阿里云IoT平臺(tái)。程序進(jìn)入主循環(huán),阻塞等待消息隊(duì)列的信息,當(dāng)有信息到來(lái)時(shí),取出數(shù)據(jù)上報(bào)到阿里云平臺(tái)上。

int iot_aliyun_thread()
{
aliyun_msg_t *app_msg = NULL;
unsigned int addr;
int ret;
/*WIFI連接*/
SetWifiModeOn();
device_info_init(CLIENT_ID, USERNAME, PASSWORD);
ret = oc_mqtt_init();
if (ret != LOS_OK)
{
printf("oc_mqtt_init fail ret:%d\n", ret);
}
while (1)
{
ret = LOS_QueueRead(m_msg_queue, (void *)&addr, BUFFER_LEN, LOS_WAIT_FOREVER);
if (ret == LOS_OK)
{
app_msg = addr;
switch (app_msg->msg_type)
{
case en_msg_report:
aliyun_deal_report_msg(&app_msg->report);
break;
default:
break;
}
free(app_msg);
app_msg = NULL;
}
else
{
LOS_Msleep(100);
}
}
}

數(shù)據(jù)處理程序設(shè)計(jì)

message_thread函數(shù)中,每5秒向消息隊(duì)列中寫(xiě)入數(shù)據(jù),并且數(shù)據(jù)不斷累加處理。

void message_thread()
{
aliyun_msg_t *app_msg = NULL;
int data = 0;
while (1)
{
app_msg = malloc(sizeof(aliyun_msg_t));
if (app_msg != NULL)
{
app_msg->msg_type = en_msg_report;
app_msg->report.data = data++;
if (LOS_QueueWrite(m_msg_queue, (void *)app_msg, sizeof(aliyun_msg_t), LOS_WAIT_FOREVER) != LOS_OK)
{
printf("%s LOS_QueueWrite fail\n", __func__);
free(app_msg);
}
}
LOS_Msleep(5000);
}
}

四、編譯測(cè)試

之前的文章已經(jīng)詳細(xì)介紹了如何登錄阿里云、創(chuàng)建產(chǎn)品和添加設(shè)備,本文就不在贅述。

添加功能

點(diǎn)擊進(jìn)入公共實(shí)例,點(diǎn)擊側(cè)邊欄的產(chǎn)品頁(yè)面,點(diǎn)擊添加自定義功能,如圖2所示。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖2 添加自定義功能

輸入自定義功能名稱,點(diǎn)擊確定,如圖3所示。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖3 添加自定義功能詳情

成功添加自定義功能后,可以查看到添加的自定義功能信息,點(diǎn)擊發(fā)布上線,如圖4所示。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖4 發(fā)布自定義功能

WIFI連接

修改代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網(wǎng)絡(luò),設(shè)備通過(guò)WIFI訪問(wèn)阿里云IoT平臺(tái)。代碼如下所示:

#define SSID                                    "lzdz"
#define PASSWORD "12345678"

運(yùn)行結(jié)果

例程代碼編譯燒寫(xiě)到開(kāi)發(fā)板后,按下開(kāi)發(fā)板的RESET按鍵,通過(guò)串口軟件查看日志,串口打印MQTT初始化、連接等日志。

NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...

此時(shí)登錄阿里云IoT平臺(tái),點(diǎn)擊進(jìn)入設(shè)備詳情頁(yè)面,可以看到設(shè)備的當(dāng)前狀態(tài)為在線。如圖5所示。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖5 設(shè)備上線阿里云IoT平臺(tái)

此時(shí),側(cè)邊欄選擇設(shè)備,點(diǎn)擊進(jìn)入設(shè)備詳情,選擇物模型數(shù)據(jù)頁(yè)面,就可以看到小凌派RK2206開(kāi)發(fā)板上報(bào)的數(shù)據(jù),如圖6所示。

基于OpenHarmony的阿里云IoT服務(wù)實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

圖6 阿里云數(shù)據(jù)顯示

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2022-12-19 16:51:52

AGC華為

2017-05-09 12:40:05

2020-02-13 20:13:35

Google-S2 算法服務(wù)旅行記錄

2015-03-04 13:07:41

云服務(wù)東科軟件華為

2019-11-19 08:32:26

數(shù)據(jù)庫(kù)HLC事務(wù)

2017-09-13 12:18:29

2014-06-12 10:50:37

阿里云數(shù)據(jù)保全安存科技

2020-10-13 14:03:50

搭建ngrok服務(wù)

2020-04-29 14:43:32

VMware

2022-07-25 14:17:04

JS應(yīng)用開(kāi)發(fā)

2022-05-27 14:55:34

canvas畫(huà)布鴻蒙

2016-12-15 19:35:23

華為PaaS華為HDG

2018-08-15 15:20:14

阿里云

2022-12-23 16:52:22

Lakehouse數(shù)據(jù)湖

2013-03-26 10:26:14

云架構(gòu)云應(yīng)用平臺(tái)即服務(wù)

2013-03-06 09:26:20

云服務(wù)云實(shí)踐精準(zhǔn)管理

2018-08-22 17:06:24

阿里云混合云災(zāi)備

2011-10-24 21:32:08

阿里云云應(yīng)用

2013-01-08 14:07:56

2024-01-11 15:54:55

eTS語(yǔ)言TypeScript應(yīng)用開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)