# 转发通道

# 概述

转发通道用于将网关采集到的设备数据上报到云平台或第三方服务器。WDS-186智能网关支持多种数据上报协议,用户可以根据服务器要求配置相应的转发通道。

# 支持的协议

WDS-186支持以下5种数据转发协议:

协议 说明 应用场景
WDS 方舟物联网平台 对接方舟物联网平台
MQTT MQTT消息队列 通用物联网平台
HTTP/HTTPS RESTful API Web服务对接
TCP TCP Socket 自定义服务器
UDP UDP协议 轻量级数据传输

# 创建转发通道

# 基本步骤

  1. 进入"转发通道"页面
  2. 点击"添加转发通道"按钮
  3. 填写基本信息
  4. 选择协议类型
  5. 配置协议参数
  6. 配置数据载荷
  7. 启用转发通道
  8. 重启转发通道

# 基本配置参数

所有转发通道都需要配置以下基本参数:

参数 说明 示例
通道标识 唯一标识,不可重复 send_wds_1
协议类型 选择转发协议 WDS/MQTT/HTTP/TCP/UDP
上报间隔 数据上报周期 10s、30s、1m、5m
启用状态 是否启用该通道 启用/禁用

# WDS协议配置

# 概述

WDS协议用于对接方舟物联网平台,是推荐的云平台对接方式。

# 配置参数

参数 必填 说明 示例
用户名 平台用户名 admin
客户端ID 设备客户端ID WDS186_001
密码 平台密码 ********
服务器地址 平台服务器地址 mqtt.wdsiot.cn
端口 服务器端口 1883
QoS 服务质量等级 0/1/2

WDS配置

# 数据载荷配置

payload字段用于定义数据上报格式,支持自定义JSON格式,如果载荷为空,则默认上报所有通道的所有设备的数据整合推送。所有协议的载荷规则相同:

变量引用格式: ${通道标识_设备标识_属性标识}

示例:

  • "${tcp_1.device_1.wendu}" - 获取tcp_1通道下device_1设备的wendu点位值
  • "${tcp_1.device_1.wendu.unit}" - 获取wendu点位的单位
  • "${tcp_1.device_1.wendu.timestamp}" - 获取wendu点位的时间戳

示例载荷格式:

{
  "id": "1234",
  "version": "1.0",
  "sys": {
      "ack": 1
  },
  "params": {
    "temperature": "${tcp_1.device_1.wendu}",
    "humidity": "${tcp_1.device_1.shidu}",
    "temperature_unit": "${tcp_1.device_1.wendu.unit}",
    "humidity_unit": "${tcp_1.device_1.shidu.unit}"
  },
  "method": "thing.event.property.post"
}

# 配置步骤

  1. 选择协议类型: WDS
  2. 填写平台账号信息
  3. 填写服务器地址和端口
  4. 选择QoS等级(推荐1)
  5. 配置payload载荷格式(可选,使用默认)
  6. 点击"保存"

# MQTT协议配置

# 概述

MQTT是通用的物联网消息协议,适用于大多数物联网平台。

# 配置参数

参数 必填 说明 示例
Broker地址 MQTT服务器地址 mqtt.example.com
端口 MQTT端口 1883/8883
客户端ID MQTT ClientID WDS186_001
用户名 认证用户名 user
密码 认证密码 password
发布主题 数据发布主题 /gateway/data
订阅主题 命令订阅主题 /gateway/cmd
QoS 服务质量 0/1/2

# 主题

需要主动填写mqtt的主题内容:

# 数据载荷配置

载荷格式示例:

{
  "gateway_id": "WDS186_001",
  "channel": "tcp_1",
  "device": "device_1",
  "timestamp": "${tcp_1.device_1.wendu.timestamp}",
  "data": [
    {
      "property": "wendu",
      "value": "${tcp_1.device_1.wendu}",
      "unit": "${tcp_1.device_1.wendu.unit}"
    },
    {
      "property": "shidu",
      "value": "${tcp_1.device_1.shidu}",
      "unit": "${tcp_1.device_1.shidu.unit}"
    }
  ]
}

# HTTP协议配置

# 概述

HTTP/HTTPS协议用于对接RESTful API服务。

# 配置参数

参数 必填 说明 示例
URL 接口地址 https://api.example.com/data
请求方法 HTTP方法 GET/POST/PUT
请求头 自定义HTTP头 Content-Type, Authorization
请求体 数据载荷 JSON格式
超时时间 请求超时(秒) 10
重试次数 失败重试次数 3

HTTP配置

# 请求头配置

常用请求头:

{
  "Content-Type": "application/json",
  "Authorization": "Bearer your_token_here"
}

# 请求体配置

body字段定义请求体格式(支持自定义json格式):

{
  "device_id": "device_1",
  "upload_time": "${tcp_1.device_1.wendu.timestamp}",
  "points": [
    {
      "name": "wendu",
      "value": "${tcp_1.device_1.wendu}",
      "unit": "${tcp_1.device_1.wendu.unit}"
    },
    {
      "name": "shidu",
      "value": "${tcp_1.device_1.shidu}",
      "unit": "${tcp_1.device_1.shidu.unit}"
    }
  ]
}

# 认证方式

支持多种认证方式:

# Token认证

{
  "Authorization": "Bearer eyJhbGciOiJIUzI1NiIs..."
}

# Basic认证

{
  "Authorization": "Basic dXNlcjpwYXNzd29yZA=="
}

# 自定义认证

{
  "X-API-Key": "your_api_key",
  "X-Secret": "your_secret"
}

# TCP协议配置

# 概述

TCP协议用于与自定义TCP服务器通信,支持长连接、注册包、心跳包等高级功能。

# 配置参数

参数 必填 说明 示例
服务器地址 目标IP或域名 192.168.1.100
端口 TCP端口 8080
超时时间 连接超时(秒) 10
保持连接 是否长连接 true/false
数据载荷 payload配置 JSON格式
注册包 register_packet配置 JSON格式
心跳包 heartbeat配置 JSON格式

TCP配置

# 数据载荷配置

payload字段定义数据包格式:

{
  "header": "AA55",
  "command": "01",
  "data": {
    "device": "device_1",
    "properties": [
      {
        "id": "wendu",
        "value": "${tcp_1.device_1.wendu}"
      },
      {
        "id": "shidu",
        "value": "${tcp_1.device_1.shidu}"
      }
    ]
  },
  "checksum": "auto"
}

# 注册包配置

连接建立后发送的注册包:

{
  "type": "register",
  "device_id": "WDS186_001",
  "timestamp": "${tcp_1.device_1.wendu.timestamp}"
}

配置说明:

  • 连接建立后自动发送
  • 支持变量替换
  • 可配置发送间隔

# 心跳包配置

保持连接的心跳包:

{
  "type": "heartbeat",
  "device_id": "WDS186_001",
  "timestamp": "${tcp_1.device_1.wendu.timestamp}"
}

配置参数:

参数 说明 默认值
interval 心跳间隔(秒) 60
timeout 超时时间(秒) 10
retry 重试次数 3

# 数据格式

TCP支持多种数据格式:

# JSON格式

{
  "device": "device_1",
  "data": [{"temperature": 25.6}]
}

# 十六进制格式

AA 55 01 10 00 19 00 41 00 28 BB CC

# 文本格式

DEVICE:device_1,TEMP:25.6,HUMI:65.2

# UDP协议配置

# 概述

UDP协议用于轻量级、低延迟的数据传输。

# 配置参数

参数 必填 说明 示例
服务器地址 目标IP或域名 192.168.1.100
端口 UDP端口 9000
超时时间 发送超时(秒) 5
数据载荷 payload配置 JSON格式
广播模式 是否广播 true/false
组播地址 组播IP 239.255.0.1
本地端口 本地绑定端口 0(随机)

UDP配置

# 数据载荷配置

{
  "device": "device_1",
  "timestamp": "${tcp_1.device_1.wendu.timestamp}",
  "data": "wendu:${tcp_1.device_1.wendu},shidu:${tcp_1.device_1.shidu}"
}

# 广播模式

启用广播模式后,数据将发送到网络中的所有设备:

{
  "broadcast": true,
  "local_port": 9001
}

# 组播模式

配置组播地址,数据发送到特定组播组:

{
  "multicast_group": "239.255.0.1",
  "local_port": 9001
}

# 数据载荷详细说明

# 变量系统

所有协议的payload都支持相同的变量引用格式:${通道标识_设备标识_属性标识}

基本格式:

  • ${tcp_1.device_1.wendu} - 获取tcp_1通道device_1设备wendu点位的值

扩展属性:

  • ${tcp_1.device_1.wendu.unit} - 获取wendu点位的单位
  • ${tcp_1.device_1.wendu.timestamp} - 获取wendu点位的时间戳

# 载荷模板示例

# 简单格式

{
  "device": "device_1",
  "temperature": "${tcp_1.device_1.wendu}",
  "humidity": "${tcp_1.device_1.shidu}"
}

# 标准格式

{
  "gateway_id": "WDS186_001",
  "timestamp": "${tcp_1.device_1.wendu.timestamp}",
  "data": {
    "channel": "tcp_1",
    "device": "device_1",
    "properties": [
      {
        "code": "wendu",
        "value": "${tcp_1.device_1.wendu}",
        "unit": "${tcp_1.device_1.wendu.unit}"
      },
      {
        "code": "shidu",
        "value": "${tcp_1.device_1.shidu}",
        "unit": "${tcp_1.device_1.shidu.unit}"
      }
    ]
  }
}

# 完整格式

{
  "header": {
    "gateway_id": "WDS186_001",
    "timestamp": "${tcp_1.device_1.wendu.timestamp}",
    "version": "1.0"
  },
  "body": {
    "channel": {
      "code": "tcp_1",
      "type": "modbus_tcp"
    },
    "device": {
      "code": "device_1",
      "name": "温湿度传感器",
      "address": "1"
    },
    "telemetry": [
      {
        "property": "wendu",
        "value": "${tcp_1.device_1.wendu}",
        "unit": "${tcp_1.device_1.wendu.unit}",
        "quality": "good",
        "timestamp": "${tcp_1.device_1.wendu.timestamp}"
      },
      {
        "property": "shidu",
        "value": "${tcp_1.device_1.shidu}",
        "unit": "${tcp_1.device_1.shidu.unit}",
        "quality": "good",
        "timestamp": "${tcp_1.device_1.shidu.timestamp}"
      }
    ]
  }
}

# 数据聚合

系统会自动将同一设备的多个点位聚合到一条消息中:

配置的载荷模板:

{
  "device": "device_1",
  "properties": {
    "wendu": "${tcp_1.device_1.wendu}",
    "shidu": "${tcp_1.device_1.shidu}"
  }
}

实际上报数据:

{
  "device": "device_1",
  "properties": {
    "temperature": 25.6,
    "humidity": 65.2,
    "pressure": 101.3
  }
}

# 重启通道

配置修改后需要重启:

  1. 点击"重启转发通道"按钮
  2. 系统重新加载配置
  3. 重新建立连接
  4. 恢复数据转发

注意: 重启通道会短暂中断数据上报。

# 最佳实践

# 协议选择

  • 方舟平台: 推荐WDS协议,开箱即用
  • 通用平台: 推荐MQTT协议,广泛支持
  • Web服务: 使用HTTP协议
  • 自定义服务: 根据需求选择TCP/UDP

# 性能优化

  1. 合理设置上报间隔: 避免过于频繁
  2. 启用数据筛选: 只上报必要的数据
  3. 使用数据聚合: 减少网络请求次数
  4. 启用数据压缩: 减少带宽占用(MQTT/HTTP)

# 可靠性保证

  1. 心跳保活: 保持连接不中断(TCP/MQTT)
  2. 自动重连: 断线自动重连
  3. 数据缓存: 避免数据丢失
  4. 重试机制: 失败自动重试

# 安全建议

  1. 使用加密传输: HTTPS/MQTTS
  2. 配置认证: 使用用户名密码或Token
  3. 限制访问: 配置IP白名单
  4. 定期更新: 及时更换密钥和证书

# 常见问题

# 上报失败

检查项:

  1. 网络是否正常(NET灯是否亮起)
  2. 服务器地址是否正确
  3. 认证信息是否正确
  4. 防火墙是否阻止
  5. 查看转发日志获取详细错误

# 数据延迟

解决方法:

  1. 减少上报间隔
  2. 优化数据格式,减少载荷大小
  3. 检查网络质量
  4. 增加服务器处理能力

# 缓存溢出

解决方法:

  1. 增加缓存容量
  2. 提高上报频率
  3. 改善网络环境
  4. 启用数据筛选,减少数据量

# 连接频繁断开

解决方法:

  1. 检查网络稳定性
  2. 启用心跳保活(TCP/MQTT)
  3. 增加超时时间
  4. 检查服务器负载

# payload配置错误

解决方法:

  1. 检查JSON格式是否正确
  2. 确认变量名称正确(例如: ${tcp_1.device_1.wendu})
  3. 测试payload是否符合服务器要求
  4. 查看上报日志中的实际数据格式

# 相关链接