首页>>科技 >>内容

基于OpenHarmony的阿里云物联网服务实现

发布时间:2023-08-27 17:12:14编辑:温柔的背包来源:

很多朋友对基于OpenHarmony的阿里云物联网服务实现不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

基于OpenHarmony的阿里云物联网服务实现

一、 MQTT协议简介

MQTT(Message Queue Telemetry Transport)是一种基于客户端-服务器的消息发布/订阅传输协议,是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。 MQTT 工作在TCP/IP 协议栈上,是针对硬件性能较低、网络条件不理想的远程设备而设计的发布/订阅消息协议。由于MQTT协议轻量、简单、开放的特点,因此有着非常广泛的应用。它广泛应用于物联网(IoT) 的多种情况,包括在受限环境中使用。 MQTT协议已广泛应用于卫星链路通信传感器、医疗设备、智能家居以及一些小型化设备。

阿里云是国内主流云平台,提供免费试用的物联网平台。本文使用小灵牌RK2206开发板实现基于OpenHarmony的阿里云物联网服务。小灵牌RK2206开发板采用Rockchip高性能、高性价比的RK2206芯片。 RK2206芯片是一款低功耗、高集成度的MCU无线局域网处理器,可应用于不同的应用领域,如物联网、可穿戴设备、家庭自动化、云连接等。小灵派RK2206开发板内置了WIFI模块和丰富的外部接口。使用小灵派RK2206开发板可以轻松实现MQTT物联网的各种应用。

二、硬件电路设计如图1所示,这是小灵派RK2206开发板支持的外部接口。本文使用小灵牌RK2206开发板内置WIFI与MQTT服务器进行通信。

图1 小灵派RK2206开发板

三、 软件设计主程序设计在iot_aliyun_example函数中,通过LOS_TaskCreate函数创建iot_aliyun_thread线程,并设置线程优先级、线程堆栈大小等参数。

void iot_aliyun_example(){ unsigned int ret=LOS_OK;无符号整数thread_id1;无符号整数thread_id2; TSK_INIT_PARAM_S 任务1={0}; TSK_INIT_PARAM_S 任务2={0}; ret=LOS_QueueCreate('队列', MSG_QUEUE_ LENGTH, m_msg_queue, 0, BUFFER_LEN); if (ret !=LOS_OK) { printf('创建消息队列失败ret:0x%x\n', ret);返回; }task1.pfnTaskEntry=(TSK_ENTRY_FUNC)iot_aliyun_thread;任务1.uwStackSize=10240; task1.pcName='iot_aliyun_thread';任务1.usTaskPrio=24; ret=LOS_TaskCreate(thread_id1, task1); if (ret !=LOS_OK) { printf('创建iot_aliyun_thread失败ret:0x%x\n', ret);返回; }}

在阿里云服务程序设计的iot_aliyun_thread函数中,开发板首先连接WIFI,通过WIFI与阿里云物联网平台进行通信; WIFI连接成功后,初始化网络并初始化MQTT客户端;初始化完成后,成功连接阿里云IoT平台。

int iot_aliyun_thread(){ aliyun_msg_t *app_msg=NULL;无符号整型地址; int ret;SetWifiModeOn();device_info_init(CLIENT_ID, USERNAME, PASSWORD); ret=oc_mqtt_init(); if (ret !=LOS_ OK) { printf('oc_mqtt_init 失败ret:%d\n', ret); } while (1) { LOS_Msleep(100); }}

四、 编译与测试在登录阿里云设备并连接阿里云之前,需要做一些准备工作;登录阿里云物联网平台,在平台注册个人用户账号,需要实名认证后才能正常使用。如图2所示,是阿里云物联网平台地址:https://free.aliyun.com/product/iotfreetrail。

图2 阿里云IoT平台地址

激活物联网服务在阿里云物联网平台注册个人用户账号并登录,登录后需要激活物联网平台服务。单击立即激活,如图3所示。

图3 打开IoT平台

单击“立即激活”,在确认页面单击右下角的“立即激活”,如图4所示。

图4 立即打开

单击“立即激活”,提示激活成功,如图5所示。

图5 提示激活成功

单击,进入管理控制台,如图6所示。

图6 管理控制台

创建产品点击进入公有实例,点击侧边栏产品页面,点击创建产品,如图7所示。

图7 创建产品

输入产品名称,选择自定义类别-直连设备,单击确定创建产品,如图8所示。

图8 创建产品详细信息

成功创建产品后,点击侧边栏的产品即可查看创建的产品信息,如图9所示。

图9 产品详细信息

添加设备时,单击侧边栏的设备页面,然后单击“添加设备”,如图10所示。

图10 添加设备

根据需要填写产品名称和DeviceName,然后单击“确定”,如图11所示。

图11 添加设备详情页面

设备创建成功后,点击侧边栏的设备即可查看创建的设备信息,如图12所示。

图12 设备页面

点击进入新添加的设备,可以查看该设备的详细信息,如图13所示。

图13 设备详细信息

单击“查看MQTT连接参数”,查看MQTT连接所需参数,如图14所示。

图14 MQTT连接参数

在PC上使用WIN+R键打开命令行CMD,执行以下命令获取访问域名的IP地址。如图15所示,通过ping命令可以查到MQTT域名的IP地址为47.102.164.191。

ping iot-06z00d4dxawzdv7.mqtt.iothub.aliyuncs.com

图15 查询MQTT域名IP地址

相应的,修改代码中的MQTT_SERVER_IP为PC的IP地址47.102.164.191,MQTT_SERVER_PORT改为MQTT服务器端口号1883。代码如下:

#定义MQTT_SERVER_IP '47.102.164.191'

#定义MQTT_SERVER_PORT 1883

根据MQTT连接参数依次修改代码中的CLIENT_ID、USERNAME和PASSWORD,代码如下:

#define PRODUCT_KEY 'hdm1KctTIxC'

#define DEVICE_NAME '阿里云'

#define CLIENT_ID 'hdm1KctTIxC.aliyun|securemode=2,signmethod=hmacsha256,时间戳=1655280007303|'

#define 用户名'aliyunhdm1KctTIxC'

#定义密码'd41441cfae339f4a09ac2bc600b736db80d3d6694f1d58efc16eb8e812d4d295'

WIFI 连接修改代码中的SSID 和PASSWORD,使用WIFI SSID 和密钥连接网络,设备通过WIFI 访问阿里云物联网平台。代码如下所示:

#定义SSID'lzdz'

#定义密码'12345678'

运行结果例程代码编译写入开发板后,按下开发板的RESET按钮,通过串口软件查看日志,并通过串口打印MQTT初始化、连接等日志。

网络连接.

MQTT客户端初始化.

MQTT连接.

MQTT订阅.

此时,登录阿里云IoT平台,点击进入设备详情页面,可以看到设备当前状态为在线。如图所示。

图16 设备上线阿里云IoT平台

以上知识分享希望能够帮助到大家!