场景说明
本文以“智慧路灯”为示例,通过MQTT.fx的设备模拟器替代真实的设备,带您快速体验设备上报数据到华为云 物联网平台 和远程下发控制命令到设备的全过程。
假设:路灯设备上报一条光照强度(luminance)消息;支持远程控制路灯开关状态的命令(switch),上报数据的格式为JSON格式。
前提条件
- 已注册华为云官方帐号。未注册可单击注册页面完成注册。
- 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则无法使用设备接入功能。
- 已开通 设备接入服务 。未开通则访问设备接入服务,单击“立即使用”后开通该服务。
业务流程
基于MQTT.fx体验平台功能是指以在MQTT.fx模拟器为例,介绍数据上报、命令下发等业务。
- 创建产品。创建一个MQTT协议的产品。
- 开发产品模型。通过定义产品模型,在物联网平台构建一款路灯设备,支持上报光照强度、下发路灯开关状态命令。
- 注册设备。注册一个MQTT协议的设备,体验数据上报业务。
- 连接鉴权。使用MQTT.fx激活在物联网平台上注册的设备。
- 数据上报。使用MQTT.fx向物联网平台上报数据。
- 命令下发。在管理控制台下发命令,远程控制设备。
创建产品
- 登录管理控制台,单击左侧导航栏“产品”,单击页面右上角的“创建产品”。
- 根据页面提示填写参数,然后单击“确定”。
基本信息
所属资源空间
平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。
产品名称
自定义。支持字母、数字、下划线(_)、连字符(-)的字符组合。
协议类型
选择MQTT。
数据格式
选择JSON。
厂商名称
自定义。支持中英文字符、数字、下划线(_)、连字符(-)的字符组合。
所属行业
请根据产品模型的所属行业填写。
设备类型
使用平台预置的产品模型,会自动关联设备类型,不需要再输入设备类型。
高级配置
产品ID
定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。
产品描述
产品描述。请根据实际情况填写。
开发产品模型
- 找到创建产品章节新增的产品,单击产品进入产品界面。
- 在产品详情“模型定义”页面,单击“自定义模型”,配置产品的服务。
- 新增服务类型“BasicData”。
- 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- “服务ID”:BasicData
- “服务类型”:建议和服务ID保持一致
- “服务描述”:上报路灯数据
- 在“BasicData”服务列表右侧区域,单击“添加属性”,填写相关信息后,单击“确定”。
- “属性名称”:luminance
- “属性描述”:光照强度
- “数据类型”:int(整型)
- “访问权限”:可读、可写
- “取值范围”:0~65535
- “步长”:0
- “单位”:不填写
- 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- 新增服务类型“LightControl”。
- 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- “服务ID”:LightControl
- “服务类型”:建议和服务ID保持一致
- “服务描述”:路灯开关控制
- 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。
- 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。
- 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
图1 新增参数
注册设备
- 在管理控制台页面,选择左侧导航栏“设备 > 所有设备”,单击页面右上角的“注册设备”。
- 根据页面提示信息填写参数,然后单击“确定”。
参数名称
说明
所属资源空间
确保和步骤1创建的产品归属在同一个资源空间。
所属产品
选择步骤2创建的产品。
设备标识码
即nodeID,设备唯一物理标识。可自定义,由英文字母和数字组成。
设备名称
即device_name,可自定义,如streetlight。
设备认证类型
选择“密钥”。
密钥
此处不填写,物联网平台会自动生成。
- 成功注册设备后,平台会自动生成设备ID和密钥,请妥善保管好设备ID(deviceId)和密钥(deviceSecret),用于设备接入。
连接鉴权
使用MQTT.fx工具激活在物联网平台上注册的设备。
- 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。
- 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。
参数
必选/可选
类型
参数描述
ClientId
必选
String(256)
一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。
- 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。
- 设备身份标识类型:固定值为0,表示设备ID。
- 密码签名类型:长度1字节,当前支持2种类型:
- “0”代表HMACSHA256不校验时间戳。
- “1”代表HMACSHA256校验时间戳。
- 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。
Username
必选
String(256)
设备ID。
Password
必选
String(256)
加密后的设备密钥。Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。
secret为注册设备时平台返回的secret。
- 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
- 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。
- 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。
- 打开MQTT.fx软件,单击设置图标。
- 参考下表配置鉴权参数,然后单击“Apply”。
参数名称
说明
Broker Address
填写从设备接入服务控制台获取的设备对接地址,此地址为 域名 信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。
Broker Port
默认为1883。
Cliend ID
设备cliendID,请参考2中获取。
User Name
即设备ID,请参考2中获取。
Password
加密后的设备密钥,请参考2中获取。
- 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态.
上报数据
使用MQTT.fx工具向物联网平台上报数据。
设备若通过MQTT通道上报数据,需要发给指定的topic,上报消息的topic格式为:$oc/devices/{device_id}/sys/properties/report,其中deviceId的值,对一机一密设备,使用deviceId接入时填写为设备注册成功后返回的deviceId值。
- 填写接口地址,此处以$oc/devices/{device_id}/sys/properties/report为例,如$oc/devices/5e4e2e92ac-164aefa8fouquan1/sys/properties/report。
- 在工具中间的空白处填写上报的数据。请求参数ServiceProperty定义表:请求示例{ "services": [{ "service_id": "BasicData", "properties": { "luminance": 30 } } ] }
字段名
必选/可选
类型
参数描述
service_id
必选
String
设备服务的ID。
properties
必选
Object
设备服务的属性列表,具体字段在设备关联的产品模型中定义。
eventTime
可选
String
设备采集数据UTC时间(格式:yyyyMMddTHHmmssZ),如:20161219T114920Z。
设备上报数据不带该参数或参数格式错误时,则数据上报时间以平台时间为准。
字段名
必选/可选
类型
参数描述
services
必选
List
设备服务数据列表(具体结构参考下表ServiceProperty定义表)
- 单击“Publish”,可以在物联网平台上查看设备是否成功上报数据。
命令下发
在管理控制台下发命令,远程控制设备。
- 选择“设备 > 所有设备”,找到注册设备章节新建的设备,单击“查看”进入设备详情页面。
- 单击“命令”页签,下发同步命令。说明:MQTT协议设备仅支持同步命令下发,NB-IoT设备仅支持异步命令下发。
- 您可以在MQTT.fx模拟器端查看到下发的命令。说明:
进阶体验
按照本页面的指导,使用MQTT.fx模拟MQTT设备接入物联网平台后,您应该已经基本了解MQTT设备调用物联网平台开放的接口与平台交互。
若您想要进一步体验设备接入服务,可参考开发指南开发真实应用和真实设备,并接入物联网平台,体验更多功能。