联犀 联犀
首页
使用指南
开发指南
技术分享
  • 中台接口 (opens new window)
  • 物联网接口 (opens new window)
在线体验 (opens new window)
  • gitee (opens new window)
  • github (opens new window)
  • 边缘网关-RHILEX (opens new window)
  • 边缘网关-opengw (opens new window)
首页
使用指南
开发指南
技术分享
  • 中台接口 (opens new window)
  • 物联网接口 (opens new window)
在线体验 (opens new window)
  • gitee (opens new window)
  • github (opens new window)
  • 边缘网关-RHILEX (opens new window)
  • 边缘网关-opengw (opens new window)
  • 介绍

  • 快速开始

  • 设备接入

    • 联犀协议

      • 设备身份认证
      • mqtt认证
      • http协议接入
      • 自定义协议
      • mqtt认证主要流程
      • 设备动态注册
      • 物模型协议
      • OTA升级
      • NTP时间同步
      • 网关子设备
        • 功能概述
          • 设备分类
          • 操作场景
          • 接入方式
        • 通用请求参数
        • 拓扑关系管理
          • 功能概述
          • 新设备注册
          • 绑定设备
          • 解绑设备
          • 云端查询网关可绑定子设备
          • 云端通知网关绑定子设备
          • 网关查询云端拓扑关系
          • 拓扑关系变化
        • 代理子设备上下线
          • 功能概述
          • 代理子设备上线
          • 代理子设备下线
        • 代理子设备消息
          • 功能概述
          • 前提条件
          • 发布和订阅消息
        • 设备物模型
          • 使用方式
          • 设备端物模型结构体定义
          • 设备获取云端物模型信息
          • 设备创建云端设备物模型
          • 设备删除云端设备物模型
      • 设备本地日志上报
      • 设备远程配置
      • RHILEX接入
      • openGW接入
    • 第三方协议

  • 系统管理模块

  • 合作案例

  • 使用指南
  • 设备接入
  • 联犀协议
godLei6
2024-08-29
目录

网关子设备

# 网关子设备

# 功能概述

# 设备分类

物联网开发平台根据设备功能性的不同将设备分为如下三类(即节点的分类):

  • 普通设备 :此类设备可直接接入物联网开发平台且无挂载子设备。
  • 网关设备 :此类设备可直接接入物联网开发平台,并且可接受子设备加入局域网络。
  • 子设备 :此类设备必须依托网关设备才可与物联网开发平台进行通信,例如 Zigbee、蓝牙、RF433 等设备。

# 操作场景

  • 对于不具备直接接入因特网的设备,可先接入本地网关设备的网络,利用网关设备与云端的通信功能,代理子设备接入物联网开发平台。
  • 对于在局域网中加入或退出网络的子设备,网关设备可对其在平台进行绑定或解绑操作,并上报与子设备的拓扑关系,实现平台对于整个局域网子设备的管理。

# 接入方式

  • 网关设备接入物联网开发平台的方式与普通设备一致。网关设备接入之后可代理同一局域网下的子设备上/下线,代理子设备上报数据,代理子设备接收云端下发给子设备的数据,并管理与子设备之间的拓扑关系。
  • 子设备的接入需通过网关设备来完成,子设备通过网关设备完成身份的认证之后即可成功接入云端。认证方式分为以下两种:
    • 设备级密钥方式 网关获取子设备的设备证书或密钥,并生成子设备绑定签名串。由网关向平台上报子设备绑定签名串信息,代理子设备完成身份的验证。
    • 产品级密钥方式 网关获取子设备的 ProductSecret(产品密钥),并生成签名,由网关向平台发送动态注册请求。验证成功之后平台将返回子设备的 DeviceCert 或 DeviceSecret,网关设备依此生成子设备绑定签名串,并向平台上报子设备绑定签名串信息。验证成功之后即完成子设备的接入。

# 通用请求参数

参数 类型 必填 说明
msgToken String 是 用于上下行消息配对标识
sys.noAsk bool 否 云端是否回复设备
sys.retMsg bool 否 是否返回错误信息,字段为msg

示例:

{
  "method": "reportInfo",
  "msgToken": "1234567",
  "sys": {
     "noAsk": false,
     "retMsg": true
  }
}
1
2
3
4
5
6
7
8

# 拓扑关系管理

# 功能概述

网关类型的设备,可通过与云端的数据通信,对其下的子设备进行绑定与解绑操作。实现此类功能需利用如下两个 Topic:

  • 数据上行 Topic(用于发布):$gateway/up/topo/${productid}/${devicename}
  • 数据下行 Topic(用于订阅):$gateway/down/topo/${productid}/${devicename}

# 新设备注册

设备上线之前您需要对设备进行身份注册,标识您的设备。 网关绑定子设备请求数据格式:

{
  "method": "register",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa",
        "deviceAlias": "afwe"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

网关绑定子设备响应数据格式:

{
  "method": "register",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subaaa",
        "deviceSecret": "xxxxxx"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

字段 类型 描述
method String 网关消息类型。注册子设备取值为:register
msgToken String 用于上下行消息配对标识
payload.devices Array 需要注册的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.deviceAlias String 子设备名称(可选,版本>1.3.0)

响应参数说明:

字段 类型 描述
method String 网关消息类型。绑定子设备取值为:register
msgToken String 用于上下行消息配对标识
payload.devices Array 要注册的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.deviceSecret String 子设备秘钥,拿来绑定设备

# 绑定设备

网关类型的设备,可以通过数据上行 Topic 请求添加它和子设备之间的拓扑关系,实现绑定子设备。请求成功之后,云端通过数据下行 Topic 返回子设备的绑定结果信息。

网关绑定子设备请求数据格式:

{
  "method": "bind",  
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa",
        "signature": "signature",
        "random": 121213,
        "timestamp": 1589786839,
        "signMethod": "hmacsha256"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

网关绑定子设备响应数据格式:

{
  "method": "bind",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subaaa",
        "code": 200
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

字段 类型 描述
method String 网关消息类型。绑定子设备取值为:bind
msgToken String 用于上下行消息配对标识
payload.devices Array 需要绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.signature String 子设备绑定签名串。 签名算法:
1. 签名原串,将产品 ID 设备ID,随机数,时间戳拼接:text=${product_id};${device_name};${random};${timestamp}
2. 使用设备 Psk 密钥,或者证书的 Sha1 摘要,进行签名:hmac_sha1(device_secret, text),注意:(device_secret 需要先base64 decode) 生产16进制字符串
payload.devices.random Int 随机数。
payload.devices.timestamp Int 时间戳,单位:秒。
payload.devices.signMethod String 签名算法。支持 hmacsha1、hmacsha256。

响应参数说明:

字段 类型 描述
method String 网关消息类型。绑定子设备取值为:bind
msgToken String 用于上下行消息配对标识
payload.devices Array 要绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.code Int 子设备绑定结果,200表示成功

# 解绑设备

网关类型的设备, 可以通过数据上行 Topic 请求解绑它和子设备之间的拓扑关系。请求成功之后,云端通过数据下行 Topic 返回子设备的解绑信息。

网关解绑子设备请求数据格式:

{
  "method": "unbind",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subaaa"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

网关解绑子设备响应数据格式:

{
  "method": "unbind",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subaaa",
        "code": 200
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

字段 类型 描述
method String 网关消息类型。解绑子设备取值为:unbind
msgToken String 用于上下行消息配对标识
payload.devices Array 需要解绑的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

响应参数说明:

字段 类型 描述
method String 网关消息类型。解绑子设备取值为:unbind
msgToken String 用于上下行消息配对标识
payload.devices Array 需要解绑的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.code Int 子设备绑定结果,200表示成功

# 云端查询网关可绑定子设备

云端可以通过调用接口查询网关可以配网的子设备列表

下发请求数据格式:

{
  "method": "getFound",
  "msgToken": "1234567"
}
1
2
3
4

请求参数说明:

参数 类型 描述
method String 网关消息类型。查询子设备取值为:getFound
msgToken String 用于上下行消息配对标识

网关查询子设备拓扑关系响应数据格式:

{
  "method": "getFound",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "XKFA****LX",
        "deviceName": "2OGDy7Ws8mG****YUe"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "5gcEHg3Yuvm****2p8"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "hmIjq0gEFcf****F5X"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "x9pVpmdRmET****mkM"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "zmHv6o6n4G3****Bgh"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

响应参数说明:

参数 类型 描述
method String 网关消息类型。查询子设备取值为:getFound
msgToken String 用于上下行消息配对标识
payload.devices Array 网关可以绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
msgToken String 用于上下行消息配对标识

# 云端通知网关绑定子设备

云端可以通过调用接口通知网关配网子设备列表,无需网关回复

下发请求数据格式:

{
  "method": "notifyBind",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "XKFA****LX",
        "deviceName": "2OGDy7Ws8mG****YUe"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "5gcEHg3Yuvm****2p8"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "hmIjq0gEFcf****F5X"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "x9pVpmdRmET****mkM"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "zmHv6o6n4G3****Bgh"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

请求参数说明:

参数 类型 描述
method String 网关消息类型。查询子设备取值为:getFound
msgToken String 用于上下行消息配对标识
payload.devices Array 网关可以绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

# 网关查询云端拓扑关系

网关类型的设备, 可以通过该 Topic 上行请求查询子设备的拓扑关系。

网关查询子设备拓扑关系请求数据格式:

{
  "method": "getTopo",
  "msgToken": "1234567"
}
1
2
3
4

请求参数说明:

参数 类型 描述
method String 网关消息类型。查询子设备取值为:getTopo
msgToken String 用于上下行消息配对标识

网关查询子设备拓扑关系响应数据格式:

{
  "method": "getTopo",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "XKFA****LX",
        "deviceName": "2OGDy7Ws8mG****YUe"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "5gcEHg3Yuvm****2p8"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "hmIjq0gEFcf****F5X"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "x9pVpmdRmET****mkM"
      },
      {
        "productID": "XKFA****LX",
        "deviceName": "zmHv6o6n4G3****Bgh"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

响应参数说明:

参数 类型 描述
method String 网关消息类型。查询子设备取值为:describeSubDevices
msgToken String 用于上下行消息配对标识
payload.devices Array 网关绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

# 拓扑关系变化

网关类型的设备, 可以通过该数据下行 Topic 订阅平台对子设备的拓扑关系变化。

子设备被绑定或解绑,网关将收到子设备拓扑关系变化,数据格式如下:

{
  "method": "change",
  "msgToken": "1234567",
  "payload": {
    "status": 1,
    "devices": [
      {
        "productID": "CFCS****G7",
        "deviceName": "****ev"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

参数 类型 描述
method String 网关消息类型。拓扑关系变化取值为:change
msgToken String 用于上下行消息配对标识
status Int 拓扑关系变化状态。* 2:解绑* 1:绑定
payload.devices Array 网关绑定的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

网关响应,数据格式如下:

{
  "method": "change",
  "msgToken": "1234567",
  "code":200,
  "msg":"success"
}
1
2
3
4
5
6

响应参数说明:

参数 类型 描述
method String 网关消息类型。拓扑关系变化取值为:change
msgToken String 用于上下行消息配对标识
code Integer 200 表示成功
msg String 当 code 非200的时候,提示错误信息

# 代理子设备上下线

# 功能概述

网关类型的设备,可通过与云端的数据通信,代理其下的子设备进行上线与下线操作。此类功能所用到的 Topic 与网关子设备拓扑管理的 Topic 一致:

  • 数据上行 Topic(用于发布):$gateway/up/status/${productid}/${devicename}
  • 数据下行 Topic(用于订阅):$gateway/down/status/${productid}/${devicename}

# 代理子设备上线

网关类型的设备,可以通过数据上行 Topic 代理子设备上线。请求成功之后,云端通过数据下行 Topic 返回子设备的上线结果信息。
同时联犀会将自动为网关订阅子设备的物模型相关topic和ota相关topic
网关代理子设备上线请求数据格式:

{
  "method": "online",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

代理子设备上线响应数据格式:

{
  "method": "online",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa",
        "code":200
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

字段 类型 描述
method String 网关消息类型。代理子设备上线取值为:online
msgToken String 用于上下行消息配对标识
payload.devices Array 需上线的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

响应参数说明:

字段 类型 描述
method String 网关消息类型。代理子设备上线取值为:online
msgToken String 用于上下行消息配对标识
payload.devices Array 需上线的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.code Int 子设备上线结果,具体错误码 (opens new window) 见下表

# 代理子设备下线

网关类型的设备, 可以通过数据上行 Topic 代理子设备下线。请求成功之后,云端通过数据下行 Topic 返回成功子设备的下线信息。 同时联犀会将网关订阅该子设备的物模型及ota相关topic删除
网关代理子设备下线请求数据格式:

{
  "method": "offline",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

网关代理子设备下线响应数据格式:

{
  "method": "offline",
  "msgToken": "1234567",
  "payload": {
    "devices": [
      {
        "productID": "CFC******AG7",
        "deviceName": "subdeviceaaaa",
        "code":200
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

请求参数说明:

字段 类型 描述
method String 网关消息类型。代理子设备下线取值为:offline
msgToken String 用于上下行消息配对标识
payload.devices Array 需代理下线的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID

响应参数说明:

字段 类型 描述
method String 网关消息类型。代理子设备下线取值为:offline
msgToken String 用于上下行消息配对标识
payload.devices Array 需代理下线的子设备列表
payload.devices.productID String 子设备产品 ID
payload.devices.deviceName String 子设备ID
payload.devices.code Int 子设备下线结果,具体错误码见下表

# 代理子设备消息

# 功能概述

网关类型的设备,可通过与云端的数据通信,代理其下的子设备发布和订阅消息。

# 前提条件

发布和订阅消息之前,请参见 网关设备接入和代理子设备上下线,进行网关设备和子设备接入上线。

# 发布和订阅消息

网关产品与子产品建立绑定,获取子设备的 Topic 权限后,网关设备可以使用子设备Topic代理进行收发消息,同时可以在设备调试-设备日志中查看通信信息。

# 设备物模型

设备物模型是设备级的物模型,设备物模型只支持属性,并且类型只支持: bool,int,string,enum,timestamp,float

# 使用方式

在使用网关的场景,在部署运维阶段有个很麻烦的操作,也就是物模型的同步,或者说点位-物模型的同步.在联犀中为了解决这个问题,构建了以下几个方法,方便用户在编辑完点位后能够及时的同步到云端.

  • 当用户新增点位完成后: 直接调用创建物模型方法,云端会去除重复的,并进行新增操作
  • 同步物模型到云端: 当用户发现云端和网关的物模型不同步的时候,可以点击同步按钮,网关获取云端物模型,提取出需要新增和删除的物模型,并分别调用创建和删除方法将物模型进行同步
  • 删除物模型: 当用户编辑删除点位后,调用删除物模型方法进行删除
  • 当用户换网关后,从云端同步物模型到网关: 如果需要从云端同步点位到网关,则可以调用获取物模型接口来进行物模型同步

# 设备端物模型结构体定义

type (
	// Model 物模型协议-数据模板定义
	ModelSimple struct {
		Properties PropertiesSimple `json:"properties,omitempty"` //属性
		Events     EventsSimple     `json:"events,omitempty"`     //事件
		Actions    ActionsSimple    `json:"actions,omitempty"`    //行为
	}
	/*事件*/
	EventSimple struct {
		Identifier string       `json:"id"`     //标识符 (统一)
		Name       string       `json:"name"`   //功能名称
		Type       EventType    `json:"type"`   //事件类型: 1:信息:info  2:告警alert  3:故障:fault
		Params     ParamSimples `json:"params"` //事件参数
	}
	EventsSimple []EventSimple

	ParamSimple struct {
		Identifier string `json:"id"`   //参数标识符
		Name       string `json:"name"` //参数名称
		Define            //参数定义
	}
	ParamSimples []ParamSimple
	/*行为*/
	ActionSimple struct {
		Identifier string       `json:"id"`     //标识符 (统一)
		Name       string       `json:"name"`   //功能名称
		Dir        ActionDir    `json:"dir"`    //调用方向
		Input      ParamSimples `json:"input"`  //调用参数
		Output     ParamSimples `json:"output"` //返回参数
	}
	ActionsSimple []ActionSimple

	/*属性*/
	PropertySimple struct {
		Identifier string       `json:"id"`   //标识符 (统一)
		Name       string       `json:"name"` //功能名称
		Mode       PropertyMode `json:"mode"` //读写类型:rw(可读可写) r(只读)
		Define                  //数据定义
	}
	PropertiesSimple []PropertySimple
	/*数据类型定义*/
	Define struct {
		Type      DataType          `json:"type"`                //参数类型:bool int string struct float timestamp array enum
		Mapping   map[string]string `json:"mapping,omitempty"`   //枚举及bool类型:bool enum
	}
)
// 数据类型
type DataType string

const (
	DataTypeBool      DataType = "bool"
	DataTypeInt       DataType = "int"
	DataTypeString    DataType = "string"
	DataTypeStruct    DataType = "struct"
	DataTypeFloat     DataType = "float"
	DataTypeTimestamp DataType = "timestamp"
	DataTypeArray     DataType = "array"
	DataTypeEnum      DataType = "enum"
)

// 属性读写类型: r(只读) rw(可读可写)
type PropertyMode string

const (
	PropertyModeR  PropertyMode = "r"
	PropertyModeRW PropertyMode = "rw"
)

// 事件类型: 信息:info  告警alert  故障:fault
type EventType = string

const (
	EventTypeInfo  EventType = "info"
	EventTypeAlert EventType = "alert"
	EventTypeFault EventType = "fault"
)

// 行为的执行方向
type ActionDir string

const (
	ActionDirUp   ActionDir = "up"   //向上调用
	ActionDirDown ActionDir = "down" //向下调用
)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

# 设备获取云端物模型信息

在网关子设备场景可以通过该方法获取设备的物模型定义,包含设备物模型和产品物模型.

  1. 设备从云端接收最新消息使用的 Topic:
  • 请求 Topic: $gateway/up/thing/{ProductID}/{DeviceName}
  • 响应 Topic: $gateway/down/thing/{ProductID}/{DeviceName}
  1. 请求
  • 请求消息格式:
{
  "method": "getSchema",
  "msgToken": "123",
  "payload":{
    "productID": "123",
    "deviceName": "123"
  }
}
1
2
3
4
5
6
7
8
  • 请求参数说明:
参数 类型 必填 说明
method String 是 getSchema 表示获取设备最新物模型信息
msgToken String 是 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
payload.productID String 否 如果产品ID和设备ID都没传则会获取网关自己的物模型(包含产品和设备物模型),如果传了产品ID,则会获取该产品的物模型,如果同时传了设备ID,那么会同时返回该设备的设备物模型
payload.deviceName String 否 同上
  1. 响应
  • 响应消息格式:
{
   "method": "getSchema",
   "msgToken": "123",
   "code": 200,
   "payload": {
      "properties": [
         {
            "id": "switc34h",
            "name": "switc34h",
            "mode": "r",
            "type": "int"
         },
         {
            "id": "light",
            "name": "亮度",
            "mode": "rw",
            "type": "int"
         },
         {
            "id": "switch",
            "name": "开关",
            "mode": "rw",
            "type": "bool"
         },
         {
            "id": "light2",
            "name": "亮度2",
            "mode": "rw",
            "type": "float"
         },
         {
            "id": "string11",
            "name": "亮度2",
            "mode": "rw",
            "type": "string"
         },
         {
            "id": "switch",
            "name": "电源开关",
            "mode": "rw",
            "type": "bool"
         },
         {
            "id": "power",
            "name": "电量",
            "mode": "rw",
            "type": "float"
         },
         {
            "id": "p",
            "name": "档位",
            "mode": "rw",
            "type": "int"
         },
         {
            "id": "token",
            "name": "秘钥",
            "mode": "rw",
            "type": "string"
         },
         {
            "id": "array_struct",
            "name": "数组枚举测试",
            "mode": "rw",
            "type": "array"
         },
         {
            "id": "enum",
            "name": "枚举类型",
            "mode": "rw",
            "type": "enum",
            "mapping": {
               "1": "低档",
               "2": "中档",
               "3": "高档"
            }
         },
         {
            "id": "time",
            "name": "时间",
            "mode": "rw",
            "type": "timestamp"
         }
      ],
      "events": [
         {
            "id": "lowPower",
            "name": "电压低",
            "type": "alert",
            "params": [
               {
                  "id": "v",
                  "name": "电压",
                  "type": "float"
               },
               {
                  "id": "t",
                  "name": "时间",
                  "type": "timestamp"
               }
            ]
         },
         {
            "id": "eventEnum",
            "name": "事件枚举类型",
            "type": "alert",
            "params": [
               {
                  "id": "d",
                  "name": "档位",
                  "type": "enum",
                  "mapping": {
                     "1": "低档",
                     "2": "中档",
                     "3": "高档"
                  }
               },
               {
                  "id": "b",
                  "name": "开关",
                  "type": "bool"
               }
            ]
         },
         {
            "id": "fefe",
            "name": "fefe",
            "type": "alert",
            "params": [
               {
                  "id": "smoke_alarm",
                  "name": "smoke_alarm",
                  "type": "bool"
               }
            ]
         }
      ]
   }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  • 响应参数说明:
参数 类型 说明
method String 表示获取设备最新上报信息的 reply 消息
msgToken String 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
code Integer 200标识成功
payload JSON 返回物模型json

# 设备创建云端设备物模型

在该产品打开设备管理物模型后,设备可以通过该方法来创建设备物模型

  1. 设备从云端接收最新消息使用的 Topic:
  • 请求 Topic: $gateway/up/thing/{ProductID}/{DeviceName}
  • 响应 Topic: $gateway/down/thing/{ProductID}/{DeviceName}
  1. 请求
  • 请求消息格式:
{
   "method": "createSchema",
   "msgToken": "123",
   "payload":{
    "schema": {
      "properties": [
        {
          "id": "switch",
          "name": "开关",
          "type": "bool"
  
        },
        {
          "id": "light",
          "name": "亮度",
          "type": "int"
        },
        {
          "id": "light2",
          "name": "亮度2",
          "type": "float"
        },
        {
          "id": "string11",
          "name": "亮度2",
          "type": "string"
        }
  
      ]
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  • 请求参数说明:
参数 类型 必填 说明
method String 是 createSchema 表示创建设备物模型
msgToken String 是 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
payload.schema JSON 物模型json
  1. 响应
  • 响应消息格式:
{
   "method": "createSchema",
   "msgToken": "123",
   "code": 200
}
1
2
3
4
5
  • 响应参数说明:
参数 类型 说明
method String 表示获取设备最新上报信息的 reply 消息
msgToken String 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
code Integer 200标识成功
data JSON 返回物模型json

# 设备删除云端设备物模型

在该产品打开设备管理物模型后,设备可以通过该方法来将云端的设备物模型删除

  1. 设备从云端接收最新消息使用的 Topic:
  • 请求 Topic: $gateway/up/thing/{ProductID}/{DeviceName}
  • 响应 Topic: $gateway/down/thing/{ProductID}/{DeviceName}
  1. 请求
  • 请求消息格式:
{
  "method": "deleteSchema",
  "msgToken": "123",
  "payload": {
    "identifiers":["power_switch","color","brightness"]
  }
}
1
2
3
4
5
6
7
  • 请求参数说明:
参数 类型 必填 说明
method String 是 deleteSchema 表示要删除设备物模型
msgToken String 是 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
payload.identifiers array.String 是 需要删除的物模型属性标识符列表
  1. 响应
  • 响应消息格式:
{
  "method": "deleteSchema",
  "code": 200,
  "msgToken": "123"
}
1
2
3
4
5
  • 响应参数说明:
参数 类型 说明
method String 表示获取设备最新上报信息的 reply 消息
msgToken String 消息 Id,回复的消息将会返回该数据,用于请求响应消息的对比
code Integer 200标识云端成功收到设备上报的属性
上次更新: 2025/02/17, 09:47:32
NTP时间同步
设备本地日志上报

← NTP时间同步 设备本地日志上报→

Theme by Vdoing | Copyright © 2022-2025 昆明云物通科技有限公司|GNU | 滇ICP备2024043132号-1 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式