• 沒有找到結果。

调测证书制作(联通用户专用)_设备管理 IoTDM(联通用户专用)_开发指南_华为云

N/A
N/A
Protected

Academic year: 2022

Share "调测证书制作(联通用户专用)_设备管理 IoTDM(联通用户专用)_开发指南_华为云"

Copied!
342
0
0

加載中.... (立即查看全文)

全文

(1)

开发指南

文档版本 14

发布日期 2020-12-29

(2)

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 开发前必读(联通用户专用)... 1

2 资源获取(联通用户专用)...5

3 从这里开始...10

3.1 我是模组厂商(联通用户专用)...11

3.2 我是设备厂商(联通用户专用)...11

3.3 我是设备用户(联通用户专用)...14

3.4 我是应用开发者(联通用户专用)... 16

4 平台侧开发...18

4.1 体验开发中心(联通用户专用)...18

4.2 创建项目(联通用户专用)... 39

4.3 创建产品(联通用户专用)... 42

4.4 开发 Profile... 47

4.4.1 什么是 Profile(联通用户专用)...47

4.4.2 在线开发 Profile(联通用户专用)... 48

4.4.3 离线开发 Profile(联通用户专用)... 52

4.4.4 导出和导入 Profile...64

4.5 开发编解码插件... 67

4.5.1 什么是编解码插件(联通用户专用)...67

4.5.2 在线开发插件(联通用户专用)... 69

4.5.3 离线开发插件(联通用户专用)... 133

4.5.4 下载和上传插件(联通用户专用)...163

4.6 调测产品(联通用户专用)... 166

5 设备侧开发... 173

5.1 使用 MQTTS 协议接入(联通用户专用)...173

5.2 使用 MQTT 协议接入(联通用户专用)... 174

5.3 使用 LoRaWAN 协议接入(联通用户专用)... 181

5.4 使用 Modbus 协议接入(联通用户专用)... 185

5.5 使用 Agent SDK 接入... 191

5.5.1 Agent Lite SDK 使用指南(C)(联通用户专用)... 191

5.5.2 Agent Lite SDK 使用指南(Java)(联通用户专用)...206

5.5.3 Agent Lite SDK 使用指南(Android)(联通用户专用)...217

5.6 使用模组接入... 235

(4)

5.6.1 Agent Tiny SDK 使用指南(联通用户专用)...238

5.6.2 LiteOS SDK 使用指南(联通用户专用)... 238

5.7 软固件升级调测...238

5.7.1 固件升级(联通用户专用)...238

5.7.2 软件升级(联通用户专用)...244

6 应用侧开发... 251

6.1 使用 API 对接... 251

6.1.1 API 使用指导(联通用户专用)... 251

6.1.2 使用 Postman 调测(联通用户专用)... 252

6.1.3 使用 Java API Demo 调测(联通用户专用)... 270

6.2 使用 SDK 对接... 284

6.2.1 Java SDK 使用指南(联通用户专用)...284

6.2.2 Python SDK 使用指南(联通用户专用)... 297

7 调测证书制作(联通用户专用)...311

8 自助测试(联通用户专用)... 315

9 产品发布(联通用户专用)... 324

10 商用对接(联通用户专用)... 327

11 IoT 技术认证(联通用户专用)... 335

(5)

1 开发前必读(联通用户专用)

非联通用户请查看设备接入服务。

方案概述

基于设备管理服务去实现一个物联网解决方案时,需要完成以下开发操作:

开发操作 开发说明

平台侧的开发 主要包括Profile的开发和编解码插件的开发。编解码插件的开发

仅针对上报数据为二进制码流格式的设备,对于上报数据为JSON 格式的设备不需要开发编解码插件。

设备侧的开发 主要为设备与物联网平台的集成对接开发,包括设备接入物联网

平台、业务数据上报和对平台下发控制命令的处理。

应用侧的开发 主要为业务应用与物联网平台的集成对接开发,包括API接口的调

用、业务数据的获取和HTTPS证书的管理。

基于物联网平台开发一个物联网解决方案的工作流程请参考从这里开始。

开发中心与设备管理服务的差异

● 了解开发中心

开发中心是基于设备管理服务提供的物联网一站式开发工具,帮助开发者快速进 行Profile(产品模型)和编解码插件的开发,同时提供在线自助测试、产品发布 等多种能力,端到端指引物联网开发,帮助开发者提升集成开发效率、缩短物联 网解决方案建设周期。

– 产品开发:提供产品开发向导,端到端引导开发者完成Profile开发、插件开 发以及产品调测,助力物联网产品快速上线。

– 应用开发:支持对接信息、订阅调试、应用调试等能力,帮助开发者进行应 用侧开发和调试,助力物联网应用便捷开发。

– 自助测试:支持对设备、应用进行自动化测试,并生成测试报告,检验产品 是否达到发布标准。

– 产品发布:产品在开发中心完成自助测试后,开发者可以一键申请发布到产 品中心,已发布的产品可直接应用于商用环境。

(6)

● 了解设备管理服务

请前往平台简介查看设备管理服务的介绍。

● 开发中心和设备管理服务有哪些差异?

a. 两者所在的物联网平台环境不一样

开发中心所在的平台环境为测试环境,设备管理服务所在的平台环境为商用 环境。两个环境的设备数据不能互通,已对接测试环境的设备/应用要迁移商 用环境,需要在商用环境重新创建应用和注册设备,并修改设备/应用中平台 的接入信息。

b. 两者的设备数量限制不一样

开发中心单个项目(应用)下最多可注册20个设备,设备管理服务单个应用 下最多可注册1000万个设备。在其他的平台能力上,两者保持一致,例如开 发中心和设备管理服务使用同样的API,更多的平台能力使用限制请查看使用 限制。

c. 两者的计费策略不一样

开发中心为免费使用,设备管理为付费使用,设备管理服务的具体计费策略 请查看计费详情。

● 开发中心和设备接入服务是否有联系?

开发中心是基于设备管理服务的物联网开发工具,在开发中心上开发的产品

(Profile文件和编解码插件)只适用于设备管理服务,不能在设备接入服务中导 入和使用。

业务概览

当用户在开通设备管理服务时,系统默认一起开通设备接入服务,即用户在使用设备 管理服务时,包含设备接入服务的能力。使用设备管理服务的完整流程如下图所示,

主要分为在开发中心(测试环境)进行产品开发、在控制台(商用环境)进行上线和 日常管理。

● 产品开发:开发者在进行设备接入前,基于开发中心进行相应的开发工作,包括 平台侧开发、设备侧开发、应用侧开发,是真实设备接入到设备管理服务的前提 条件。

● 上线(转商用):基于设备管理服务提供的控制台,将真实设备接入到设备管理 服务中,并对接用户开发的应用服务器,实现设备的远程监控和控制。

● 日常管理:真实设备接入后,基于控制台或者API接口,进行日常的应用管理和设 备管理。

(7)

远端开发 转商用 设备侧开发 云端日常管理

● 创建项目

● 创建产品

● 开发Profile

● 开发编解码插件

● 设备侧开发

● 应用侧开发

API使用指导

– 使用SDK对

● 调测产品

● 自助测试

● 产品发布

● 创建应用

● 导入产品

● 注册设备

● 接入设备

● 应用接入

● 对接验证

● 使用MQTTS协

议接入(联通用 户专用)

● 使用Modbus协

议接入(联通用 户专用)

● 使用Agent

SDK接入

● 使用模组接入

● 软固件升级调测

● 应用管理 – 订阅推送 – 授权访问

● 设备管理

– 设备注册鉴

权 – 数据上报 – 命令下发

– 设备配置更

新 – 设备影子 – 规则引擎

– 群组与标签

– 设备监控 – 远程诊断 – 固件升级 – 软件升级

– 网关与子设

(8)
(9)

2 资源获取(联通用户专用)

非联通用户请查看设备接入服务。

平台对接信息

设备和应用接入物联网平台前需要获取平台的接入地址信息。

平台环境 获取途径

开发中心(测试

环境) 进入开发中心的具体项目中,在“应用 > 对接信息”页面查看

“设备接入信息”和“应用接入信息”。

(10)

平台环境 获取途径 设备管理服务

(商用环境)

在物联网平台的管理控制台,选择设备接入,在“设备和应用 接入信息”下可查看设备和应用的接入地址信息。

设备开发资源

物联网平台支持设备通过MQTT协议和LWM2M/CoAP协议进行接入,设备可以通过调 用设备侧的接口或者集成SDK的方式接入到物联网平台。

资源包名 描述 下载路径

Agent Lite SDK(Linux C) 设备可以通过集成Agent Lite SDK接入物联网平台, Demo提供了调用SDK接 口的样例代码。

使用指导可以参考 Agent

Lite API参考(C)和Agent Lite SDK使用指南(C)。

Agent Lite SDK(Linux通用)

Agent Lite SDK(指定

工具链)

Agent Lite Demo(C- Linux)

Agent Lite SDK(Windows

C) 设备可以通过集成Agent

Lite SDK接入物联网平台, Demo提供了调用SDK接 口的样例代码。

使用指导可以参考 Agent

Lite API参考(C)和Agent Lite SDK使用指南(C)。

Agent Lite SDK(Windows)

Agent Lite Demo(C- Windows)

说明Demo的libs文件夹下为32位 SDK,若需要使用64位 SDK,请下载并替换Demo 中的SDK。

Agent Lite SDK(Java) 设备可以通过集成Agent Lite SDK接入物联网平台, Demo提供了调用SDK接 口的样例代码。

使用指导可以参考 Agent

Lite API参考(Java)和 Agent Lite SDK使用指南 (Java)。

Agent Lite Demo(Java)

说明

● SDK在Demo的libs文件 夹下。

● Agent Lite Demo(Java) 仅适用于Windows系统 环境。

(11)

资源包名 描述 下载路径 Agent Lite SDK(Android) 设备可以通过集成Agent

Lite SDK接入物联网平台, Demo提供了调用SDK接 口的样例代码。

使用指导可以参考 Agent

Lite API参考(Android)和 Agent Lite SDK使用指南 (Android)。

Agent Lite Demo(Android)

说明SDK在Demo的libs文件夹

下。

LiteOS SDK 设备可以通过集成LiteOS SDK接入物联网平台,

Demo提供了调用SDK接 口的样例代码。使用指导 可以参考LiteOS SDK使用 指南。

LiteOS SDK

Profile模板 Profile模板中包含了典型 场景的Profile样例,开发 者可以在模板基础进行修 改,定义自己需要的 Profile。

使用指导可以参考离线开 发Profile。

Profile开发示例

编解码插件样例 编解码插件的代码样例工 程,开发者可以基于该样 例工程进行二次开发。

使用指导可以参考离线开 发插件。

编解码插件开发样例

编解码插件检测工具 用于检测离线开发的编解 码插件的编解码能力是否 正常。

编解码插件检测工具

NB-IoT设备模拟器 用于模拟以CoAP/

LWM2M协议接入物联网 平台的NB设备,实现数据 上报和命令下发功能。

使用指导可以参考体验开 发中心。

NB-IoT设备模拟器

IoT Studio IoT Studio是基于LiteOS 嵌入式系统软件开发的工 具,支持C,C++、汇编等 多种开发语言,提供了代 码编辑、编译、烧录及调 试等一站式开发体验。

使用指导可以参考设备侧 开发实践。

IoT Studio

(12)

应用开发资源

为了降低应用的开发难度、提升开发效率,物联网平台开放了丰富的Restful API和 SDK包。应用通过调用物联网平台的API,实现安全接入、设备管理、数据采集、命令 下发等业务场景。

资源包名 描述 下载

应用侧开发 API JAVA

Demo 物联网平台为应用服务器

提供了Restful API,能够 让开发者快速验证Restful 接口开放的能力,体验业 务功能,熟悉业务流程。

使用指南可以参考IoT平台 应用侧API参考和Java

API Demo使用指导。

API JAVA Demo

应用侧开发 Java SDK Java SDK提供JAVA方法调 用物联网平台Restful接口 与平台通信,Demo提供 调用SDK接口的样例代 码。

使用指南可以参考IoT平台 应用侧JAVA SDK API参 考和JAVA SDK 使用指南

JAVA SDK

JAVA SDK Demo

应用侧开发 Python SDK Python SDK提供Python方 法调用平台Restful接口与 平台通信,Demo提供调 用SDK接口的样例代码。

使用指南可以参考IoT平台 应用侧Python SDK API 参考和Python SDK使用 指南。

Python SDK

Python SDK Demo

证书资源

在设备和应用对接物联网平台的部分场景中,需要在设备侧和应用侧集成相应证书。

请点击获取证书文件。

说明

此证书文件只适用于华为云物联网平台。

证书类型,证书格式,以及适用开发语言,用途详见下表。

证书包名 称

一级目 录

二级目 录

三级 目录

说明

certificat

e Northb oundAPI

code Java 应用服务器通过HTTPS协议调用物联网平 台接口,用于校验物联网平台的合法性 时,使用该目录下的证书。请根据应用服 PHP

(13)

证书包名 称

一级目 录

二级目 录

三级 目录

说明

Pytho

n 务器侧的编程语言选择相应目录下的证书 文件,并置于应用服务器侧。

postm

an - Postman通过HTTPS协议调试物联网平台 接口时,使用该目录下的证书。

Agent

Lite Androi

d - 终端设备或网关通过集成Agent Lite SDK 接入物联网平台时,使用该目录下的证 书。请根据终端设备或网关侧的编程语言 选择相应目录下的证书文件,并置于终端 设备或网关侧。

C-Linux -

Java -

(14)

3 从这里开始

联通用户专用,非联通用户请查看设备接入服务。

使用设备管理服务的完整流程如下图所示,主要分为产品开发、上线和日常管理三个 部分。用户可以根据自己角色的不同,执行对应的操作即可。

1. 产品开发:在开发中心(测试环境)操作,开发者在接入设备前,需要进行相应 的开发工作,包括平台侧开发(开发中心)、设备侧开发、应用侧开发,是真实 设备接入到设备管理服务的前提条件。

其中设备侧开发和应用侧开发不分先后顺序,可同步进行。

2. 上线(转商用):基于设备管理服务提供的控制台,将真实设备接入到设备管理 服务中,并对接用户开发的应用服务器,实现设备的远程监控和控制。

3. 日常管理:真实设备接入后,基于控制台或者API接口,进行日常的应用管理和设 备管理,详情请参考使用指南。

3.1 我是模组厂商(联通用户专用)

3.2 我是设备厂商(联通用户专用)

3.3 我是设备用户(联通用户专用)

3.4 我是应用开发者(联通用户专用)

(15)

3.1 我是模组厂商(联通用户专用)

非联通用户请查看设备接入服务。

芯片是一种把集成电路小型化的方式,并时常制造在半导体晶圆表面上。模组是由若 干个显示模块、驱动电路、控制电路、芯片以及相应的结构件构成的一个独立的显示 单元。模组与芯片关系就像是U盘和Flash芯片的关系,用户99%的情况是直接使用模 组,没有人直接用芯片。当前模组厂商主要提供Wifi、NB-IoT、2/3/4/5G等通信模 组。

在物联网解决方案中,作为模组厂商的您需要让模组实现MQTTS、LWM2M、CoAP等 物联网协议栈及连接平台的能力,您只需要将Agent Tiny SDK集成在现有的模组固件 包中,这样模组就具备了接入华为物联网平台的能力。 我们将提供华为IoT技术认证 支持,帮助您快速完成SDK集成,通过华为认证的模组可以申请入驻华为云市场,我 们将会推荐给物联网平台用户。查询华为已认证的模组。

Agent Tiny SDK具有普适性,可以广泛移植于WiFi模组、2/3/4/5G模组、NB-IoT模 组,无需考虑模组类型(了解Agent Tiny SDK详情)。如何在模组中集成Agent Tiny SDK,请参考华为IoT技术认证流程,获取相关技术支持。

3.2 我是设备厂商(联通用户专用)

非联通用户请查看设备接入服务。

角色介绍

作为开发并销售最终设备的厂商,您需要进行设备集成开发,以便让设备具备接入物 联网平台的能力。我们将提供华为IoT技术认证支持,帮助您快速完成设备适配和认 证。

通过华为认证的设备可以申请入驻华为云市场,我们将会推荐给物联网平台用户。查 询:华为已认证的设备。

根据设备是否具有IP通信能力,设备接入平台分为以下两种方式:设备直接接入平台 和设备通过网关接入平台,您可以根据自己的设备选择合适的方式。

前提条件

已完成平台侧开发。

直接接入平台

针对已实现TCP/IP协议栈的设备,可以直接与平台进行通信,常见的设备包括网关、

以太网设备、NB-IoT设备等。 根据设备自身硬件的特点不同,华为物联网平台提供四 种方式直接接入,您需要根据自身行业特征及业务情况选择合适的接入方案,四种方 案优缺点如下:

(16)

接入方式 方案优点 方案约束 方案一:集成

LiteOS接入物联 网平台

有对应的SDK,集成 难度较低,对您的开 发技能要求较低。

方案不灵活,开发者只能根据LiteOS提 供的API去实现自己的功能,超出API外 的功能,无法自定义,对于设备的硬件 要求比较高。

方案二:没有配 置模组时,通过 集成Agent Lite SDK接入物联网 平台

有对应的SDK,集成 难度低,对您的开发 技能要求较低。

方案不灵活,开发者只能根据Agent SDK提供的API去实现自己的功能,超出 API外的,无法自定义。

方案三:配置模 组时,通过集成 Agent Tiny SDK 接入物联网平台

集成难度非常低,对 您的开发技能要求 低。

需要采购指定型号的模组。

方案四:通过实 现原生协议接入 物联网平台

方案比较灵活,可根 据业务需要,实现协 议定义的功能,对设 备硬件无限制。

需要从底层协议开始实现,集成难度 大,代码开发量大,对于开发者要求 高。

● 方案一:设备需要具备智能操作系统,硬件满足RAM容量 > 32KB,Flash容量 >

128KB时,通过集成LiteOS操作系统接入平台。

集成开发流程详见以下链接,请根据设备支持的协议选择:

LiteOS SDK端云互通组件CoAP/LWM2M开发指南

LiteOS SDK端云互通组件MQTT开发指南

● 方案二:设备没有配置模组时,需通过集成Agent Lite SDK接入平台。了解Agent

Lite SDK详情。

当设备存储及计算能力较强(满足RAM容量 > 4MB,Flash容量 > 2MB)时,推 荐设备集成Agent Lite SDK。

目前Agent Lite SDK支持C、Java和Android三个版本。实际开发中,请根据开发 时使用的语言、平台,选用合适的设备端SDK集成:

Agent Lite SDK集成开发指导(C)

Agent Lite SDK集成开发指导(Java)

Agent Lite SDK集成开发指导(Android)

(17)

● 方案三:当设备配置有模组时,根据模组特征,选择性集成Agent Tiny SDK接入 平台。了解Agent Tiny SDK详情

– 如果采用经过华为认证的模组,该模组已集成Agent Tiny SDK,可以利用模 组直接接入物联网平台。您可以访问华为云市场,购买已认证的模组。

– 如果采用未经过华为认证的模组,您需要集成Agent Tiny SDK,根据SDK集 成位置,分为两种模式:

MCU+模组模式:此模式下,设备包含MCU(Microcontroller Unit)和 通信模组,其中MCU集成 Agent Tiny SDK及运行产品逻辑,模组作为通 信模块,提供通信网络。请参考华为IoT技术认证流程,获取相关技术支 持。

OpenCPU模式:此模式下,设备只包含通信模组,模组集成 Agent Tiny SDK及运行产品逻辑,请参考华为IoT技术认证流程,获取相关技术 支持。

● 方案四:设备通过实现原生MQTT协议接入,适合一切设备。可查看《设备集 成》了解操作。您可访问《 MQTT接口参考》获取华为物联网平台开放的能力。

通过网关接入平台

针对未实现TCP/IP协议栈的设备,由于无法直接同物联网平台通信,它需要通过网关 进行数据转发。常见设备包括智慧园区中的照明系统、楼宇系统设备等。这些场景下 的限制如下:

制约因 素

详细描述

设备限

制 设备非常简单,没有集成TCP/IP协议栈,无法提供IP通信网络能力,只能 基于一些简单的近场通信协议如ZigBee、ZWave、Bluetooth或者是其他 的一些非IP有线方式传输协议如串口、并口等接入,此时需要一个网关设 备,先让设备接入到网关,再通过网关与华为物联网平台通信。

网络限 制

设备部署在独立的网络内,由于安全等考虑,无法直接与物联网平台互 通,需要借助网关进行网络桥接。

(18)

制约因 素

详细描述

业务限 制

下层设备的管理控制逻辑比较复杂,需要利用网关软件自身具有对应的逻 辑控制能力配合物联网平台进行业务管理。

集成限 制

子设备已经接入到现有系统,不愿意再进行设备改造,需要将现有系统通 过网关接入到物联网平台。

针对此类设备,通过在网关上集成Agent Lite SDK, 设备将数据上报给网关,通过网关 转发到华为物联网平台。华为公司协同合作伙伴,对已集成Agent Lite SDK的网关进 行了认证,您可以访问华为云市场,购买符合自身业务的网关产品。目前Agent Lite SDK支持C、Java和Android三个版本。实际开发中,请根据开发时使用的语言、平 台,选用合适的SDK集成:

Agent Lite SDK集成开发指导(C)

Agent Lite SDK集成开发指导(Java)

Agent Lite SDK集成开发指导(Android)

3.3 我是设备用户(联通用户专用)

非联通用户请查看设备接入服务。

作为设备用户,您既是设备的购买者,又可能是设备的实际管理者,通常您需要考虑 两件事:

1. 在采购设备时,如何评估设备满足您的业务需求并且具备接入物联网平台的能 力。关于此方面的知识,您可以参考设备能力评估。

2. 在进行日常管理时,针对不具备接入物联网平台的设备,如何将现有设备进行改 造,以便设备能接入到物联网平台中。关于此方面的知识,您可以参考设备改 造。

前提条件

已完成平台侧开发。

设备能力评估

本节主要关注设备通信能力的评估。由于承接业务的不同,对于设备的要求也不同,

采购的设备通信能力评估一般由以下几个流程:

(19)

1. 针对您所处的行业,您需要深度分析业务对于设备(硬件资源、电池、性能 等)、网络实时性及网络覆盖度等要求,确保现有设备满足业务需求。典型案例 如下表所示。

典型 行业

设备特征 技术关注点

智慧 抄表

接入设备数量多、电量有限、设备常常 分布在地上或地下多个区域,要求有信 号覆盖。

设备数量多,接入成本要 低,自身硬件资源有限,要 求设备网络要深度覆盖,低 功耗,数据量较少。

智慧 园区

应用子系统多、设备传感器种类多、无 统一的通信协议标准,上报的数据无统 一格式。设备大部分无IP通信能力,需要 通过网关接入。可通过有线网络接入。

应用独立子系统多,格式不 统一,数据孤岛多,需要一 个统一平台管理。设备不具 备IP通信能力,硬件资源有 限,通常通过网关转发数 据,因此主要关注网关的通 信能力。

车联 网

设备电量充足。 需要实时对车辆数据进行分

析等,因此需要接入网络实 时性高,数据传输速率高 等,主要关注接入网络选 型,要选传输速率较高的无 线网络接入。

2. 根据业务对于数据及成本要求,确认设备支持的网络是否能够满足业务需求。

业务应用 推荐的接入

网络 网络特点

智慧家庭、智 慧楼宇等

以太网 传输速率可达到10Gbit/s、随时在线、成本高。

车联网、视频

监控等 4G/5G/LTE-

v 传输速率>10Mbit/s、功耗高、成本高。

电子广告、无 线ATM、梯联 网等

eMTC、

GPRS 传输速率<1Mbit/s、功耗较低、成本较低。

远程抄表、智

能停车等 NB-IoT、

LoRa 传输速率<100Kbit/s、功耗低、成本低、穿透力 强、信号覆盖好。

3. 确认设备是否集成了物联网协议,以便保证设备可以连接到物联网平台,利用物 联网平台进行设备管理。华为物联网平台目前支持设备采用以下协议接入。

(20)

通信 协议

协议描述 应用场景

LWM2M LWM2M是开发移动联盟OMA定 义的用于设备管理的应用层通讯 协议,主要使用在资源受限的嵌 入式设备上。

NB-IoT设备接入平台,业务实时性 要求不高,低功耗、信号广覆盖场 景。

CoAP CoAP是资源受限设备和受限网络 专用的Web传输协议,专为机器 对机器的应用而设计。CoAP提供 请求/响应交互模型,支持内置的 服务和资源发现。需要底层实现 UDP协议。

NB-IoT设备接入平台,业务实时性 要求不高,低功耗、信号广覆盖场 景。

MQTT MQTT是一种物联网连接协议,提 供非常轻量级的发布/订阅消息传 输方式,用于在低带宽、不可靠 的网络的设备管理。该协议构建 于TCP/IP协议上。

对设备的可靠性和实时性要求高,

适合长连接的场景,如智能路灯 等。

4. 根据前面步骤,总结设备的特征,选择与业务相匹配的设备。例如针对智能抄表 行业,要求电表通信模块具有覆盖广、穿透力强、耗电量小、成本低特点,因此 接入网络选择NB-IoT网络,设备采用NB-IoT模组,模组集成了LWM2M协议,可 以保证设备接入华为物联网平台。

设备改造

设备如果不具备接入华为物联网平台能力,需要对设备进行改造,改造方法跟设备厂 商进行设备集成方法一样,详见我是设备厂商介绍。

3.4 我是应用开发者(联通用户专用)

非联通用户请查看设备接入服务。

华为物联网平台面向全球各行各业提供物联网服务,并通过Restful API的形式对外开 放物联网平台丰富的设备管理能力。应用开发人员基于API接口开发所需的行业应用,

如智慧城市、智慧园区、智慧工业、车联网等行业应用,满足不同行业的需求。开发 包括如下几个关键阶段。

应用服务器开发阶段 操作指引 调用API接口或者集成

SDK 应用开发者通过调用API接口或者集成SDK调用物联网平台 的能力进行应用服务器的开发。可参考表3-1选择合适的开 发方式。

(21)

应用服务器开发阶段 操作指引 开发接收设备数据的

接口

应用服务器需开发接收数据对应的接口(对应订阅管理接 口中的callbackUrl地址),用于应用服务器向物联网平台 发起订阅后,接收物联网平台推送的设备相关数据。

制作调测证书与加载 ● 应用服务器通过HTTPS协议调用物联网平台提供的API接 口,需要在应用服务器上预置CA证书,用于应用服务器 校验物联网平台的合法性,该证书可通过下载证书文件 获取。

● 物联网平台通过HTTPS或HTTP协议向应用服务器推送数 据,当使用HTTPS协议时需要在物联网平台上加载CA证 书,同时在应用服务器上加载设备证书,用于物联网平 台校验应用服务器合法性。在调测时,您可以通过制作 自签名证书进行调测。在商用时,建议您向证书知名机 构申请和购买商用证书,以确保证书的安全性。

接入设备管理服务 物联网平台提供了开发中心(调测平台)和商用管理平 台,您在进行应用开发和调试时,可以先接入开发调测平 台,待功能开发完善,具备商用使用条件时,再接入商用 管理平台。

应用接入地址获取请参考平台对接信息,应用ID和应用密 钥为在商用管理平台上“创建应用”时分配。

3-1 开发方式对比说明

开发方式 优点 缺点 适用场景

调用API接

口 ● 开发灵活,随需调 用API接口。

● 对于应用开发语言 无限制,支持所有 的开发语言

● 开发工作量、开发 难度相比集成SDK 大。

● 应用上线周期相对 较长。

● 企业开发能力 强,需灵活使用 物联网平台的能 力。

● 企业已有应用服 务器,需要对接 物联网平台。

集成SDK ● 代码开发工作量较

小,开发能力的门 槛相比直接调用API 接口较低。

● 开发周期短,可以 快速构建应用服务 器。

● 与直接调用API接口 相比,开发的灵活 性稍差。

● 开发语言支持 Java、PHP和 Python,暂还不支 持所有的开发语 言。

适用于企业对应用 的个性化的定制要 求不高,能够快速 构建和上线应用。

(22)

4 平台侧开发

4.1 体验开发中心(联通用户专用)

4.2 创建项目(联通用户专用)

4.3 创建产品(联通用户专用)

4.4 开发Profile 4.5 开发编解码插件

4.6 调测产品(联通用户专用)

4.1 体验开发中心(联通用户专用)

非联通用户请查看设备接入服务。

本文通过“智慧路灯”为示例,通过开发中心提供的设备模拟器和应用模拟器替代真 实的设备和应用,带您快速体验设备上报数据到物联网平台和远程下发控制命令到设 备的全过程。

假设:

路灯设备上报一条数据消息,包含路灯的光照强度(Light_Intensity)和路灯的开关状 态(Light_Status);支持远程控制路灯开关状态的命令(SWITCH_LIGHT),上报数 据的格式为二进制格式。

前提条件

已经注册华为云官方帐号,具体可参考华为云账号注册。

已经在华为云上完成实名制认证,具体可参考实名认证。

开发中心申请和创建项目

用户第一次使用物联网平台云服务时,首先需要申请开通“开发中心”服务。基于开 发中心,用户可以在线开发设备的Profile文件和编解码插件;另外开发中心提供了设 备和应用模拟器,可以便捷地调测开发的Profile文件和编解码插件的正确性。

步骤1 登录华为云官方网站,访问IoT设备管理服务。

(23)

步骤2 在设备管理云服务首页,点击“开发中心”开通业务。

步骤3 填写开通信息,本示例以选择“智能路灯解决方案”为例,点击“立即开通”。

步骤4 (可选)进入“开发中心”首页后,如果用户是第一次使用,首先需要点击右上角的

“厂商信息”,编辑并完善厂商信息后,返回主页。

步骤5 在“开发中心”首页,点击“新建项目”,创建一个新的物联网产品项目,填写项目 名称、所属行业后,点击“确定”。

步骤6 创建完项目后,会生成应用ID和应用密钥,请将密钥下载到本地并妥善保管,然后进 入项目。

说明

应用密钥用于应用服务器接入的鉴权,在界面上不可见,请妥善保管,如果忘记了密钥,可以在

“对接信息”功能中,对密钥进行重置。

(24)

步骤7 项目创建完成后,可以在“对接信息”中,查看项目的基本信息,例如设备接入信 息、应用接入信息、重置密钥等。

----结束

产品在线开发

产品模型(也称Profile)用于描述设备具备的能力和特性。开发者通过定义Profile文 件,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属 性、命令等信息,例如温度、光强度、开关等。

(25)

本示例以一款智慧路灯为例进行描述,假设路灯设备上报一条数据消息,包含路灯的 光照强度(Light_Intensity)和路灯的开关状态(Light_Status);支持远程控制路灯 开关状态的命令(SWITCH_LIGHT)。

步骤1 在“产品开发”界面,点击“新建产品”,然后选择“自定义产品”。

步骤2 在弹出的对话框中,设置产品信息,完成后点击“创建”。

(26)

步骤3 进入到Profile定义界面后,点击“新建服务”,填写服务信息,然后点击“√”。

(27)

步骤4 定义路灯上报的环境光强度和路灯开关状态的属性。首先输入“服务名称”:

StreetLight,然后点击“新增属性”。

步骤5 首先定义一条属性为:路灯采集的当前环境的光照强度,数据类型为int,光照强度范 围为:0~100。

(28)

步骤6 再点击“添加属性”按钮,定义一条属性为:路灯当前的开关灯状态,数据类型为 int,0代表关闭,1代表打开状态。

(29)

步骤7 接下来定义远程控制开关灯状态的命令。点击“添加命令”按钮,定义命令名称为:

SWITCH_LIGHT。

步骤8 点击“添加下发命令字段”,命令名称为:SWITCH_LIGHT,数据类型为:string,长 度为:3个字符,枚举值为:ON,OFF。

(30)

步骤9 点击“确定”按钮,完成该路灯的Profile文件创建。

----结束

编解码插件在线开发

通常情况下设备为了省电,设备会采用“二进制”格式上报数据,编解码插件的作用 就是将设备上报的“二进制”格式数据,按照Profile文件的定义的属性转换为

“JSON”格式数据,便于物联网平台和应用服务器识别。同时,用户远程下发控制命 令时,物联网平台会将“JSON”格式的命令转换为“二进制”格式数据下发给设备。

注:如果设备本身上报的是JSON格式数据,则不需要定义编解码插件,如使用Agent Lite接入的设备。

步骤1 在“产品开发”页面进入到创建的产品中,选择“编解码插件开发”。

步骤2 在“在线编解码插件编辑器”中,点击“新增消息”。

(31)

步骤3 输入消息名:LightData,消息类型选择:数据上报,然后再点击“添加字段”。

步骤4 输入上报消息的名字:LightIntensity,数据类型:int8u(8位无符号整型),长度:1 字节,单击“完成”。

(32)

步骤5 再次单击“添加字段”,添加路灯上报的路灯开关状态数据。

步骤6 输入名字:LightStatus,数据类型:int8u(8位无符号整型),长度:1字节,单击

“完成”。

(33)

步骤7 单击“完成”,完成路灯上报数据的编解码定义。

步骤8 再次单击“新增消息”,定义远程控制路灯开关的命令对应的编解码插件消息。

步骤9 输入消息名:SwitchStatus,消息类型选择:命令下发,然后再点击“添加字段”。

(34)

步骤10 输入名字:SwitchStatus,数据类型:string(字符串类型),长度:3字符,单击

“完成”。

(35)

步骤11 单击“完成”,完成远程控制命令的编解码定义。

步骤12 拖动右侧“设备模型”区域的属性字段和命令字段(Profile文件定义的字段),与编 解码插件定义的数据上报消息和命令下发消息的相应字段建立映射关系。

(36)

步骤13 编解码插件与Profile文件建立映射完成后,单击右上角“保存”,并单击“部署”,

完成编解码插件的部署。

----结束

使用在线模拟器调试

模拟器在线调测具备设备模拟和应用模拟功能,可以对定义的Profile文件和编解码插 件进行调试,用户可以直观的感受设备上报数据到物联网平台,以及使用物联网平台 下发远程控制命令。

步骤1 在“产品开发”页面进入到创建的产品中,选择“在线调测”,并单击“新增测试设 备”。

步骤2 选择“没有真实的物理设备”,使用模拟器进行调测,单击“创建”后,系统会默认 创建一个模拟设备,并接入调测界面。

(37)

步骤3 模拟设备数据上报场景,假设上报路灯采集的光照强度为:20,路灯开关状态为:0

(关闭),则在设备模拟器中,输入十六进制码流:1400(光照强度消息为第一个字 节,对应的十六进制码流为14;路灯开关状态为第二字节,对应的十六进制码流为 00),然后单击“发送”,我们可以在应用模拟器中看到转换为JSON格式的数据为:

"Light_Intensity": 20, "Light_Status": 0。

(38)

步骤4 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:

SWITCH_LIGHT,命令取值为:ON,单击“立即发送”,我们可以在设备模拟器中看 到转换为十六进制的码流:4F4E(经ASCLL码转为为十六进制)。

(39)

----结束

使用离线模拟器调试

NB-IoT设备模拟器用于模拟以CoAP/LWM2M协议接入物联网平台的NB设备,实现数

据上报和命令下发功能。

步骤1 选择“产品 > 设备管理”,单击“添加真实设备”。

步骤2 选择前面创建的产品,并填写设备相关信息,单击“确定”。

(40)

注:如果使用DTLS传输层安全协议接入时,设备注册方式选择“加密”,且请妥善保 存PSK码。

如下信息根据实际情况填写:

● 设备名称:NBdevice01

● 设备标识:aaaaa11111

● 安全密钥(PSK):aaaaa11111aaaaa

● 设备注册方式:加密

设备创建成功后,将返回“设备名称”、“设备ID”和“PSK码”。

步骤3 下载并解压NB-IoT设备模拟器,然后双击“NB-IoTDeviceSimulator_zh.jar”,运行模 拟器。

注:请确保已经安装jdk,否则,无法运行jar文件。

NB-IoT设备模拟器的文件说明如下:

Californium.properties为模拟器的配置文件。

NB-IoTDeviceSimulator_en.jar为英文版模拟器。

NB-IoTDeviceSimulator_zh.jar为中文版模拟器。

setting.properties为设备模拟器接入物联网平台的配置文件。

步骤4 模拟器启动后,会提示“是否开启DTLS加密传输?”,单击“是”。

注:如果模拟设备不使用DTLS协议接入物联网平台,单击“否”。

(41)

步骤5 填写“IP地址”、“VerifyCode”和“PSK”,单击“注册设备”,将模拟器与物联网 平台进行绑定。

注:如果未开启DTLS加密传输,则无需填写PSK。

如下信息根据实际情况填写:

● IP地址:物联网平台的接入地址,请到开发中心“应用 > 对接信息”查看。

● VerifyCode:设备标识码,如:aaaaa11111。

● PSK:aaaaa11111aaaaa

设备绑定成功,可以回到开发中心,选择“产品 > 设备管理”,看见设备

“aaaaa11111”显示“在线”,表示模拟器绑定成功。

步骤6 模拟设备数据上报场景,假设上报路灯采集的光照强度为:20,路灯开关状态为:0

(关闭),则在NB-IoT设备模拟器中,输入十六进制码流:1400(光照强度消息为第 一个字节,对应的十六进制码流为14;路灯开关状态为第二字节,对应的十六进制码 流为00),然后单击“发送数据”。

(42)

数据上报成功,可以回到开发中心,在设备“aaaaa11111”的“历史数据”页面中查 看到转换为JSON格式的数据为:"Light_Intensity": 20, "Light_Status": 0。

步骤7 模拟远程下发控制命令场景,在开发中心,选择“设备管理”,单击设备

“aaaaa11111”右边的“调试产品”,进入调试界面。

在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:

ON,单击“立即发送”。

我们可以在“日志”栏看到CIG下发的数据内容:ON,且模拟器会提示“收到平台的 下行消息,是否应答?”,单击“是”,可以在开发中心的应用模拟器看到命令状态 为“已送达”。

(43)

----结束

进阶体验

按照本页面的指导完成开发中心快速体验,您应该已经基本了解了设备管理服务的在 线开发流程,包括创建项目,开发产品模型、编解码插件和使用模拟器在线调测。

若您想要进一步体验设备管理服务,可参考开发指南完成真实应用和设备的对接,使 用真实应用或控制台体验更多功能,控制台的操作指导请参见使用指南。

4.2 创建项目(联通用户专用)

非联通用户请查看设备接入服务。

项目是物联网平台提供物联网应用和设备的调测空间,您可以根据场景的不同创建不 同项目空间分别调测。

● 创建项目时,物联网平台会分配一个应用ID(接口调用时参数名为appId)作为 项目的唯一标识。若应用服务器需要调用物联网平台的API接口进行一些业务处 理,请求中必须携带appId以接入对应的项目空间,鉴权接口携带在Body中,其 他接口的appId的值一般携带在Header中。

● 创建项目后,可以在项目中查看应用服务器和设备的接入地址和端口信息,方便 您快速对接应用服务器和设备。

● 项目被删除后项目内的所有资源,如设备、产品、订阅数据在平台中的信息会被 全部删除,并且不可恢复,请谨慎操作。

创建项目

在基于开发中心进行物联网开发时,您需要根据行业属性创建独立的项目,并在该项 目空间内开发物联网产品和应用。

步骤1 在开发中心首页,点击“新建项目”。

(44)

步骤2 填写“项目名称”、“所属行业”、“描述”等项目信息后,点击“创建”。“项目 名称”需要保持唯一,不可以和其他项目冲突,否则会创建失败。最多支持创建10个 项目。

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

(45)

步骤4 选择新创建的项目,可以进入项目空间。在项目空间内,您可以快速完成Profile文件 和编解码插件的在线开发和调试,获取设备和应用的开发帮助,以及通过模拟器完成 设备或应用的对接调试。

----结束

查看项目信息

项目创建完成后,您可以在“对接信息”中,查看项目的基本信息,例如设备接入地 址、应用接入地址、重置密钥等。

(46)

删除项目

项目被删除后项目内的所有资源,如设备、产品、订阅数据在平台中的信息会被全部 删除,并且不可恢复,请谨慎操作。

步骤1 在开发中心首页的“我的项目”中,选择需要删除的项目,点击项目右上角的“··

·”按钮,然后点击“删除”。

步骤2 系统将弹出“删除项目确认”窗口,点击“确认”完成项目删除。

----结束

4.3 创建产品(联通用户专用)

非联通用户请查看设备接入服务。

在物联网平台中,某一类具有相同能力或特征的设备的合集被称为一款产品。产品包 含Profile(产品模型)、编解码插件、测试报告等资源,其中产品信息被记录在 Profile中。

● 在一个项目里最多可以创建20个产品。

(47)

● 产品开发最重要的是开发Profile,Profile用于描述设备具备的能力和特性。定义 Profile,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的 服务、属性、命令等信息。如果设备上报的数据是二进制码流格式,就需要开发 对应的编解码插件,用于物联网平台完成二进制格式和JSON格式的转换。

● 删除产品后,该产品下的Profile、编解码插件等资源将被清空,请谨慎操作。

创建产品

开发中心上提供了多种创建产品的方法。

方式 描述

基于系统模板创建 开发中心提供了多种产品模板,这些模板涉及多个领域。模 板中提供了已经编辑好的Profile文件,您可以根据自己的需 要对Profile中的字段进行修改和增删。有的模板同时提供了 开发好的编解码插件,用户也可以进行修改。

基于快速集成模板 创建

类似系统模板,快速集成也是提供了一些产品模板,这些模 板适用快速体验平台的集成对接,或者适用一些研讨或培训 的学习场合。

基于已有产品创建 您可以基于已有的产品进行克隆,创建新的产品。

本地导入产品创建 将本地写好的Profile文件上传到平台,开发一个新产品。

自定义产品 您可以从零自定义构建产品。

接下来以创建自定义产品为例,全新定义一款产品。

步骤1 在项目空间内,选择“产品 > 产品开发”,点击“新建产品”。

步骤2 在“自定义产品”界面,点击“自定义产品”。

(48)

步骤3 系统将弹出“设置产品信息”窗口,填写“产品名称”、“产品型号”等信息后,点 击“创建”。

● “产品名称”、“型号”需要在项目内保持唯一,否则会创建失败。

● “所属行业”、“设备类型”、“接入应用层协议类型”和“数据格式”等信息 根据实际情况进行填写。

● 当“数据格式”配置为“二进制码流”时,该产品下需要进行编解码插件开发;

当“数据格式”配置为“JSON”时,该产品下不需要进行编解码插件开发。

(49)

步骤4 在“产品开发”界面将会呈现已经创建的产品,选择具体产品,可以进入该产品的开 发空间。

(50)

----结束

完善产品详情

步骤1 在“产品开发”界面选择需要查看详情的产品,点击该产品右侧“···”按钮,然 后点击“查看产品详情”,进入“产品详情”界面。

步骤2 在“产品详情”界面,可以查看产品的“详情介绍”、“产品文件”、“测试报 告”、“厂商信息”等。在“详情介绍”界面,可以对“产品简介”、“功能亮 点”、“产品规格”等信息进行完善。

----结束

删除产品

删除产品后,该产品下的Profile、编解码插件等资源将被清空,请谨慎操作。

步骤1 在“产品开发”界面选择需要删除的产品,点击该产品右侧“···”按钮,然后点 击“删除”。

(51)

步骤2 系统将弹出删除产品确认窗口,点击“确定”完成产品删除。

----结束

4.4 开发 Profile

4.4.1 什么是 Profile(联通用户专用)

非联通用户请查看设备接入服务。

Profile(即产品模型)是用来描述一款产品中的设备“是什么”、“能做什么”以及

“如何控制该设备”的文件。在物联网平台集成对接中需要先创建Profile,因为 Profile里面定义了设备上报的数据和应用服务器下发的命令包含了哪些字段。定义 Profile,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服 务、属性、命令、升级能力等信息。

Profile主要包含产品信息、服务能力和维护能力三部分。

● 产品信息

描述一款水表设备的基本信息,包括厂商ID、厂商名称、产品类型、型号、协议 类型。其中厂商ID和型号唯一标识一款产品。

(52)

例如,某个水表的制造厂商为“HZYB”,制造商ID为“TestUtf8ManuId”,型 号为“NBIoTDevice”,协议类型为“CoAP”。

● 服务能力

服务能力用于描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,

再定义每个服务具备的属性、命令以及命令的参数。

以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,

并且能够接受服务器下发的各种命令。Profile文件在描述水表的能力时,可以将 水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。说明如 下:

服务名 描述

基础(WaterMeterBasi c)

用于定义水表上报的水流量、水温、水压等参数,如果需 要命令控制或修改这些参数,还需要定义命令的参数。

告警(WaterMeterAlar m)

用于定义水表需要上报的各种告警场景的数据,必要的话 需要定义命令。

电池(Battery) 定义水表的电压、电流强度等数据。

传输规则(DeliverySchedul e)

定义水表的一些传输规则,必要的话需要定义命令。

连接(Connectivity) 定义水表连接参数。

注:具体定义几个服务是非常灵活的,如上面的例子可以将告警服务拆分成水压 告警服务和流量告警服务,也可以将告警服务合入到水表基础服务中。

● 维护能力

描述设备具备软固件升级、配置更新等能力。

在线开发和离线开发

Profile的开发手段有在线开发和离线开发两种,我们推荐使用开发中心在线开发 Profile。

● 在线开发即在开发中心上,通过界面操作开发Profile,开发完成后可以下载。

● 离线开发是指通过了解Profile格式规范,在本地进行开发、打包并上传。

4.4.2 在线开发 Profile(联通用户专用)

非联通用户请查看设备接入服务。

在线创建Profile前需要先创建项目并定义产品。创建产品需要输入manufactureId、

manufactureName、deviceType、Model等信息,Profile会使用这些信息作为设备能 力字段取值。在产品创建时,如果选择使用系统模板,则系统将会自动使用相应的 Profile模板,您可以直接使用或在此基础上进行修改;如果选择自定义产品模板,则 需要完整定义Profile。

(53)

本节定义包含一个服务的Profile为示例,该Profile包含设备上报数据、下发命令、下 发命令响应、软固件升级等场景的服务和字段。

步骤1 在“产品开发”界面选择产品,选择具体产品,进入该产品的开发空间。

步骤2 在产品开发空间,点击“Profile定义”,然后点击“新建服务”。

步骤3 在“新建服务”区域,对服务名称、属性和命令进行定义。每个服务下,可以包含属 性和命令,也可以只包含其中之一,请根据此类设备的实际情况进行配置。

1. 填写“服务名称”,“服务名称”采用首字母大写的命名方式,比如:

WaterMeter、Battery。

2. 点击“添加属性”,在弹出窗口中配置属性的各项参数,点击“确定”。

– 名称:首位必须为字母,建议采用驼峰形式,如batteryLevel、

internalTemperature。

– 数据类型:配置可参考如下原则:

int:当上报的数据为整数或布尔值时,可以配置为此类型。

(54)

decimal:当上报的数据为小数时,可以配置为此类型。配置“经纬 度”属性时,数据类型建议使用“decimal”。

string:当上报的数据为字符串、枚举值或布尔值时,可以配置为此类 型。如果为枚举值或布尔值,值之间需要用英文逗号(“,”)分隔。

DateTime:当上报的数据为日期时,可以配置为此类型。

jsonObject:当上报的数据为json结构体时,可以配置为此类型。

– 访问模式:设置应用服务器通过接口访问数据的模式:

R:通过接口可以查询该属性。

W:通过接口可以修改该属性值。

E:应用服务器订阅了数据变化通知后,设备上报了属性,应用服务器会 收到推送通知。

– 是否必选:设备上报的这个属性是不是必选。

3. 点击“添加命令”,在弹出窗口中配置“命令名称”,点击“确定”。“命令名 称”首位必须为字母,建议采用全大写形式,单词间用下划线连接的命名方式,

如DISCOVERY,CHANGE_STATUS。

(55)

4. 点击“添加下发命令字段”,在弹出窗口中配置下发命令字段的各项参数,点击

“确定”。“下发命令字段名称”首位必须为字母,建议采用第一个单词首字母 小写,其余单词的首字母大写的命名方式,比如valueChange;其余参数,请根 据此类设备的实际情况进行配置。

5. 如果要添加命令响应,点击“添加响应命令字段”,在弹出窗口中配置响应命令 字段的各项参数,点击“确定”。“响应命令字段名称”首位必须为字母,建议 采用第一个单词首字母小写,其余单词的首字母大写的命名方式,比如

valueResult;其余参数,请根据此类设备的实际情况进行配置。

(56)

步骤4 如果要添加软件/固件升级能力,在“维护能力配置 ”下,开启“软件升级”/“固件 升级”。

提交后,Profile中会自动多出一个“DM服务”应用于升级。

----结束

4.4.3 离线开发 Profile(联通用户专用)

非联通用户请查看设备接入服务。

Profile本质上就是一个devicetype-capability.json文件和若干个serviceType- capability.json文件,按照如下目录打包的一个zip包。其中WaterMeter是 deviceType,TestUtf8Manuld是manufactureId,NBIoTDevice是model,

WaterMeterBasic/WaterMeterAlarm/Battery是服务名。

(57)

所以离线开发profile就是按照Profile编写规则和JSON格式规范在devicetype-

capability.json中定义设备能力,在servicetype-capability.json中定义服务能力。因此 离线开发Profile需要熟悉JSON的格式。

由于离线开发Profile文件相对在线开发比较耗时,因此推荐在线开发Profile(联通用 户专用)。

命名规范

在Profile的开发过程中,需要遵循如下命名规范:

● 设备类型(deviceType)、服务类型(serviceType)、服务标识(serviceId)采 用单词首字母大写的命名法。例如:WaterMeter、Battery。

● 属性使用第一个单词首字母小写,其余单词的首字母大写的命名法。例如:

batteryLevel、internalTemperature。

● 命令使用所有字母大写,单词间用下划线连接的格式。例如:DISCOVERY,

CHANGE_COLOR。

● 设备能力描述json文件固定命名devicetype-capability.json。

● 服务能力描述json文件固定命名servicetype-capability.json。

● 厂商ID和型号唯一标识一款产品,故这些信息的组合在不同的Profile文件中不能 重复,且仅支持英文。

● 要注重名称的通用性,简洁性;对于服务能力描述,还要考虑其功能性。例如:

对于多传感器设备,可以命名为MultiSensor;对于具有显示电量的服务,可以命 名为Battery。

Profile 模板

将一款新设备接入到物联网平台,首先需要编写这款设备的Profile。物联网平台提供 了一些Profile文件模板,如果新增接入设备的类型和功能服务已经在物联网平台提供

(58)

的设备Profile模板中包含,则可以直接选择使用;如果在物联网平台提供的设备 Profile模板中未包含,则需要自己定义。

例如:接入一款水表 ,可以直接选择物联网平台上对应的Profile模板,修改设备型号 标识属性和设备服务列表。

说明

物联网平台提供的Profile模板会不断更新,如下表格列举设备类型和服务类型示例,仅供参考。

设备型号识别属性:

属性 Profile中key 属性值

设备类型 deviceType WaterMeter 厂商ID manufacturerId TestUtf8ManuId 厂商名称 manufacturerName HZYB

型号 model NBIoTDevice

协议类型 protocolType CoAP

设备的服务列表

服务描述 服务标识

(serviceId) 服务类型

(serviceType) 选项(option)

水表的基本功能 WaterMeterBasic Water Mandatory 告警服务 WaterMeterAlarm Battery Mandatory 电池服务 Battery Battery Optional 数据的上报规则 DeliverySchedule DeliverySchedule Mandatory 水表的连通性 Connectivity Connectivity Mandatory

设备能力定义样例

devicetype-capability.json记录了该设备的基础信息:

{ "devices": [ {

"manufacturerId": "TestUtf8ManuId", "manufacturerName": "HZYB", "model": "NBIoTDevice", "protocolType": "CoAP", "deviceType": "WaterMeter", "omCapability":{

"upgradeCapability" : { "supportUpgrade":true, "upgradeProtocolType":"PCP"

},

"fwUpgradeCapability" : {

(59)

"supportUpgrade":true, "upgradeProtocolType":"LWM2M"

},

"configCapability" : { "supportConfig":true, "configMethod":"file", "defaultConfigFile": { "waterMeterInfo" : {

"waterMeterPirTime" : "300"

} } } },

"serviceTypeCapabilities": [ {

"serviceId": "WaterMeterBasic", "serviceType": "WaterMeterBasic", "option": "Mandatory"

}, {

"serviceId": "WaterMeterAlarm", "serviceType": "WaterMeterAlarm", "option": "Mandatory"

}, {

"serviceId": "Battery", "serviceType": "Battery", "option": "Optional"

}, {

"serviceId": "DeliverySchedule", "serviceType": "DeliverySchedule", "option": "Mandatory"

}, {

"serviceId": "Connectivity", "serviceType": "Connectivity", "option": "Mandatory"

} ] } ] }

各字段的解释:

字段 子字段 可选/必选 描述

devices 必选 包含了一个设备的完整能力信息(根节 点不能修改)。

manufactur

erId 必选 指示设备的制造商ID。

manufactur

erName 必选 指示设备的制造商名称 (只允许英 文)。

model 必选 指示设备的型号,考虑到一款设备下的 多种型号,建议包含字母或数字以保证 可扩展性。

protocolTyp

e 必选 指示设备接入物联网平台的协议类型。

如NB-IoT的设备取值为CoAP。

deviceType 必选 指示设备的类型。

(60)

字段 子字段 可选/必选 描述 omCapabili

ty 可选 定义设备的软件升级、固件升级和配置

更新的能力,字段含义详情见下文中 的:omCapability结构描述。

如果设备不涉及软件/固件升级,本字 段可以删除。

serviceType

Capabilities 必选 包含了设备具备的服务能力描述。

servic

eId 必选 服务的Id,如果设备中同类型的服务类 型只有一个则serviceId与serviceType相 同, 如果有多个则增加编号,如三键 开关 Switch01、Switch02、

Switch03。

servic

eType 必选 服务类型,与servicetype-

capability.json中serviceType字段保持 一致。

optio

n 必选 标识服务字段的类型,取值范围:

Master(主服务), Mandatory(必选 服务), Optional(可选服务)。

目前本字段为非功能性字段,仅起到描 述作用。

omCapability结构描述

字段 子字段 可选/

必选

描述

upgradeCa

pability 可选 设备软件升级能力。

supportUpg

rade 可选 true:设备支持软件升级。

false:设备不支持软件升级。

upgradePro

tocolType 可选 升级使用的协议类型,此处不同于设备的 protocolType,例如CoAP设备软件升级协议使 用PCP。

fwUpgrad eCapabilit y

可选 设备固件升级能力。

supportUpg

rade 可选 true:设备支持固件升级。

false:设备不支持固件升级。

(61)

字段 子字段 可选/

必选

描述

upgradePro

tocolType 可选 升级使用的协议类型,此处不同于设备的 protocolType,当前物联网平台仅支持 LWM2M固件升级。

configCap

ability 可选 设备配置更新能力。

supportConf

ig 可选 true:设备支持配置更新。

false:设备不支持配置更新。

configMeth

od 可选 file:使用文件的方式下发配置更新。

defaultConf

igFile 可选 设备默认配置信息(Json格式),具体配置信 息由设备商自定义。物联网平台只储存该信息 供下发时使用,不解析处理配置字段的具体含 义。

服务能力定义样例

servicetype-capability.json记录了该设备的服务信息:

{ "services": [ {

"serviceType": "WaterMeterBasic", "description": "WaterMeterBasic", "commands": [

{

"commandName": "SET_PRESSURE_READ_PERIOD", "paras": [

{

"paraName": "value", "dataType": "int", "required": true, "min": 1, "max": 24, "step": 1, "maxLength": 10, "unit": "hour", "enumList": null }

],

"responses": [ {

"responseName": "SET_PRESSURE_READ_PERIOD_RSP", "paras": [

{

"paraName": "result", "dataType": "int", "required": true, "min": -1000000, "max": 1000000, "step": 1, "maxLength": 10, "unit": null, "enumList": null }

(62)

] } ] } ],

"properties": [ {

"propertyName": "registerFlow", "dataType": "int",

"required": true, "min": 0, "max": 0, "step": 1, "maxLength": 0, "method": "R", "unit": null, "enumList": null },

{

"propertyName": "currentReading", "dataType": "string",

"required": false, "min": 0, "max": 0, "step": 1, "maxLength": 0, "method": "W", "unit": "L", "enumList": null },

{

"propertyName": "timeOfReading", "dataType": "string",

"required": false, "min": 0, "max": 0, "step": 1, "maxLength": 0, "method": "W", "unit": null, "enumList": null },

...

] } ] }

各字段的解释:

字段 子字段 必

选/

可选 描述

services 必选 包含了一个服务的完整信息(根节点不可 修改)。

servic eType

必选 指示服务的类型,与devicetype-

capability.json中serviceType字段保持一 致。

(63)

字段 子字段 必 选/

可选 描述

descri ption

必选 指示服务的描述信息。

非功能性字段,仅起到描述作用,可置为 null。

com mands

必选 指示设备可以执行的命令,如果本服务无 命令则置null。

comman dName

必选 指示命令的名字,命令名与参数共同构成 一个完整的命令。

paras 必选 命令包含的参数。

paraNam e

必选 命令中参数的名字。

dataT

ype 必选 指示命令参数的数据类型。

取值范围:string、int、string list、

decimal、DateTime、jsonObject、

enum、boolean。

上报数据时,复杂类型数据格式如下:

● string list:["str1","str2","str3"]

● DateTime:

yyyyMMdd’T’HHmmss’Z’如:

20151212T121212Z

● jsonObject:自定义json结构体,物联 网平台不解析,仅进行透传

requir

ed 必选 指示本命令是否必选,取值为true或 false,默认取值false(非必选)。

目前本字段是非功能性字段,仅起到描述 作用。

min 必选 指示最小值。

仅当dataType为int、decimal时生效。

max 必选 指示最大值。

仅当dataType为int、decimal时生效。

step 必选 指示步长。

暂不使用,填0即可。

數據

表 4-1 ArrayNode 定义
表 4-4 “package-info.json”字段说明 字段名 字段描述 是否必填 specVersion 描述文件版本号,填写固定值:&#34;1.0&#34;。 是 fileName 软件包文件名,填写固定值:&#34;codec-demo&#34; 是 version 软件包版本号。描述package.zip的版本,请与 下面的bundleVersion取值保持一致。 是 deviceType 设备类型,与Profile文件中的定义保持一致。 是 manufacturerName 制造商名称,与P

參考文獻

相關文件

u 复旦大学陈芬儿团队历经 10年,研制出了以不对称合成为核心 技术的制备方法;在国内投产后,该药物的生产成本由 1.5万元

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通常把这种过去时期的,具有滞后作用的变量 叫做 滞后变量(Lagged Variable) ,含有滞后变量

通过 YCT(三级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 YCT(三级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

内蒙古大草原沙化退化,自然因素也好,人为因素也罢,最