HDC.Cloud | 漫谈LiteOS-端云互通组件-LwM2M开发指南(下)
1 前言
本文档主要通过实例讲述如何通过Agent Tiny SDK的端云互通组件,使用LwM2M协议快速接入华为物联网平台。
2 Agent Tiny SDK简介
Agent Tiny是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能。 Agent Tiny SDK是Huawei Agent Tiny软件开发工具包(Software Development Kit),通过Agent Tiny SDK端云互通组件,简单快速地实现与华为物联网平台安全可靠连接,可以大大减少开发周期, 快速构建IoT产品。端云互通组件可以采用MQTT、CoAP和LwM2W协议接入物联网平台。
IOT SDK 架构图
图2-01
3接入物联网平台流程
本章分别从 IoT 平台侧和端侧阐述通过端云互通组件接入物联网平台的开发流程,旨在帮助开发者在 IoT 设备上集成端云互通组件,进行IoT应用开发和调测。 端云互通组件接入华为 OceanConnect IoT 云平台默认采用的是以太网方式(即以太网口驱动+LwIP网络协议栈+LwM2M协议+Agent Tiny SDK 对接云平台), 同时也支持WIFI、GSM、NB-IoT等无线方式。OceanConnect 即华为IoT联接管理平台(IoT Connection Management Platform)是面向运营商和企业/行业领域的统一开放云平台, 支持SIM和非SIM场景的各种联接和联接管理。通过开放的APIs,向上集成各种行业应用,向下接入各种传感器、终端和网关,帮助运营商和企业/行业客户实现多种行业终端的快速接入, 多种行业应用的快速集成。华为IoT联接管理平台提供安全可控的全联接管理,使能行业革新,构建IoT生态(本章中提到的IoT平台指OceanConnect)。
平台对接信息
图3-01
设备接入云端可分为直连接入和BS引导接入,如下示意图
图3-02直连接入物联网平台示意图
图3-03 BS引导接入物联网平台示意图
4直连接入实例(https://bbs.huaweicloud.com/blogs/148751)
5经 BS 接入实例
(参考)LINUX设备平台接入实例
图5.0-01
5.1平台侧开发
BS引导模式平台侧开发包括:产品导入,设备导入,配置发放策略,发放设备。
1 环境准备
在开发之前,需要提前获取如下信息:
物联网平台的访问账号/密码,需要向OceanConnect IoT平台申请
2 产品导入
产品导入用于导入用户已开发和定义的产品模型。产品模型是指接入平台的设备的类型,产品信息包括产品名称、厂商、协议等信息。
如果使用设备接入和设备管理服务,需要提前在开发中心完成产品模型定义并发布到产品中心,选择“从产品中心导入”。 如果仅使用设备接入服务,则选择“创建产品”。创建产品仅支持创建MQTT协议产品。
(1)登录IoT云平台。IoT云平台的访问账号和密码需要向IoT平台服务商申请。
(2)进入设备发放服务,点击“从产品中心导入”。
图5.1-01 产品导入
在新弹出界面中,产品名称输入“EVB”,协议类型选择“LwM2M”,点击“搜索”,在搜索结果列表中选择产品点击“导入”。
图 5.1-02 选择产品
说明:如上产品选择仅为参考举例,具体配置请以实际产品模型为准。
图 5.1-03 产品导入成功
3 设备导入
设备导入用于将设备基本信息导入设备发放平台中,用于后续发放至不同的物联网平台,支持批量导入和单个导入。设备导入成功后,可在设备仓库中查看设备的详细信息。
登录IoT平台的开发者中心。
进入设备发放服务页面,选择“设备导入”,点击页面右上角“单个导入”。
图 5.1-04 设备导入
(3)在配置设备基本信息界面中,产品信息选择上一步导入的产品、设置好设置设备标识码、设备名称、访问方式选择“IP”,点击“确认导入”
图5.1-05配置设备基本信息
说明:如上配置仅为参考举例,具体配置请以现网需求为准。
4 配置发放策略
发放策略用于控制设备按照指定策略或规则发放至不同的物联网平台。当前支持按照设备名称中的关键字设置发放示例,最多可添加20个发放实例。
在设备发放服务页面选择“发放策略”,点击“设备名称筛选”,添加实例。
图5.1-06添加实例
在添加实例配置框内填写关键字,关键字为设备导入中的设备名称、选择发放区域、点击“确定”。
图5.1-07配置发放策略
5 发放设备
发放设备会将设备发放到指定站点的物联网平台(设备接入),对于首次发放的设备,设备上电后会自动引导设备接入指定的物联网平台。
选择“设备仓库”,在设备列表选择要发放的设备,点击“发放设备”,弹出对话框点击“确定”,点击“立即启动”。
图5.1-08发放设备
图5.1-09 立即启动
5.2设备侧开发
BS引导模式设备侧开发包括: 配置Demo中对接云端设备的信息、编译、运行SDK、数据上报功能调测。
设备侧开发环境准备
在开发之前,需要提前进行如下操作:
在虚拟机中搭建好Ubuntu操作系统
获取端云互通组件代码:https://github.com/LiteOS/LiteOS/tree/iot_link
配置Demo中对接云端设备的信息
(1)将组件代码源文件复制到Ubuntu用户目录下
图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-02make
图5.2-03 运行程序
图5.2-04连接云平台
(5)查看设备状态。
登录IoT平台进入设备管理服务,选择“所有设备”,在设备列表中查看对应设备的状态。如果状态为“在线”,则表示设备已经成功接入IoT平台。
图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查看数据上报结果
- 点赞
- 收藏
- 关注作者
评论(0)