
# 接入案例
下面举一个葆德网关使用MQTT协议基于IoEdge的接入方式接入设备的点位案例。
#### 葆德网关对接架构如下：
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002496368197.png "点击放大")
1. 设施云网关对应的就是微能网关，该网关上安装IOTEdge边缘节点（后续也可以直接在葆德网关上安装这个IOTEdge边缘节点）。
2. 葆德网关通过MQTT(S)协议对接到微能网关。
3. 针对设备点位上报，通过使用葆德网关的连接身份来上报对应子设备的数据到IOTEdge平台，由IOTEdge平台转发到IOTDA，最终转发到设施云。
4. 针对设备点位控制，由设施云下发到IOTEdge平台，IOTEdge转发到葆德网关对应topic，葆德网关监该topic消息后下发到对应子设备。
 
#### 注册微能网关设备
在设施云前台页面的**边缘管理** 菜单下的**网关设备**页面注册网关设备，如下所示：
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002463169126.png "点击放大")
注册完成后，单击后面安装操作，选择对应架构后复制对应**安装**命令，然后登录微能网关后执行该安装命令安装网关节点，安装完成后微能网关状态就会变成已安装，最后变成在线就证明安装成功。
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002496208165.png "点击放大")
#### 注册葆德网关机电设备
在设施云的**设备管理** 菜单选择**产品** ，创建对应产品分类后创建一个葆德网关产品，对应协议类型要选择为**MQTT**。
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002496368173.png "点击放大")
在设施云前台页面的**边缘管理** 菜单下的**机电设备** 页面注册葆德设备，所属产品选择上面创建的葆德产品，设备鉴权密码设置一个（**记住该密码后面mqtt连接需要**），边缘网关设备选择上面创建的微能网关，如下所示：
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002463169138.png "点击放大")
#### 注册葆德下接入子设备
葆德网关下子设备对应的就是底层接入的真实设备，首先要创建对应设备的产品（根据实际设备类型创建产品物模型），对应产品协议也要选择MQTT。接着进入上面创建好的葆德机电设备详情页面，单击**子设备**页面来注册一个设备，边缘网关设备关联上面创建的微能网关，如下图所示：
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002496208189.png "点击放大")
#### 葆德网关南向对接
葆德南向对接的是微能网关，对应平台就是IOTEdge，采用协议是MQTT(S),对应的MQTT服务端地址为微能网关的IP地址，MQTTS端口为7883，MQTT端口为7882，连接身份使用葆德网关设备，通过访问<https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com>来生成客户端ID用户名和用户密码。其中对应的设备ID就是葆德网关的设备ID，设备秘钥就是注册葆德网关设置的设备鉴权密码。
![](https://support.huaweicloud.com/devg-ocsmartcampus/zh-cn_image_0000002496208177.png "点击放大")
#### 上报子设备状态
**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         | 设备服务的属性列表，具体字段在产品模型里定义，可以设置多个字段。以\<属性名:值\>的形式存储属性消息。                                                                      |
   
