网关

网关是 DTS 进行物理/虚拟设备数据接入与协议解析的核心通道。网关在平台上不能随意配置;每一个网关的创建,都必须对应底层服务器上实际运行的接入协议服务(如 HTTP、MQTT 等网络监听服务)。不同的通信协议和数据类型必须使用相匹配的网关进行数据接入。

DTS 提供了三种类型的网关:物联网网关、视频网关以及专门管理组合实体的虚拟 Dumb 网关。

[!NOTE] 关于各类网关的技术机理与协议支撑定义,请参考概念定义 - 网关。

创建网关

null

[!IMPORTANT] 网关配置完成后,设备或数据采集程序需要使用该网关的证书(GatewayKey 与 GatewaySecret)连接服务器上对应的协议接收服务。只有该协议接收服务处于正常运行状态且设备鉴权通过,实体的数据流才能成功流入 DTS。

参数 描述
网关名称 为网关命名。网关名称具有唯一性。支持中文、英文字母、数字、下划线(_)、连接号(-) 、@符号和英文圆括号,长度限制4~30,一个中文汉字算2位。
标识符 网关唯一标识符,在产品下具有唯一性。可包含英文、数字、和下划线,长度不超过30个字符。 说明 不能用以下系统保留参数作为标识符:set、get、post、time、value。
网关类型 网关类型,Dumb网关、视频网关、物联网网关。
关联产品 网关关联的产品,产品下的实体都挂载在网关下。
网关属性 实体的公共属性,可自定义属性。 说明 不能用以下系统保留参数作为公共参数的标识符:set、get、post、time、value。一个网关公共参数最多支持定义20个参数。
网关描述 可输入文字,用来描述网关信息。字数限制为100。

平台已内置名为“通用网关”的网关,可支持加入BV协议接入、第三方协议接入(仅Http协议)的产品。内置“BVMedia”网关可支持从看门狗服务中接入相机产品。

编辑网关

查看网关信息,可以对网关的基本信息、网关属性、服务列表、发现实体接口进行编辑修改。

null

修改网关信息

可以对网关的名称、网关类型、关联产品、网关描述进行修改,如增加或减少网关下关联的产品。

null

网关标签

用于标注同一个网关下所有实体所具有的共性物理或逻辑环境信息(如网关部署位置、通信环境等)。网关标签支持“可选择 + 可输入”的组合模式,既支持从已有列表中快速选择,也允许自定义输入。

[!NOTE] 关于网关标签的具体定义,请参考概念定义 - 标签。

参数 说明
标签分组 (一级标签) 标签的类别或属性组,支持选择已有分组或手动输入(如 Deployment、Location)。
标签 (二级标签) 具体的标签值,支持选择已有标签或手动输入(如 Production、Room-102)。

网关属性

使用网关属性管理与网关相关的属性信息、产品通信时的通用信息,如IP地址、端口等内容。网关属性添加后可以进行属性赋值,赋值后的网关属性就可以作为参数值在任务等功能中使用。

null

服务列表

管理网关下产品的产品Profile服务调用时请求服务的目标地址。支持HTTP服务请求、WebSocket服务、RedisMQ服务。

添加服务

点击【添加服务】按钮,输入服务名称、目标服务的地址便可新增一个服务地址,建议此处输入地址为地址的通用部分,在产品Profile服务中使用服务地址时,再输入详细的接口名称。

HTTP类型服务地址和请求头支持动态参数定义,输入格式为${参数名}(例如:/${admin})。 若配置了动态参数,请在使用该服务地址的产品服务定义下“输入参数”列表中定义同名的参数(如admin)。实际请求时,系统将自动使用该参数的值替换地址中的动态部分,生成完整的请求URL。 示例说明: 接口地址:http://api.example.com/${admin}/status 输入参数中定义:admin(值为visitor) 最终请求URL:http://api.example.com/visitor/status

null

服务高级配置(更多)

点击服务编辑/添加窗口中的 更多 折叠面板,可以对 HTTP 类型的服务进行更精细的请求报文配置与安全鉴权脚本编写:

  1. Params (Query 参数)
  2. 用于添加 URL Query 参数。点击 + 新增参数,输入 Key-Value 对。这些参数将在实际请求时以 ?key=value 的形式自动追加到服务地址末尾。
  3. Body (请求体)
  4. 用于配置 POST/PUT 等请求的请求体数据。支持以下四种格式:
    • none:不发送请求体(默认)。
    • form-data:以键值对表单数据形式发送(通常用于包含文件上传或标准表单提交)。
    • x-www-form-urlencoded:以 URL 编码的键值对形式提交请求体。
    • json:以标准 JSON 格式提交请求体。
  5. Headers (请求头)
  6. 用于添加自定义 HTTP 请求头。点击 + 新增参数,输入请求头名称和对应的值(例如:配置 X-Tenant-Id: tenant001)。
  7. 请求脚本 (Request Script)
  8. 支持使用 JavaScript (ECMAScript 6) 编写请求预处理脚本。在平台真正发起 HTTP 请求前,系统会调用该脚本以动态调整请求参数或进行加密签名。
  9. 内置注入对象:
    • reqConf:即将发送的 HTTP 请求配置对象(包含 method、url、params、headers、body、contentType 等属性,脚本中可直接对其进行读写修改)。
    • Auth:平台内置的鉴权工具类,提供常用的安全认证快捷方法(如 Auth.bearer(reqConf, token)、Auth.basic(reqConf, username, password)、Auth.digest(reqConf, username, password) 等)。
  10. 更多详细的使用示例、Python 支持说明与内置 API 函数请参考专文:请求脚本中使用Auth认证。

WebSocket服务仅限使用系统内置“DTS内置服务”,您可以通过列表查看到连接的ip和port,完整地址为“ws://ip:port/{productid}/{deviceid}”。productid deviceid为对应产品、实体的id。

发现实体接口列表

发现实体接口是可以通过Http接口方式请求获取第三方服务的实体(如物联网实体)的资源数据,经过脚本解析后成为DTS的实体。可以快速更新/获取实体列表。适用于设备不是第三方主动上报到DTS,而是通过接入网关主动向第三方请求。如接入海康视频监控平台,就可以通过此种方式主动的获得海康视频监控平台中的设备资源。

添加接口

点击 【添加接口】 按钮,在弹出的“编辑/创建接口”窗口中配置接口的基本信息、请求报文以及用于将数据转换为 DTS 格式的响应消息解析脚本:

  1. 接口基本信息与请求配置
  2. 请求地址:输入第三方服务的 HTTP 接口地址,选择请求方法(如 GET、POST 等)。
  3. 请求参数配置(包含 Params、Body、Headers、请求脚本四个子 Tab):

    • Params (Query 参数):配置 URL Query 参数(如 ?limit=100),将自动拼接到接口请求地址尾部。
    • Body (请求体):支持为 POST/PUT 请求配置 json(例如配置包含 timeout 和 serviceTags 的 JSON 报文)、form-data 等类型的请求体数据。
    • Headers (请求头):配置请求的 Header 信息(如 Content-Type: application/json; charset=UTF-8,Accept: application/json)。
    • 请求脚本:支持使用 JavaScript (ECMAScript 6) 编写请求预处理脚本,在请求发送前动态修改请求配置对象 reqConf(具体内置对象与方法请参考服务列表中的请求脚本说明)。
  4. 响应消息解析脚本 (Response Script)

  5. 用于接收并解析第三方服务返回的原始响应,将其映射并重构为符合 DTS 规范的实体数据集合(JSON 数组)。
  6. 函数定义: ```javascript /**
    • 从网关发现实体,将第三方服务的自定义数据格式转换为DTS平台的BV JSON数据格式,解析后返回实体集合。
    • @param {Object} body - 入参,接口返回的响应体对象(系统已自动将其从 JSON 字符串反序列化为 JS 对象)
    • @returns {Array} 出参,符合 DTS 规范的标准实体/设备 JSON 数组 */ function rawDataToProtocol(body) { // ... 过滤、循环转换与格式映射逻辑 ... return all_devices; } ```
  7. 出参实体字段规范(JSON 数组中的每个对象结构):
    • deviceId (String,必传):实体/设备编号,需保证平台内全局唯一(如设备 UUID、物理出厂 MAC 或 GUID)。
    • deviceName (String,必传):实体/设备显示名称,最大长度限制为 255。
    • deviceStatus (Number,非必传):实体状态,0=禁用,1=启用(默认)。
    • location (String,非必传):实体位置(默认 "0 0 0"),格式为 "纬度 经度 高程"。
    • payload (Object,非必传):实体的初始属性数据。放入这里的属性标识符(如 serialNumber, deviceStates 等)必须与该产品 Profile 中定义的属性标识符一致,否则无法成功记录。
响应消息解析脚本编写示例

以下为一个通过 POST 请求向第三方“看门狗视频管理器”拉取 VSS 视频设备列表,并将其解析为 DTS 标准视频实体集合的脚本示例:

function rawDataToProtocol(body) {
    // 打印第三方接口返回的原始数据以便调试
    console.log(body);

    var all_devices = []; // 用于收集解析转换后的标准设备列表

    try {
        var resultObj = body;

        // 核心步骤 1:判断并提取第三方返回结构中的设备集合
        // 本示例中,第三方设备的返回路径为:ReturnValue.mediaDeviceList
        if (resultObj && resultObj.ReturnValue && resultObj.ReturnValue.mediaDeviceList) {
            var deviceList = resultObj.ReturnValue.mediaDeviceList;

            // 核心步骤 2:遍历设备列表,将第三方属性映射到 DTS 格式
            for (var k = 0; k < deviceList.length; k++) {
                var device = deviceList[k];

                var formatted_device = {
                    "deviceId": device.deviceGuid || "", // 设备唯一 GUID
                    "deviceName": device.deviceName || "", // 设备名称
                    "deviceStatus": (device.deviceStates !== undefined ? device.deviceStates : -1), // 设备状态
                    "payload": {
                        // payload 内部属性键名需与产品 Profile 属性严格对应
                        "factoryGuid": device.factoryGuid,
                        "deviceModel": device.deviceModel,
                        "serialNumber": device.serialNumber,
                        "deviceStates": device.deviceStates,
                        "mediaSourceGuid": "E8565B1B-8762-E84D-805A-4C515183E829",
                        "spacePosition": device.spacePosition,
                        "deviceType": device.deviceType
                    }
                };
                all_devices.push(formatted_device);
            }
        }
    } catch (e) {
        console.error("解析响应脚本时出错: " + e.message);
    }

    // 核心步骤 3:返回重构完毕的标准设备列表
    return all_devices;
}

配置完毕并编写解析脚本后,点击 【保存】。您可以在接口列表中点击该接口的调试/测试按钮,模拟请求与响应解析,以确保解析脚本无运行时错误。

null

作者:北京-产品-yantings  创建时间:2024-08-14 19:11
最后编辑:北京-产品-yantings  更新时间:2026-07-16 17:09
上一篇:
下一篇: