接入案例
下面举一个葆德网关使用MQTT协议基于IoEdge的接入方式接入设备的点位案例。
葆德网关对接架构如下:

- 设施云网关对应的就是微能网关,该网关上安装IOTEdge边缘节点(后续也可以直接在葆德网关上安装这个IOTEdge边缘节点)。
- 葆德网关通过MQTT(S)协议对接到微能网关。
- 针对设备点位上报,通过使用葆德网关的连接身份来上报对应子设备的数据到IOTEdge平台,由IOTEdge平台转发到IOTDA,最终转发到设施云。
- 针对设备点位控制,由设施云下发到IOTEdge平台,IOTEdge转发到葆德网关对应topic,葆德网关监该topic消息后下发到对应子设备。
注册微能网关设备
在设施云前台页面的边缘管理菜单下的网关设备页面注册网关设备,如下所示:

注册完成后,单击后面安装操作,选择对应架构后复制对应安装命令,然后登录微能网关后执行该安装命令安装网关节点,安装完成后微能网关状态就会变成已安装,最后变成在线就证明安装成功。

注册葆德网关机电设备
在设施云的设备管理菜单选择产品,创建对应产品分类后创建一个葆德网关产品,对应协议类型要选择为MQTT。

在设施云前台页面的边缘管理菜单下的机电设备页面注册葆德设备,所属产品选择上面创建的葆德产品,设备鉴权密码设置一个(记住该密码后面mqtt连接需要),边缘网关设备选择上面创建的微能网关,如下所示:

注册葆德下接入子设备
葆德网关下子设备对应的就是底层接入的真实设备,首先要创建对应设备的产品(根据实际设备类型创建产品物模型),对应产品协议也要选择MQTT。接着进入上面创建好的葆德机电设备详情页面,单击子设备页面来注册一个设备,边缘网关设备关联上面创建的微能网关,如下图所示:

葆德网关南向对接
葆德南向对接的是微能网关,对应平台就是IOTEdge,采用协议是MQTT(S),对应的MQTT服务端地址为微能网关的IP地址,MQTTS端口为7883,MQTT端口为7882,连接身份使用葆德网关设备,通过访问https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com来生成客户端ID用户名和用户密码。其中对应的设备ID就是葆德网关的设备ID,设备秘钥就是注册葆德网关设置的设备鉴权密码。

上报子设备状态
Topic: $oc/devices/{device_id}/sys/events/up
数据格式:
{
"services": [
{
"event_time": "20151212T121212Z",
"event_type": "sub_device_update_status",
"paras": {
"device_statuses": [
{
"device_id": "bf40f0c4-4022-41c6-a201-c5133122054a",
"status": "ONLINE"
},
{
"device_id": "4459c0f7-10bb-4718-9b07-7a82c2d508a5",
"status": "ONLINE"
}
]
},
"service_id": "$sub_device_manager"
}
]
}
对应参数说明:
|
Topic中的{device_id} |
对应葆德网关的设备ID |
|
service_id |
系统字段,固定为:"$sub_device_manager"。 |
|
event_time |
更新设备状态时间。 使用UTC时间 ,格式:yyyyMMdd'T'HHmmss'Z'。 |
|
event_type |
系统字段,固定为:"sub_device_update_status"。 |
|
device_id |
对应葆德网关下的子设备ID |
|
status |
上报设备状态。 OFFLINE:设备离线。 ONLINE:设备上线。 |
上报子设备点位
Topic: $oc/devices/{device_id}/sys/gateway/sub_devices/properties/report
数据格式:
{
"devices": [
{
"device_id": "bf40f0c4-4022-41c6-a201-c5133122054a",
"services": [
{
"event_time": "20190606T121212Z",
"properties": {
"PhV_phsA": "1",
"PhV_phsB": "2"
},
"service_id": "analog"
}
]
},
{
"device_id": "42aa08ea-84c1-4025-a7b2-c1f6efe547c2",
"services": [
{
"event_time": "20190606T121212Z",
"properties": {
"PhV_phsA": "3",
"PhV_phsB": "5"
},
"service_id": "analog"
},
{
"event_time": "20190606T121212Z",
"properties": {
"ImbA_strVal": "8",
"Load": "6"
},
"service_id": "parameter"
}
]
}
]
}
对应参数说明:
|
Topic中的{device_id} |
对应葆德网关的设备ID |
|
service_id |
设备的服务ID,由创建的产品物模型确定。 |
|
event_time |
更新设备状态时间。 使用UTC时间 ,格式:yyyyMMdd'T'HHmmss'Z'。 |
|
device_id |
对应葆德网关下的子设备ID |
|
properties |
设备服务的属性列表,具体字段在产品模型里定义,可以设置多个字段。以<属性名:值>的形式存储属性消息。 |
设施云设置子设备点位
下行请求示例
Topic: $oc/devices/{device_id}/sys/properties/set/request_id={request_id}
数据格式:
{
"object_device_id": "{object_device_id}",
"services": [
{
"properties": {
"value": 57,
"value2": 60
},
"service_id": "Temperature"
},
{
"properties": {
"level": 80,
"level2": 90
},
"service_id": "Battery"
}
]
}
上行响应示例
Topic:$oc/devices/{device_id}/sys/properties/set/response/request_id={request_id}
数据格式:
{
"result_code": 0,
"result_desc": "success"
}
对应参数说明:
|
Topic中的{device_id} |
对应葆德网关的设备ID |
|
service_id |
设备的服务ID,由创建的产品物模型确定。 |
|
event_time |
更新设备状态时间。 使用UTC时间 ,格式:yyyyMMdd'T'HHmmss'Z'。 |
|
object_device_id |
对应葆德网关下的子设备ID |
|
properties |
设备服务的属性列表,具体字段在产品模型里定义,可以设置多个字段。以<属性名:值>的形式存储属性消息。 |
设施云查询子设备点位
下行请求示例
Topic: $oc/devices/{device_id}/sys/properties/get/request_id={request_id}
数据格式:
{
"object_device_id": "{object_device_id}",
"service_id": "Temperature"
}
上行响应示例
Topic:$oc/devices/{device_id}/sys/properties/get/response/request_id={request_id}
数据格式:
{
"services": [
{
"event_time": "20190606T121212Z",
"properties": {
"PhV_phsA": "1",
"PhV_phsB": "2"
},
"service_id": "Temperature"
}
]
}
对应参数说明:
|
Topic中的{device_id} |
对应葆德网关的设备ID |
|
service_id |
设备的服务ID,由创建的产品物模型确定。 |
|
event_time |
更新设备状态时间。 使用UTC时间 ,格式:yyyyMMdd'T'HHmmss'Z'。 |
|
object_device_id |
对应葆德网关下的子设备ID |
|
properties |
设备服务的属性列表,具体字段在产品模型里定义,可以设置多个字段。以<属性名:值>的形式存储属性消息。 |