体验开发中心(联通用户专用)
非联通用户请查看设备接入服务。
本文通过“智慧路灯”为示例,通过开发中心提供的设备模拟器和应用模拟器替代真实的设备和应用,带您快速体验设备上报数据到物联网平台和远程下发控制命令到设备的全过程。
假设:
路灯设备上报一条数据消息,包含路灯的光照强度(Light_Intensity)和路灯的开关状态(Light_Status);支持远程控制路灯开关状态的命令(SWITCH_LIGHT),上报数据的格式为二进制格式。
开发中心申请和创建项目
用户第一次使用物联网平台云服务时,首先需要申请开通“开发中心”服务。基于开发中心,用户可以在线开发设备的Profile文件和编解码插件;另外开发中心提供了设备和应用模拟器,可以便捷地调测开发的Profile文件和编解码插件的正确性。
- 登录华为云官方网站,访问IoT设备管理服务。
- 在设备管理云服务首页,点击“开发中心”开通业务。
- 填写开通信息,本示例以选择“智能路灯解决方案”为例,点击“立即开通”。
- (可选)进入“开发中心”首页后,如果用户是第一次使用,首先需要点击右上角的“厂商信息”,编辑并完善厂商信息后,返回主页。
- 在“开发中心”首页,点击“新建项目”,创建一个新的物联网产品项目,填写项目名称、所属行业后,点击“确定”。
- 创建完项目后,会生成应用ID和应用密钥,请将密钥下载到本地并妥善保管,然后进入项目。
应用密钥用于应用服务器接入的鉴权,在界面上不可见,请妥善保管,如果忘记了密钥,可以在“对接信息”功能中,对密钥进行重置。
- 项目创建完成后,可以在“对接信息”中,查看项目的基本信息,例如设备接入信息、应用接入信息、重置密钥等。
产品在线开发
产品模型(也称Profile)用于描述设备具备的能力和特性。开发者通过定义Profile文件,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,例如温度、光强度、开关等。
本示例以一款智慧路灯为例进行描述,假设路灯设备上报一条数据消息,包含路灯的光照强度(Light_Intensity)和路灯的开关状态(Light_Status);支持远程控制路灯开关状态的命令(SWITCH_LIGHT)。
- 在“产品开发”界面,点击“新建产品”,然后选择“自定义产品”。
- 在弹出的对话框中,设置产品信息,完成后点击“创建”。
- 进入到Profile定义界面后,点击“新建服务”,填写服务信息,然后点击“√”。
- 定义路灯上报的环境光强度和路灯开关状态的属性。首先输入“服务名称”:StreetLight,然后点击“新增属性”。
- 首先定义一条属性为:路灯采集的当前环境的光照强度,数据类型为int,光照强度范围为:0~100。
- 再点击“添加属性”按钮,定义一条属性为:路灯当前的开关灯状态,数据类型为int,0代表关闭,1代表打开状态。
- 接下来定义远程控制开关灯状态的命令。点击“添加命令”按钮,定义命令名称为:SWITCH_LIGHT。
- 点击“添加下发命令字段”,命令名称为:SWITCH_LIGHT,数据类型为:string,长度为:3个字符,枚举值为:ON,OFF。
- 点击“确定”按钮,完成该路灯的Profile文件创建。
编解码插件在线开发
通常情况下设备为了省电,设备会采用“二进制”格式上报数据,编解码插件的作用就是将设备上报的“二进制”格式数据,按照Profile文件的定义的属性转换为“JSON”格式数据,便于物联网平台和应用服务器识别。同时,用户远程下发控制命令时,物联网平台会将“JSON”格式的命令转换为“二进制”格式数据下发给设备。
注:如果设备本身上报的是JSON格式数据,则不需要定义编解码插件,如使用Agent Lite接入的设备。
- 在“产品开发”页面进入到创建的产品中,选择“编解码插件开发”。
- 在“在线编解码插件编辑器”中,点击“新增消息”。
- 输入消息名:LightData,消息类型选择:数据上报,然后再点击“添加字段”。
- 输入上报消息的名字:LightIntensity,数据类型:int8u(8位无符号整型),长度:1字节,单击“完成”。
- 再次单击“添加字段”,添加路灯上报的路灯开关状态数据。
- 输入名字:LightStatus,数据类型:int8u(8位无符号整型),长度:1字节,单击“完成”。
- 单击“完成”,完成路灯上报数据的编解码定义。
- 再次单击“新增消息”,定义远程控制路灯开关的命令对应的编解码插件消息。
- 输入消息名:SwitchStatus,消息类型选择:命令下发,然后再点击“添加字段”。
- 输入名字:SwitchStatus,数据类型:string(字符串类型),长度:3字符,单击“完成”。
- 单击“完成”,完成远程控制命令的编解码定义。
- 拖动右侧“设备模型”区域的属性字段和命令字段(Profile文件定义的字段),与编解码插件定义的数据上报消息和命令下发消息的相应字段建立映射关系。
- 编解码插件与Profile文件建立映射完成后,单击右上角“保存”,并单击“部署”,完成编解码插件的部署。
使用在线模拟器调试
模拟器在线调测具备设备模拟和应用模拟功能,可以对定义的Profile文件和编解码插件进行调试,用户可以直观的感受设备上报数据到物联网平台,以及使用物联网平台下发远程控制命令。
- 在“产品开发”页面进入到创建的产品中,选择“在线调测”,并单击“新增测试设备”。
- 选择“没有真实的物理设备”,使用模拟器进行调测,单击“创建”后,系统会默认创建一个模拟设备,并接入调测界面。
- 模拟设备数据上报场景,假设上报路灯采集的光照强度为:20,路灯开关状态为:0(关闭),则在设备模拟器中,输入十六进制码流:1400(光照强度消息为第一个字节,对应的十六进制码流为14;路灯开关状态为第二字节,对应的十六进制码流为00),然后单击“发送”,我们可以在应用模拟器中看到转换为JSON格式的数据为:"Light_Intensity": 20, "Light_Status": 0。
- 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“立即发送”,我们可以在设备模拟器中看到转换为十六进制的码流:4F4E(经ASCLL码转为为十六进制)。
使用离线模拟器调试
NB-IoT设备模拟器用于模拟以CoAP/LWM2M协议接入物联网平台的NB设备,实现数据上报和命令下发功能。
- 选择“添加真实设备”。
,单击
- 选择前面创建的产品,并填写设备相关信息,单击“确定”。
注:如果使用DTLS传输层安全协议接入时,设备注册方式选择“加密”,且请妥善保存PSK码。
如下信息根据实际情况填写:
- 设备名称:NBdevice01
- 设备标识:aaaaa11111
- 安全密钥(PSK):aaaaa11111aaaaa
- 设备注册方式:加密
设备创建成功后,将返回“设备名称”、“设备ID”和“PSK码”。
- 下载并解压NB-IoT设备模拟器,然后双击“NB-IoTDeviceSimulator_zh.jar”,运行模拟器。
注:请确保已经安装jdk,否则,无法运行jar文件。
NB-IoT设备模拟器的文件说明如下:
- Californium.properties为模拟器的配置文件。
- NB-IoTDeviceSimulator_en.jar为英文版模拟器。
- NB-IoTDeviceSimulator_zh.jar为中文版模拟器。
- setting.properties为设备模拟器接入物联网平台的配置文件。
- 模拟器启动后,会提示“是否开启DTLS加密传输?”,单击“是”。
注:如果模拟设备不使用DTLS协议接入物联网平台,单击“否”。
- 填写“IP地址”、“VerifyCode”和“PSK”,单击“注册设备”,将模拟器与物联网平台进行绑定。
注:如果未开启DTLS加密传输,则无需填写PSK。
如下信息根据实际情况填写:- IP地址:物联网平台的接入地址,请到开发中心 查看。
- VerifyCode:设备标识码,如:aaaaa11111。
- PSK:aaaaa11111aaaaa
设备绑定成功,可以回到开发中心,选择“aaaaa11111”显示“在线”,表示模拟器绑定成功。
,看见设备 - 模拟设备数据上报场景,假设上报路灯采集的光照强度为:20,路灯开关状态为:0(关闭),则在NB-IoT设备模拟器中,输入十六进制码流:1400(光照强度消息为第一个字节,对应的十六进制码流为14;路灯开关状态为第二字节,对应的十六进制码流为00),然后单击“发送数据”。
数据上报成功,可以回到开发中心,在设备“aaaaa11111”的“历史数据”页面中查看到转换为JSON格式的数据为:"Light_Intensity": 20, "Light_Status": 0。
- 模拟远程下发控制命令场景,在开发中心,选择“设备管理”,单击设备“aaaaa11111”右边的“调试产品”,进入调试界面。
在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“立即发送”。
我们可以在“日志”栏看到CIG下发的数据内容:ON,且模拟器会提示“收到平台的下行消息,是否应答?”,单击“是”,可以在开发中心的应用模拟器看到命令状态为“已送达”。