设备开发指导
操作步骤
- 访问IoT设备管理服务首页,单击进入“开发中心”。
- 在开发中心首页,单击“新建项目”,然后填写项目名称和选择所属行业后,单击“确定”。
- 创建项目完成后,会弹出“项目创建成功”提示框,请将应用ID和应用密钥下载到本地进行保存,然后点击“进入项目”。
说明:
应用ID和应用密钥在应用对接物联网平台时需要这两个参数,请妥善保存,如果遗忘,可以在该项目的“应用 > 对接信息 > 应用安全”中进行重置。
- 进入项目空间首页后,在“产品 > 产品开发”界面中,单击“新建产品”。
- 创建新产品有两种方式,一是基于系统预置的模板进行创建,另一种是自定义一款新产品。本示例以“自定义产品”为例进行说明。
- 在自定义产品页签中,点击“自定义产品”。
- 系统将弹出“设置产品信息”窗口,填写“产品名称”、“产品型号”、“所属行业”等信息后,点击“创建”。
- 在“产品开发”界面选择上述操作步骤新建的产品,进入该产品的开发空间。
- 在产品开发空间,单击“Profile定义”,然后单击“新建服务”。
- 在“新建服务”区域,对服务名称、属性和命令进行定义。每个服务下,可以包含属性和命令,也可以只包含其中之一,请根据此类设备的实际情况进行配置。
- 下面以添加“LED”服务为例,介绍如何添加命令。用户可根据自己的实际需求参照此步骤添加其他命令。
- 在服务名称输入框中输入“LED”,单击。
- 单击“命令列表”后的“添加命令”。在弹出窗口中配置“命令名称”,单击“确定”。
- 单击“添加下发命令字段”,在弹出窗口中配置下发命令字段的各项参数,单击“确定”。
- 单击“添加响应命令字段”,在弹出窗口中配置响应命令字段的各项参数,单击“确定”。
- 在服务名称输入框中输入“LED”,单击。
- 下面以添加“Connectivity”服务为例,介绍如何添加属性。用户可参照此步骤添加“Button”以及“Sensor”服务。
- 单击“新建服务”,在服务名称输入框中输入“Connectivity”,单击。
- 单击“添加属性”。在弹出窗口中配置属性的各项参数。如下图所示,添加“SignalPower”属性,单击“确定”。
- 参照10.b,依次添加“ECL”、“SNR”以及“CellID”属性。
所有服务都添加完成后,效果如下图所示。
- 下面以添加“LED”服务为例,介绍如何添加命令。用户可根据自己的实际需求参照此步骤添加其他命令。
- 单击“端侧集成指导”,下载并安装IoT Studio。
- 一键安装依赖包。依赖包下载地址:下载链接。
说明:
依赖包均为开源软件,如需源码,请访问:源码下载链接。
有如下两种安装方式:
- (推荐方式)将依赖包解压到任意目录,运行InstallTools.bat,然后安装IDE。
- 将依赖包拷贝到IDE安装包的同级目录,然后将依赖包解压到当前目录,安装之后即可直接使用IDE。
- 运行IoT Studio。单击“创建IoT Studio工程”。
- 自定义“工程名称”及选择“工程目录”。
- 单击“场景解决方案”页签。获取模板工程。
有如下两种方式获取模板工程:
- 网络畅通时,界面会弹出如下提示,单击“是”更新模板。
- 单击“SDK下载”手动下载模板,将下载的模板解压。单击“LiteOS SDK版本”后的下拉框,单击“其它”选项,手动选择下载的模板工程。
模板更新成功后,自动配置场景解决方案的“LiteOS SDK版本”、“开发板”及“模板工程”,如下图所示:
- 在开发中心中,进入新创建的产品,选择“端侧集成指导”。如下图所示,单击“复制”,复制“设备模型文件”URL。
- 在“设备模型文件”输入框中粘贴已复制的“设备模型文件”URL。单击“下载文件”。
- 单击“完成”,将“设备模型文件”自动映射到端侧工程中,上云相关模块主要集中在产生的2个文件app.c、app.h中。
- app.c文件中已自动生成了上传命令和下发命令两个接口文件
- app.h文件主要描述映射生成的数据结构、硬件初始化接口
- 在工程中打开app.c(“targets\IoTClub-BearPi\Apps”)文件。
- 用户在未使用IoT Studio的profile自动映射功能前,app.c文件中的上传以及下发数据命令接口中内容为空,如下图所示,需要用户自己填写所有代码。
- 下发命令接口中已包含了解析数据的代码,如下图所示,用户只需要在红框中的区域1内填写下发命令的应用逻辑处理代码即可。
- 上传命令接口中已包含了解析数据的代码,并且默认映射生成了虚拟数据,保证上传通道正常。如下图所示,用户只需在红色框中的区域2填写真实传感数据上传命令处理逻辑的代码即可。
- 单击“Ctrl+S”快捷键保存修改的“app.c”文件。
- 在工具栏中单击,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。如下图所示。
- 使用数据线将开发板与电脑连接。
- 单击工具栏中的,将已经编译的程序烧录至开发板。
任务示例
真实设备数据参考实现:本节将在上述虚拟数据上云工程的基础上,以小熊派开发板真实光强数据采集DEMO 为例,介绍初始化光强检测传感器、处理真实LED灯开关控制等场景如何修改代码并将数据上传到云端。
- 命令下发处理:
- 在app.c文件中查找sensor_controll_handler () 函数
- 在 /********** code area for cmd from IoT cloud **********/ 注释下添加下面段代码
1 2 3 4 5 6 7 8 9 10 11
//云端下发命令处理 printf("Set_Led:msgid:%d status:%s", Set_Led.messageId, Set_Led.led); char* match = Set_Led.led; //开灯 if(strstr(match,"ON")!=NULL) { HAL_GPIO_WritePin(Light_GPIO_Port, Light_Pin, GPIO_PIN_SET); } //关灯 if (strstr(match,"OFF")!=NULL) { HAL_GPIO_WritePin(Light_GPIO_Port, Light_Pin, GPIO_PIN_RESET); }
添加完代码后界面如下图所示。
- 数据上报处理:
- 在app.h头文件中增加#include <bh1750.h>,并将app_init() 函数代码,整体替换为下面段代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
static VOID app_data_collection_task(VOID) { UINT32 uwRet = LOS_OK; Init_BH1750(); while (1) { Lux = (int)Convert_BH1750(); LCD_ShowString(10, 200, 200, 16, 16, "BH1750 Value is:"); LCD_ShowNum(140, 200, Lux, 5, 16); uwRet = LOS_TaskDelay(2000); if (uwRet != LOS_OK) return; } } int app_init() { semp_create(&s_rcv_sync,1,0); task_create("app_report", (fnTaskEntry)app_report_task_entry, 0x1000, NULL, NULL, 2); task_create("app_command", (fnTaskEntry)app_cmd_task_entry, 0x1000, NULL, NULL, 3); task_create("data_collection_task", (fnTaskEntry)app_data_collection_task, 0x1000, NULL, NULL, 3); return 0; }
- 在app.c文件中查找report_data_handler () 函数,在 /********** code area for report data to IoT cloud **********/ 注释下添加下面段代码
1 2 3
Report_Sensor.messageId = cn_app_Report_Sensor; Report_Sensor.data = htons(2); oc_lwm2m_report((uint8_t *)&Report_Sensor, sizeof(Report_Sensor), 1000);
添加完代码后界面如下图所示。
- 在app.h头文件中增加#include <bh1750.h>,并将app_init() 函数代码,整体替换为下面段代码。
- 在工具栏中单击,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。如下图所示。
- 单击工具栏中的,将已经编译的程序烧录至开发板。
操作结果
- 云端查看上报的光强数据。
- 设备端查看实时光强数据。
- 云侧下发开灯命令。
- 端侧响应云端命令开灯。
- 云侧下发关灯命令。
- 端侧响应关灯命令。
开发框架介绍
- Huawei LiteOS简介:
Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,更好地支持低功耗场景,支持tickless机制,支持定时器对齐。
Huawei LiteOS提供端云协同能力,集成了LwM2M、CoAP、mbedtls、LwIP全套IoT互联协议栈,且在LwM2M的基础上,提供了AgentTiny模块,用户只需关注自身的应用,而不必关注LwM2M实现细节,直接使用AgentTiny封装的接口即可简单快速实现与云平台安全可靠的连接。
Huawei LiteOS自开源社区发布以来,围绕NB-IoT物联网市场从技术、生态、解决方案、商用支持等多维度使能合作伙伴,构建开源的物联网生态,推出一批开源开发套件和行业解决方案,帮助众多行业客户快速的推出物联网终端和服务,客户涵盖抄表、停车、路灯、环保、共享单车、物流等众多行业,为开发者提供“一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
- LiteOS_Lab仓库与LiteOS仓库的关系:
LiteOS_Lab的Lab是实验室英文单词的简写,用于一些新的特性快速开发,概念验证,第三方代码合入。
- LiteOS_Lab roadmap
- 读写锁(初步完成,原定时间点2018.12.31)
- 驱动框架(初步完成,原定时间点2018.12.31)
- MPU支持(初步完成,原定时间点2018.12.31)
- 静态创建任务(初步完成,原定时间点2018.12.31)
- 内存管理改进(初步完成,部分target依然使用旧版本,原定时间点2019.1.31)
- SVC调用(初步完成,IAR未支持)
- cortex-m arch代码去冗余,M3,M4,M7公用代码(初步完成)
- shell框架以及一组简单命令(初步完成)
- AT命令解析框架(规划中)
说明:
更多代码框架及目录结构的详细说明,请访问:https://github.com/LiteOS/LiteOS_Lab进行详细了解。