# 星型网络

数据上行: fogcloud/{pk}/{dn}/thing/up/topo 数据下行: fogcloud/{pk}/{dn}/thing/down/topo

具体请求类别根据 json 数据的 method 字段进行区分:

method

说明

add

添加拓扑关系

delete

删除拓扑关系

get

获取拓扑关系

change

云端通知网关拓扑关系发生变化

login

子设备上线

logout

子设备下线

# 1 拓扑关系管理

子设备身份认证后,可以由网关上报拓扑关系至 fogcloud 平台,或直接通过 fogcloud 后台管理页面进行添加,然后进行子设备上线。 子设备上线时,物联网平台会校验子设备身份和与网关的拓扑关系,检验通过后,会建立与网关的物理通道。 网关子设备接入步骤:

  1. 网关请求添加拓扑关系,云端进行身份校验,并响应成功添加的子设备列表;
  2. 网关请求子设备上线,云端校验子设备身份和拓扑关系,校验通过后,子设备成功接入;

公共请求/响应参数说明:

参数

类型

说明

id

uint32

消息 id。无符号 32bit 整型,取值 0~2^32-1, 递增

version

string

协议版本,当前取唯一值 1.0

code

int

返回结果,0 代表成功

# 1.1 添加拓扑关系

  • 设备上行数据格式:
{
  "id": 123,
  "version": "1.0",
  "params": [
    {
      "device_name": "test_name",
      "product_key": "sdf3gdg3F",
      "sign": "xxxxxx",
      "sign_method": "hmacsha1", //消息摘要算法,支持hmacmd5, hmacsha1, aescmac
      "client_id": "xxxxxx",     //mqtt client_id具有唯一性,推荐设备sn/mac
      "extra": "xxxx",           
      "session_id": "xxxx"       //配网请求唯一标识
    }
  ],
  "method": "add"
}

请求参数说明:

参数

类型

说明

params

list

请求入参

device_name

string

设备名称

product_key

string

设备所属产品 product_key

sign_method

string

消息摘要算法,支持 hmacsha1, hmacmd5, aescmac。不传则默认为 hmacsha1

sign

string

签名。加签算法:sign= hmacsha1(deviceSecret, clientId{clientId}deviceName{deviceName}productKey{productKey})

timestamp

uint32

时间戳,单位秒

client_id

string

设备连接 iot 标识。不传则默认为 device_name&product_key

method

string

add

session_id

string

配网请求唯一标识

  • 云端响应数据格式:
{
  "id": 123,
  "code": 0,
  "method": "add",
  "params": [
    {
      "device_name": "test_device",
      "product_key": "fog****cloud"
    }
  ]
}

签名示例:

一个子设备连接信息为:

clientId: "test"
deviceName: "00000000"
productKey: "12345678"
signmethod: "hmacsha1"
deviceSecret: "secret"

则签名计算如下:

sign = hmacsha1("secret", "clientIdtestdeviceName00000000productKey12345678").toHexString()
sign = "27e4173a2aadb33699f0f5246096def76265c09f"

# 1.2 删除拓扑关系

数据上行。

  • 设备上行数据格式:
{
  "id": 123,
  "version": "1.0",
  "params": [
    {
      "device_name": "test_device",
      "product_key": "fog****cloud"
    }
  ],
  "method": "delete"
}

# 1.3 获取设备拓扑关系

数据上行。 网关设备可以获取本设备下的子设备拓扑关系。

  • 设备上行数据格式:
{
  "id": 123,
  "version": "1.0",
  "method": "get"
}
  • 云端响应数据格式:
{
  "id": 123,
  "code": 0,
  "method": "get",
  "params": [
    {
      "device_name": "test_device",
      "product_key": "fog****cloud",
      "extra": "xxxx"
    }
  ]
}

# 1.7 通知网关拓扑关系变化

云端拓扑关系变化时,会通知网关,网关需要更新本地拓扑关系

  • 云端下行数据格式:
{
  "id": 123,
  "version": "1.0",
  "params": {
    "action": 0, //0-删除,1-新增
    "subs": [
      {
        "device_name": "00000000",
        "product_key": "6f2f5483"
      },
      {  
        "device_name": "00000001",
        "product_key": "6f2f5483"
      }
    ]
  },
  "method": "change"
}

# 2 子设备上下线

子设备上线时,物联网平台会根据拓扑关系进行身份校验。

# 2.1 子设备上线

  • 设备上行数据格式:
{
  "id": 123,
  "version": "1.0",
  "method": "login",
  "params": [
    {
      "device_name": "00000001",
      "product_key": "0132ae12"
    },
    {
      "device_name": "00000002",
      "product_key": "0132ae12"
    }
  ]
}

# 2.2 子设备下线

  • 设备上行数据格式:
{
  "id": 123,
  "version": "1.0",
  "params": [
    {
      "device_name": "test_name",
      "product_key": "sdf3gdg3F"
    },
    {
      "device_name": "test_name1",
      "product_key": "sdf3gdg3F"
     }
  ],
  "method": "logout"
}
更新时间: 2023/1/30 下午5:27:13