Skip to content

1. AS 数据

AS 数据是 NS 将 LoRaWAN 帧解密、解帧后输出的结构化应用层报文,userdata.payload 仍为 Base64 编码,但 LoRaWAN 加密已去除。这一层是设备原始上报数据和 ThinkLink 物模型解析之间的中间层,适合需要自定义协议解析或对接第三方平台的场景。

数据流位置

mermaid
flowchart LR
    DEV[LoRaWAN 设备]:::dim
    GW[网关]:::dim
    NS[NS 数据\nMAC层原始帧]:::dim
    AS[AS 数据\n解密结构化报文]:::highlight
    RT[实时数据\n物模型解析值]:::dim
    HIS[历史数据\n归档查询]:::dim

    DEV -->|无线信号| GW
    GW -->|SEMTECH UDP| NS
    NS -->|LoRaWAN 解密| AS
    AS -->|物模型解析| RT
    RT -->|持久化| HIS

    classDef highlight fill:#1a6fcf,color:#fff,stroke:#1a6fcf
    classDef dim fill:#f0f0f0,color:#888,stroke:#ddd

你在这里:AS 数据已完成 LoRaWAN 解密,但尚未经过物模型解析。如果你需要温度、湿度等业务数值,请直接查看实时数据

AS 数据的报文格式遵循 PTL-S05-asp通信协议V3.2


1.1. 上行数据示例(up)

json
{
  "if": "loraWAN",
  "gwrx": [
    {
      "eui": "5a53012501030056",
      "chan": 0,
      "lsnr": 14.2,
      "rfch": 0,
      "rssi": -21,
      "time": "2025-09-24T07:07:03.807677Z",
      "tmms": 0,
      "tmst": 1152383989,
      "ftime": 0
    }
  ],
  "type": "data",
  "token": 56368,
  "moteTx": {
    "codr": "4/5",
    "datr": "SF7BW125",
    "freq": 470.9,
    "modu": "LORA",
    "macAck": "",
    "macCmd": ""
  },
  "geoInfo": {
    "type": "gw:wifi",
    "accuracy": 50,
    "altitude": 0,
    "latitude": 34.19863,
    "longitude": 108.86273
  },
  "moteeui": "6353012af1090498",
  "version": "3.0",
  "userdata": {
    "port": 11,
    "class": "ClassA",
    "seqno": 27464,
    "payload": "IQcDDG4BAADaBB0C538J",
    "confirmed": false
  }
}
字段说明
moteeui上报设备的 EUI
gwrx接收该帧的网关列表及各网关信号质量(RSSI/LSNR)
userdata.payloadBase64 编码的原始业务负载,需物模型解析
userdata.portFPort,用于区分业务数据类型
userdata.seqno设备帧序号(用于排查重发/丢包)
geoInfo网关地理位置(可用于辅助定位)

1.2. 下行数据示例(dn)

json
{
  "dn": {
    "if": "loraWAN",
    "type": "data",
    "token": 1758686562078,
    "moteeui": "6353012af1099301",
    "version": "3.0",
    "userdata": {
      "port": 51,
      "type": "data",
      "fpend": false,
      "payload": "/mgSBgNWBQZoHBA1MzMzMzMzM04zAAAAAAAAABY=",
      "dnWaitms": 3000,
      "TxUTCtime": "",
      "confirmed": false,
      "intervalms": 0
    }
  }
}
字段说明
moteeui目标设备 EUI
userdata.portFPort,51 常用于参数配置类指令
userdata.payload下发指令内容(Base64 编码)
userdata.dnWaitms等待设备下行窗口的最大延迟(ms)
userdata.confirmed是否需要设备 ACK 确认


1.3. 适用场景

场景使用 AS 数据的原因
自定义协议解析payload 已解密,可直接用自己的 parser 处理
对接第三方平台通过 MQTT 订阅 AS topic,推送到私有系统
确认下行是否被 NS 调度查看 dn 记录是否出现
调试物模型 parser对比 AS payload 与实时数据的解析结果

订阅 AS 数据:通过 MQTT 订阅 /v32/{tenant}/as/up/data/#(上行)和 /v32/{tenant}/as/dn/data/#(下行),可实时接收 AS 层数据。具体 topic 规则参见 ThinkLink 协议说明


1.4. FPort 常见用途

userdata.port(FPort)字段用于区分同一设备上的不同业务通道。以下为常见约定:

FPort用途
51透传通道,原始字节直接透传,不做协议封装
201固件 OTA 升级
209心跳包,用于确认设备在线状态
214参数配置与读取(下行写参数,上行读回当前值)

以上为设备侧约定端口,第三方LoRaWAN标准设备的端口定义以对应设备说明书为准。


1.5. 故障诊断

当用户无法收到数据时,请按以下链路逐层排查:

第一步:确认网关在线

在 ThinkLink 运维管理 → 网关管理 中,确认对应网关状态为在线

网关离线时所有后续数据均不可能到达,排查其他层之前必须先解决网关连接问题。


第二步:在 NS 数据中确认有无上行包

进入 网络数据 → NS 数据,按以下方式搜索:

情形搜索字段说明
设备从未入网或刚复位DevEUIJoin Request / Join Accept 帧用 DevEUI 标识,尚无 DevAddr
设备已入网,正常上报DevAddr入网后所有数据帧使用动态分配的 DevAddr,不再用 DevEUI
  • NS 无数据:设备信号未到达网关,或网关未正确接入 NS。检查设备是否在信号覆盖范围内,或查看网关日志。
  • NS 有数据:继续第三步。

第三步:在 AS 数据中确认解密是否成功

进入 网络数据 → AS 数据,用同一 DevEUI 或 DevAddr 搜索。

现象可能原因处理方法
NS 有数据,AS 为空LoRaWAN 密钥错误(AppKey / AppSKey / NwkSKey 不匹配)核对设备档案中的密钥,与设备烧录的密钥保持一致
NS 有数据,AS 为空设备档案未创建或 enable 为 false在设备管理中添加 LoRaWAN 档案,确认 enable 已开启
AS 有数据解密成功,继续第四步

第四步:确认物模型是否正确配置

应用数据 → 实时数据 中查看是否有解析后的业务数值。

现象可能原因处理方法
AS 有数据,实时数据为空设备未绑定物模型在模型管理中为该设备绑定物模型
AS 有数据,实时数据为空物模型 parser 脚本有错误打开物模型编辑器,用 AS 数据中的 payload 手动调试 parser
AS 有数据,实时数据部分字段为空Parser 未覆盖对应 FPort 或字段检查 parser 中对应 port 分支的解析逻辑