HDC.Cloud | 漫谈LiteOS-端云互通组件-LwM2M开发指南(下)

举报
星辰27 发表于 2020/02/24 10:00:37 2020/02/24
【摘要】 本文介绍使用野火开发板通过Agent Tiny SDK的端云互通组件,使用LWm2m协议快速接入华为云平台。通过平台侧、设备侧的开发以及调测过程来了解经BS接入物联网平台模式的具体流程,希望对你有所帮助。

1 前言

本文档主要通过实例讲述如何通过Agent Tiny SDK的端云互通组件,使用LwM2M协议快速接入华为物联网平台。

2 Agent Tiny SDK简介

Agent Tiny是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能。 Agent Tiny SDKHuawei Agent Tiny软件开发工具包(Software Development Kit),通过Agent Tiny SDK端云互通组件,简单快速地实现与华为物联网平台安全可靠连接,可以大大减少开发周期, 快速构建IoT产品。端云互通组件可以采用MQTTCoAPLwM2W协议接入物联网平台。

IOT SDK 架构图 

2-01.png

2-01

3接入物联网平台流程

本章分别从 IoT 平台侧和端侧阐述通过端云互通组件接入物联网平台的开发流程,旨在帮助开发者在 IoT 设备上集成端云互通组件,进行IoT应用开发和调测。 端云互通组件接入华为 OceanConnect IoT 云平台默认采用的是以太网方式(即以太网口驱动+LwIP网络协议栈+LwM2M协议+Agent Tiny SDK 对接云平台), 同时也支持WIFIGSMNB-IoT等无线方式。OceanConnect 即华为IoT联接管理平台(IoT Connection Management Platform)是面向运营商和企业/行业领域的统一开放云平台, 支持SIM和非SIM场景的各种联接和联接管理。通过开放的APIs,向上集成各种行业应用,向下接入各种传感器、终端和网关,帮助运营商和企业/行业客户实现多种行业终端的快速接入, 多种行业应用的快速集成。华为IoT联接管理平台提供安全可控的全联接管理,使能行业革新,构建IoT生态(本章中提到的IoT平台指OceanConnect)。

平台对接信息

3-01.png

3-01

设备接入云端可分为直连接入和BS引导接入,如下示意图

 

3-02.png

3-02直连接入物联网平台示意图

3-03.png

3-03 BS引导接入物联网平台示意图

4直连接入实例https://bbs.huaweicloud.com/blogs/148751

5 BS 接入实例

(参考)LINUX设备平台接入实例

5.0-01.jpg

5.0-01

5.1平台侧开发

BS引导模式平台侧开发包括:产品导入,设备导入,配置发放策略,发放设备。

  1 环境准备

在开发之前,需要提前获取如下信息:

物联网平台的访问账号/密码,需要向OceanConnect IoT平台申请

2 产品导入

产品导入用于导入用户已开发和定义的产品模型。产品模型是指接入平台的设备的类型,产品信息包括产品名称、厂商、协议等信息。

如果使用设备接入和设备管理服务,需要提前在开发中心完成产品模型定义并发布到产品中心,选择从产品中心导入 如果仅使用设备接入服务,则选择创建产品。创建产品仅支持创建MQTT协议产品。

1)登录IoT云平台。IoT云平台的访问账号和密码需要向IoT平台服务商申请。

2)进入设备发放服务,点击从产品中心导入


5.1-01.jpg

5.1-01 产品导入

在新弹出界面中,产品名称输入“EVB”,协议类型选择“LwM2M”,点击搜索,在搜索结果列表中选择产品点击导入

5.1-02.jpg

5.1-02 选择产品

说明:如上产品选择仅为参考举例,具体配置请以实际产品模型为准。

5.1-03.jpg

5.1-03 产品导入成功

3 设备导入

设备导入用于将设备基本信息导入设备发放平台中,用于后续发放至不同的物联网平台,支持批量导入和单个导入。设备导入成功后,可在设备仓库中查看设备的详细信息。

登录IoT平台的开发者中心。

进入设备发放服务页面,选择设备导入,点击页面右上角单个导入

5.1-04.jpg

5.1-04 设备导入

3)在配置设备基本信息界面中,产品信息选择上一步导入的产品、设置好设置设备标识码、设备名称、访问方式选择“IP”,点击确认导入

5.1-05.jpg

5.1-05配置设备基本信息

说明:如上配置仅为参考举例,具体配置请以现网需求为准。

4 配置发放策略

发放策略用于控制设备按照指定策略或规则发放至不同的物联网平台。当前支持按照设备名称中的关键字设置发放示例,最多可添加20个发放实例。

在设备发放服务页面选择发放策略,点击设备名称筛选,添加实例。

5.1-06.jpg

5.1-06添加实例

在添加实例配置框内填写关键字,关键字为设备导入中的设备名称、选择发放区域、点击确定

5.1-07.jpg

5.1-07配置发放策略

5 发放设备

发放设备会将设备发放到指定站点的物联网平台(设备接入),对于首次发放的设备,设备上电后会自动引导设备接入指定的物联网平台。

选择设备仓库,在设备列表选择要发放的设备,点击发放设备,弹出对话框点击确定,点击立即启动

5.1-08.jpg

5.1-08发放设备

5.1-09.jpg

5.1-09 立即启动

5.2设备侧开发

BS引导模式设备侧开发包括: 配置Demo中对接云端设备的信息、编译、运行SDK、数据上报功能调测。

设备侧开发环境准备

在开发之前,需要提前进行如下操作:

在虚拟机中搭建好Ubuntu操作系统

获取端云互通组件代码:https://github.com/LiteOS/LiteOS/tree/iot_link

配置Demo中对接云端设备的信息

1)将组件代码源文件复制到Ubuntu用户目录下

5.2-01.png

5.2-01复制组件代码源文件到用户目录

2)在Demo源文件中设置云平台IP以及设备EP Name

oc_lwm2m_bs_demo.c位于 LiteOS-iot_link/demos

这些参数将作为入参传入oc_lwm2m_config()以对LiteOS端云互通组件进行初始化。EP Name就是在云平台上注册设备时开发者设定的验证码,必须保证是唯一的;oc_lwm2m_bs_demo.c中示例如下:

#define cn_app_server         "iot-bs.cn-north-4.myhuaweicloud.com"
#define cn_app_server         "119.3.251.30"
#define cn_endpoint_id         "test_lwm2m10"
#define cn_app_port          "5683"

3)修改编译配置文件。

config.mk位于 LiteOS-iot_link/targets/LINUX/GCC

参考如下配置:

CONFIG_OS_TYPE := "linux"
 
 CONFIG_ARCH_CPU_TYPE := "x86-64"
 
 CONFIG_SHELL_ENABLE := n
 
 CONFIG_STIMER_ENABLE := y
 
 CONFIG_DRIVER_ENABLE := n
 
 CONFIG_AT_ENABLE     := n
 CONFIG_CJSON_ENABLE := y
 
 CONFIG_TCPIP_ENABLE := y
 CONFIG_TCPIP_TYPE := "linux_socket"
 
 CONFIG_DTLS_ENABLE   := n
 CONFIG_DTLS_TYPE     := "mbedtls_psk"
 
 CONFIG_MQTT_ENABLE   := n
 CONFIG_MQTT_TYPE     := "lite_mqtt"
 
 CONFIG_LWM2M_ENABLE   := y
 CONFIG_LWM2M_TYPE     := "wakaama_lwm2m"
 
 CONFIG_COAP_ENABLE   := n
 CONFIG_COAP_TYPE     := "lite_coap"
 
 CONFIG_OC_COAP_ENABLE := n
 CONFIG_OC_COAP_TYPE   := "soft"
 
 CONFIG_OC_MQTT_ENABLE := n
 CONFIG_OC_MQTT_TYPE   := "soft"
 
 CONFIG_OC_LWM2M_ENABLE := y
 CONFIG_OC_LWM2M_TYPE   := "soft"
 
 CONFIG_OTA_ENABLE      := n
 CONFIG_PCP_ENABLE      := n
 
 CONFIG_DEMO_ENABLE := y
 CONFIG_DEMO_TYPE   := "oc_lwm2m_bs_demo"

  include $(TOP_DIR)/iot_link/iot.mk

4)编译并运行。

进入到LiteOS-iot_link/targets/LINUX/GCC目录下执行“make”命令,编译成功后会在当前文件夹下生成"build"目录,输入“./build/Huawei_LiteOS.elf”运行。

5.2-02.png

5.2-02make

5.2-03.png

5.2-03 运行程序

5.2-04.png

5.2-04连接云平台

5)查看设备状态。

登录IoT平台进入设备管理服务,选择所有设备,在设备列表中查看对应设备的状态。如果状态为在线,则表示设备已经成功接入IoT平台。

5.2-05.jpg

5.2-05 查看设备状态

5.3调测

数据上报

对于开发者来说,只需在app\_report\_task\_entry\(\)中将其传递给数据上报结构体 light 即可。具体调测过程如下:

1)设备侧执行app_report_task_entry函数,使设备上报数据。

oc_lwm2m_bs_demo.c中的函数app_data_report如下:

static int app_report_task_entry()
 {
          int ret = -1;
          int lux = 0;
 
          oc_config_param_t      oc_param;
          app_light_intensity_t  light;
 
          memset(&oc_param,0,sizeof(oc_param));
 
          oc_param.app_server.ep_id = cn_endpoint_id;
 
 
          oc_param.boot_server.address = cn_app_server;
          oc_param.boot_server.port = cn_app_port;
          oc_param.boot_server.ep_id = cn_endpoint_id;
 
          oc_param.boot_mode = en_oc_boot_strap_mode_client_initialize;
          oc_param.rcv_func = app_msg_deal;
 
          while(1) //--TODO ,you could add your own code here
          {
              if(NULL == s_lwm2m_context)
              {
                  oc_lwm2m_config(&oc_param);
              }
              else if(s_lwm2m_reconnect)
              {
                   s_lwm2m_reconnect = 0;
 
                   oc_lwm2m_deconfig();
 
 
                   oc_lwm2m_config(&oc_param);
 
              }
              else
              {
                   lux++;
                   lux= lux%10000;
 
                   light.msgid = cn_app_light;
                   light.intensity = htons(lux);
                   oc_lwm2m_report((char *)&light,sizeof(light),1000); ///< report the light message
              }
 
              osal_task_sleep(10*1000);
 
          }
 
          return ret;
 }

oc_lwm2m_bs_demo.c位于 LiteOS-iot_link/demos

2)查看设备状态

登录IoT平台进入设备管理服务,选择所有设备,在设备列表中,点击上报数据的设备,查看设备信息,验证设备数据上报的情况。

5.3-01.jpg

5.3-01查看数据上报结果


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。