参考华为云文档:模拟智慧路灯与平台通信_设备接入 IoTDA模拟智慧路灯与平台通信_设备接入 IoTDA模拟智慧路灯与平台通信_设备接入 IoTDA
1.流程
- 创建产品——创建一个MQTT协议的产品。相当于你的项目
- 开发产品模型——定义设备上报到平台的数据和远程控制的命令。项目中用于云端采集的数据和控制质量
- 设备接入——通过MQTT.fx模拟设备接入IoTDA。项目中的终端设备
2.准备工作
- 开始接入前需要注册华为云账号,完成认证;
- 在华为云官网搜索设备接入IoTDA点击后进入,如下图所示
- 进入控制台后界面如下:
华为云物联网平台_华为云IoT平台_IoT_设备接入-华为云
在总览中可以查看接入信息。
3.创建产品
准备工作完成就可以进行后续的搭建,首先需要创建产品相当于新建一个项目。步骤如下:
- 单击左侧导航栏“产品”,单击页面右上角的“创建产品”。
- 填写创建产品所需的参数,然后单击“确定”。
- 所属资源空间 下拉选择所属的资源空间。在首次注册后会分配一个默认空间,无其他需求选默认即可,后续创建的产品和设备都将放在该资源空间下,能够实现对不同项目的管理。添加查看可点击控制台左侧的资源空间,具体修改内容可参考官方文档:资源空间_设备接入 IoTDA
- 产品名称 定义产品名称,长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。
- 协议类型按需填写,后面测试采用MQTT
- 数据格式 ——选择JSON
其余几项按实际填写即可。
4.定义产品的属性和控制命令
- 创建产品成功后,点击对应产品,在模型定义中点击自定义模型弹出添加服务对话框。
填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
注意:服务类型:建议和服务ID保持一致;服务ID在后续连接中需要用到
2. 在对应服务的菜单中点击“新增属性”,填写相关信息后,单击“确定”。
- “属性名称”:temp
- “数据类型”:int(整型)
- “访问权限”:可读、可写
- “取值范围”:0~65535
- “步长”:0
- “单位”:不填写
以上按上传温度为例。
3.点击添加命令,弹出新增命令对话框,输入命令名称“Switch”4.点击新增输入参数,弹出新增参数对话框进行填写按上图所示填写后,到此已经完成了产品的创建和属性控制命令的搭建。
5.注册设备
1. 在控制台中点击设备,所有设备,点击右上角的注册设备,弹出单设备注册界面
2.按照提示填写设备注册信息填写成功后完成设备注册
6.mqtt.fx模拟设备接入
经过上面的操作已经将产品和设备搭建好了,后面需要将设备激活,本次采用MQTT.fx软件来模拟设备接入。
1.准备工作
a.下载MQTT.fx,默认是64位操作系统
b.根据官方提供的工具Huaweicloud IoTDA Mqtt ClientId Generator填写设备ID(DeviceId)和密钥(DeviceSecret)后,点击generate生成连接信息(ClientId、Username、Password)。设备ID(DeviceId)和密钥(DeviceSecret)在控制台-->设备-->所有设备-->选择要激活的设备点击详情中进行查看,成功生成连接信息后即可进行后续的链接。
2.连接
a.打开MQTT.fx软件,点击设置图标。 b.进入连接设置界面,填写连接信息
Broke Address为接地址:e29e700c1e.iot-mqtts.cn-north-4.myhuaweicloud.com
Broke Port为端口号:1883
接入地址在控制台-->总览-->接入信息中查看填完后,点击Apply后关闭即可
c.MQTT.fx软件的主界面已经显示了刚刚设置好的连接,点击Connet,观察连接状态,绿色为连接成功当前状态即为连接成功。此时观察控制台的设备列表当前设备已经在线了
7.消息上报
设备若通过MQTT通道上报数据,需要发给指定的Topic,上报消息的Topic格式为:“$oc/devices/{device_id}/sys/properties/report”,其中“device_id”为设备ID
数据格式为:
{
"services": [{
"service_id": "testdata",//服务ID为产品创建后添加的服务
"properties": {
"temp": 23//属性和对应的值
}
}]
}
点击Publish上报数据
控制台设备里选择相应设备则可以看到上传数据
8.命令下发
命令下发首先需要在控制台模拟应用开发送控制命令,点击控制台的监控运维-->在线调试-->右上角的选择设备
选择之前注册的设备,选择好设备进入调试界面如下:设备端要订阅当前主题,命令下发的Topic地址格式为:$oc/devices/{device_id}/sys/commands/#(需将“{device_id}”替换为所需的设备id)
数据格式:
{"services":
[{"service_id":"你的服务id",
"properties":
{"你的属性名称": 设置的值}
}]
}
使用华为云客户端发送控制命令
设备端收到指令
以上就完成了设备接入IoTDA以及属性上报和命令下发的模拟,后续将通过硬件设备真实接入进行控制。