0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OpenHarmony的OneNet移动云IoT服务实现

福州市凌睿智捷电子有限公司 2022-07-26 09:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、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服务器通信。

f25ad5a8-0c6b-11ed-9ade-dac502259ad0.png

图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。

f28c806c-0c6b-11ed-9ade-dac502259ad0.png

图2 OneNET平台地址

创建产品

在OneNET平台注册个人用户账号并进行登录,登录后进入控制台首页,点击全部产品服务,选择多协议接入,如图3所示。

f29ce97a-0c6b-11ed-9ade-dac502259ad0.png

图3 控制台页面

进入多协议接入页面,点击添加产品按键,添加产品,如图4所示。

f2d1052a-0c6b-11ed-9ade-dac502259ad0.png

图4 多协议接入页面

进入添加产品页面,按照要求填写产品信息,点击确定,如图5所示。

f2f1b46e-0c6b-11ed-9ade-dac502259ad0.png

图5 添加产品

添加产品成功后,进入产品概况页面,可以看到创建的产品,如图6所示。

f313bf32-0c6b-11ed-9ade-dac502259ad0.png

图6 产品概况

添加设备

点击侧边栏设备列表页面,点击添加设备,如图7所示。

f3250472-0c6b-11ed-9ade-dac502259ad0.png

图7 添加设备

按照要求填入设备名称和鉴权信息,点击添加设备,如图8所示。

f3459098-0c6b-11ed-9ade-dac502259ad0.png

图8 添加设备详情页

成功创建设备后,侧边栏点击设备列表,可以查看到创建的设备信息,如图9所示。

f376aebc-0c6b-11ed-9ade-dac502259ad0.png

图9 设备列表页面

点击详情,进入刚添加的设备,可以查看到设备的详细信息,点击添加APIKey,按照要求填写APIKey,如图10所示。

f3a7cf92-0c6b-11ed-9ade-dac502259ad0.png

图10 添加APIKey

代码设备信息修改

点击侧边栏产品概况页面,查看产品ID和Master-APIkey,如图11所示。

f3ba0da6-0c6b-11ed-9ade-dac502259ad0.png

图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所示。

f3d7825a-0c6b-11ed-9ade-dac502259ad0.png

图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所示。

f40c0a0c-0c6b-11ed-9ade-dac502259ad0.png

图13 设备上线OneNET平台

点击进入设备详情页面,点击数据流展示页面,可以查看到开发板上报的数据在不断刷新。

f4334cd4-0c6b-11ed-9ade-dac502259ad0.png

图14 数据上报OneNET平台

进入命令下发页面,点击下发命令按键,下发命令,如图15所示。

f4528464-0c6b-11ed-9ade-dac502259ad0.png

图15 下发命令

选择字符串命令,下发hello到开发板,如图16所示。

f46a9130-0c6b-11ed-9ade-dac502259ad0.png

图16 下发字符串命令

此时,开发板串口会打印接收到的字符串信息,如下所示。

recv data is hello

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IOT
    IOT
    +关注

    关注

    189

    文章

    4369

    浏览量

    206566
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20718
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文读懂:W55MH32 如何携手微信小程序与 OneNET实现以太网灯条调色自由(软硬件开源)

    本文采用W55MH32开发板搭配WS2812B灯条,借助MQTT协议连接OneNET平台,并配合微信小程序,实现了以太网灯条的远程调色以及动态模式(如流水灯、彩虹灯)控制。感谢大家阅读,
    的头像 发表于 08-08 11:16 1218次阅读
    一文读懂:W55MH32 如何携手微信小程序与 <b class='flag-5'>OneNET</b>,<b class='flag-5'>实现</b>以太网灯条调色自由(软硬件开源)

    Onenet网关方案应用--基于米尔瑞芯微RK3576开发板

    设备名 acckey等信息计算token作为登录密码,连接到onenet iot。建立长连接后订阅消息 2.所有的参数打包在_ST_IotPro_结构体中,首先组成json格式消息,周期性上报
    发表于 06-06 16:54

    HarmonyOS5服务技术分享--Serverless抽奖模板部署

    portal/dist目录全选文件压缩 千万!不要!直接压缩dist文件夹! 正确示例:压缩后打开zip应直接看到index.html 2️⃣ ​​托管配置​​ 开通托管服务 → 创建新站点 上传
    发表于 05-22 20:25

    HarmonyOS5服务技术分享--存储指南

    Hi各位开发者伙伴们!今天咱们来聊一聊HarmonyOS存储的实战玩法,手把手教你实现文件上传、下载、元数据操作等核心功能。无需官方文档的严肃感,咱们用最接地气的方式搞懂这些API怎么用!(文末附
    发表于 05-22 19:17

    HarmonyOS5服务技术分享--ArkTS调用函数

    contentType参数指定文件类型 使用分块传输优化大文件下载 结合存储服务实现文件持久化 完整的文件获取模板: async function fetchCloudFile(fileId: string
    发表于 05-22 18:22

    HarmonyOS5服务技术分享--ArkTS开发Node环境

    气的方式探索这个功能,结尾还有实用总结和鼓励彩蛋哦~✨ ? 一、HarmonyOS函数开发:核心能力与价值 HarmonyOS的函数(Serverless)为开发者提供了​​无服务器架构​​的便捷
    发表于 05-22 17:21

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制FLASH外设

    1、实验简介 本实验将演示如何在小凌派-RK2206开发板上使用IOT库的FLASH接口,进行FLASH编程开发。 例程将创建一个任务,实现FLASH读写操作。 例程源代码:https
    发表于 04-22 15:02

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制FLASH外设

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的FLASH接口,进行FLASH编程开发。例程将创建一个任务,实现FLASH读写操作。例程源代码:https
    的头像 发表于 04-22 14:49 685次阅读
    基于小凌派RK2206开发板:<b class='flag-5'>OpenHarmony</b>如何使用<b class='flag-5'>IoT</b>接口控制FLASH外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制UART外设

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的UART接口,进行UART编程开发。例程将创建一个任务,通过配置UART引脚,实现UART读写操作。例程源代码:https
    的头像 发表于 04-22 14:22 792次阅读
    基于小凌派RK2206开发板:<b class='flag-5'>OpenHarmony</b>如何使用<b class='flag-5'>IoT</b>接口控制UART外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO引脚为中断模式,实现GPIO中断操作。例程源代码
    的头像 发表于 04-21 10:39 889次阅读
    基于小凌派RK2206开发板:<b class='flag-5'>OpenHarmony</b>如何使用<b class='flag-5'>IoT</b>接口控制GPIO中断

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO外设

    1、案例简介本案例主要是如何在小凌派-RK2206开发板上使用IOT库的GPIO接口,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO引脚,实现GPIO读写操作。例程源代码:https
    的头像 发表于 04-11 15:36 1613次阅读
    基于小凌派RK2206开发板:<b class='flag-5'>OpenHarmony</b>如何使用<b class='flag-5'>IoT</b>接口控制GPIO外设

    移动电脑平板:工作娱乐,掌上精彩

    移动电脑平板,正在重新定义移动办公的边界
    的头像 发表于 02-26 09:12 1467次阅读
    <b class='flag-5'>移动</b><b class='flag-5'>云</b>电脑<b class='flag-5'>云</b>平板:工作娱乐,掌上精彩

    使用 Flexus X 实例创建 FDS+Nginx 服务实现图片上传功能

    一、Flexus X 实例 什么是Flexus X实例呢,这是华为最新推出的服务器产品,如下图: ​ 华为推出的 Flexus
    的头像 发表于 01-23 18:26 639次阅读
    使用 Flexus X 实例创建 FDS+Nginx <b class='flag-5'>服务实现</b>图片上传功能

    采用华为 Flexus 服务器 X 实例部署 MQTT 服务器完成设备上

    一、前言 1.1 开发需求 这篇文章讲解: 采用华为最新推出的 Flexus 服务器 X 实例 EMQX 服务器,搭建 MQTT 服务
    的头像 发表于 12-26 18:12 993次阅读
    采用华为<b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b><b class='flag-5'>服务</b>器 X 实例部署 MQTT <b class='flag-5'>服务</b>器完成设备上<b class='flag-5'>云</b>

    梯度科技成为AI Cloud MSP技术服务实验室首批成员单位

    近日,2024全球数字经济大会·AI·计算国际合作论坛成功召开。会上,公布了AI Cloud MSP技术服务实验室首批成员单位,梯度科技凭借在人工智能管理服务领域的卓越实力成为AI
    的头像 发表于 12-18 10:07 1033次阅读