更新时间:2022-02-21 GMT+08:00

设备开发指导

操作步骤

  1. 访问IoT设备管理服务首页,单击进入“开发中心”。
  2. 在开发中心首页,单击“新建项目”,然后填写项目名称和选择所属行业后,单击“确定”。

  3. 创建项目完成后,会弹出“项目创建成功”提示框,请将应用ID和应用密钥下载到本地进行保存,然后点击“进入项目”。

    说明:

    应用ID和应用密钥在应用对接物联网平台时需要这两个参数,请妥善保存,如果遗忘,可以在该项目的“应用 > 对接信息 > 应用安全”中进行重置。

  4. 进入项目空间首页后,在“产品 > 产品开发”界面中,单击“新建产品”。
  5. 创建新产品有两种方式,一是基于系统预置的模板进行创建,另一种是自定义一款新产品。本示例以“自定义产品”为例进行说明。
  6. 在自定义产品页签中,点击“自定义产品”。

  7. 系统将弹出“设置产品信息”窗口,填写“产品名称”、“产品型号”、“所属行业”等信息后,点击“创建”。

  8. 在“产品开发”界面选择上述操作步骤新建的产品,进入该产品的开发空间。
  9. 在产品开发空间,单击“Profile定义”,然后单击“新建服务”。
  10. 在“新建服务”区域,对服务名称、属性和命令进行定义。每个服务下,可以包含属性和命令,也可以只包含其中之一,请根据此类设备的实际情况进行配置。

    • 下面以添加“LED”服务为例,介绍如何添加命令。用户可根据自己的实际需求参照此步骤添加其他命令。
      1. 在服务名称输入框中输入“LED”,单击

      2. 单击“命令列表”后的“添加命令”。在弹出窗口中配置“命令名称”,单击“确定”。

      3. 单击“添加下发命令字段”,在弹出窗口中配置下发命令字段的各项参数,单击“确定”。

      4. 单击“添加响应命令字段”,在弹出窗口中配置响应命令字段的各项参数,单击“确定”。

    • 下面以添加“Connectivity”服务为例,介绍如何添加属性。用户可参照此步骤添加“Button”以及“Sensor”服务。
      1. 单击“新建服务”,在服务名称输入框中输入“Connectivity”,单击
      2. 单击“添加属性”。在弹出窗口中配置属性的各项参数。如下图所示,添加“SignalPower”属性,单击“确定”。

      3. 参照10.b,依次添加“ECL”、“SNR”以及“CellID”属性。

    所有服务都添加完成后,效果如下图所示。

  11. 单击“端侧集成指导”,下载并安装IoT Studio。

  12. 一键安装依赖包。依赖包下载地址:下载链接

    说明:

    依赖包均为开源软件,如需源码,请访问:源码下载链接

    有如下两种安装方式:

    • (推荐方式)将依赖包解压到任意目录,运行InstallTools.bat,然后安装IDE。
    • 将依赖包拷贝到IDE安装包的同级目录,然后将依赖包解压到当前目录,安装之后即可直接使用IDE。

  13. 运行IoT Studio。单击“创建IoT Studio工程”。

  14. 自定义“工程名称”及选择“工程目录”。

  15. 单击“场景解决方案”页签。获取模板工程。

    有如下两种方式获取模板工程:
    • 网络畅通时,界面会弹出如下提示,单击“是”更新模板。

    • 单击“SDK下载”手动下载模板,将下载的模板解压。单击“LiteOS SDK版本”后的下拉框,单击“其它”选项,手动选择下载的模板工程。

    模板更新成功后,自动配置场景解决方案的“LiteOS SDK版本”、“开发板”及“模板工程”,如下图所示:

  16. 在开发中心中,进入新创建的产品,选择“端侧集成指导”。如下图所示,单击“复制”,复制“设备模型文件”URL。

  17. 在“设备模型文件”输入框中粘贴已复制的“设备模型文件”URL。单击“下载文件”。

  18. 单击“完成”,将“设备模型文件”自动映射到端侧工程中,上云相关模块主要集中在产生的2个文件app.c、app.h中。

    • app.c文件中已自动生成了上传命令和下发命令两个接口文件
    • app.h文件主要描述映射生成的数据结构、硬件初始化接口

  19. 在工程中打开app.c(“targets\IoTClub-BearPi\Apps”)文件。

    1. 用户在未使用IoT Studio的profile自动映射功能前,app.c文件中的上传以及下发数据命令接口中内容为空,如下图所示,需要用户自己填写所有代码。

    1. 下发命令接口中已包含了解析数据的代码,如下图所示,用户只需要在红框中的区域1内填写下发命令的应用逻辑处理代码即可。

    1. 上传命令接口中已包含了解析数据的代码,并且默认映射生成了虚拟数据,保证上传通道正常。如下图所示,用户只需在红色框中的区域2填写真实传感数据上传命令处理逻辑的代码即可。

  20. 单击“Ctrl+S”快捷键保存修改的“app.c”文件。
  21. 在工具栏中单击,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。如下图所示。

  22. 使用数据线将开发板与电脑连接。
  23. 单击工具栏中的,将已经编译的程序烧录至开发板。

操作结果

  1. 如下图所示,云端将会显示数据上传的结果。

  1. 若云端无上传数据,请参考通信模组检测工具使用指导以及常见问题定位分析端云通信故障问题。

任务示例

真实设备数据参考实现:本节将在上述虚拟数据上云工程的基础上,以小熊派开发板真实光强数据采集DEMO 为例,介绍初始化光强检测传感器处理真实LED灯开关控制等场景如何修改代码并将数据上传到云端。

  1. 命令下发处理:

    1. app.c文件中查找sensor_controll_handler () 函数
    2. /********** 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);          
      	} 
      

    添加完代码后界面如下图所示。

  2. 数据上报处理:

    1. 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; 
      }
      
    2. 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);
      

      添加完代码后界面如下图所示。

  3. 在工具栏中单击,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。如下图所示。

  4. 单击工具栏中的,将已经编译的程序烧录至开发板。

操作结果

  1. 云端查看上报的光强数据。

  2. 设备端查看实时光强数据。

  3. 云侧下发开灯命令。

  4. 端侧响应云端命令开灯。

  5. 云侧下发关灯命令。

  6. 端侧响应关灯命令。

开发框架介绍

  • 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进行详细了解。