设备管理 API

设备管理 API

概述

主要包含对物联网产品和设备等基础信息的管理.

本文定义的接口主要供应用程序调用.

系统前缀

API:

https://{domain-name}/v2/device/

版本

V3.1

作者

ChengZhen (zhen_cheng@sae.com.hk)

修改历史

2019/5/21

2018/10/13

2018/8/2

设备类型

关于事物和事物描述的具体定义请参考 事物描述 一章。

系统内置了一些常用的物联网设备的描述信息,通过下面的接口可以访问这些信息。

事物模板

系统提供标准事物描述模板,创建产品时可以通过 type 属性引用相关的标准事物描述模板,这样这个产品就自动继承了这个标准事物的所有属性,方法以及事件等。同时产品也可以在标准事物的基础上添加自定义属性, 方法和事件等。

事物描述基本属性:

NAME SORTABLE TYPE DESCRIPTION
name yes String 事物名称, 仅字母和数字等组成
title yes String 事物显示标题
titles - Object 中文显示标题
description - String 描述信息
descriptions - Object 中文描述信息
properties - Property 属性列表
actions - Action 操作列表
events - Event 事件列表

事物名称:

采用驼峰命名法,由字母组成,可选包含数字,首字母大写,如:

查询事物列表

GET /schema/list

返回结果:

返回系统定义的所有标准事物描述及其定义

{
    "total": Number,
    "schemas": [{
        "name": String,
        "title": String,
        "properties": {},
        "actions": {},
        "events": {}
    }]
}

查询指定名称的事物

GET /schema/get

返回结果:

返回指定名称的标准事物描述及其定义

{
    "name": String,
    "title": String,
    "properties": {},
    "actions": {},
    "events": {}
}

事物操作模板

事物操作基本属性:

NAME SORTABLE TYPE DESCRIPTION
name yes String 操作名称
title yes String 显示名称
titles - Object 中文显示名称
description - String 描述信息
descriptions - Object 中文描述信息
input - DataSchema 输入参数类型, 具体请参考 WoT 事物描述
output - DataSchema 输出参数类型, 具体请参考 WoT 事物描述

查询操作列表

GET /schema/action/list

返回结果:

返回系统定义的所有标准操作及其定义

{
    "total": Number,
    "actions": [{
        "name": String,
        "title": String,
        "input": {},
        "output": {}
    }]
}

事物事件模板

事物事件基本属性:

NAME SORTABLE TYPE DESCRIPTION
name yes String 事件名称
title - String 显示名称
titles - Object 中文显示名称
description - String 描述信息
descriptions - Object 中文描述信息
data - DataSchema 事件数据类型, 具体请参考 WoT 事物描述

查询事件列表

GET /schema/event/list

返回结果:

返回系统定义的所有标准事件及其定义

{
    "total": Number,
    "events": [{
        "name": String,
        "title": String,
        "data": {}
    }]
}

事物属性模板

事物属性基本属性:

NAME SORTABLE TYPE DESCRIPTION
name yes String 属性名称
title yes String 显示名称
titles - Object 中文显示名称
description - String 描述信息
descriptions - Object 中文描述信息
type yes String 数据类型
maximum yes Number 最大值 (仅数值类型有效)
minimum yes Number 最小值 (仅数值类型有效)
unit yes String 单位

查询属性类型列表

GET /schema/property/types

返回结果

{
    "types": [String]
}

查询属性列表

关于属性的定义请参考 事物描述 一文

GET /schema/property/list

返回结果:

返回系统定义的所有标准属性及其定义

{
    "total": Number,
    "properties": [{
        "name": String,
        "title": String,
        "titles": {
            "zh-CN": String
        },
        "description": String,
        "descriptions": {
            "zh-CN": String
        },
        "type": String,
        "maximum": Number,
        "minimum": Number,
        "unit": String
    }]
}

故障代码表

NAME TYPE DESCRIPTION
name String 故障名称
level Number 故障级别
code String|Number 故障代码
index Number 故障索引
reason String 故障原因
type String 故障类型

查询故障列表

关于属性的定义请参考 事物描述 一文

GET /schema/fault/list

返回结果:

返回系统定义的所有标准属性及其定义

{
    "total": Number,
    "faults": [{
        "name": String,
        "level": Number,
        "code": String|Number,
        "index": Number,
        "reason": String,
        "type": String
    }]
}

产品

产品是某一类物联网设备的集合, 该类设备具有同样属性和功能. 您可以根据产品批量管理对应设备。

属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 产品 ID,系统生成
brand yes String 32 品牌
config - Object - 产品公共配置参数
created yes Date - 创建时间,系统生成
description - String 200 方便人读的简要描述信息
protocol yes String 32 接入协议类型,由字母和数字组成
isPublic yes Boolean - 指出是否公开这个产品给所有人使用
key yes String 32 产品编号, 用于标识一个产品,由字母和数字组成
manifest - Object - 产品定义, 包含属性,方法,事件等事物描述信息
name yes String 32 方便人读的产品名称
metadata - Object - 产品元数据,键值对
model yes String 32 产品型号
secret - String 64 产品密钥,由字母和数字组成
updated yes Date - 最后更新时间,系统生成
type yes String 32 产品类型,由字母和数字组成

属性详细描述

产品类型

type

即标准事物名称,如果不存在相关的标准事物,也可以使用下面的名称

产品编号

key

在系统内具有唯一性, 可以使用产品的型号做为产品编号

命名规则: 采用驼峰命名法,由字母组成,可选包含数字,首字母小写,如 ledLight

产品密钥

secret

用于批量注册设备,默认没有启用

接入协议

protocol

产品元数据

metadata

产品的 metadata 中包含了产品的元数据, 常用来定义技术参数等信息, 常用的属性有:

NAME TYPE DESCRIPTION
model String 型号, 1-32 个字符
updated Date 产品元数据最后更新时间

产品配置信息

config

产品的 config 中包含了产品的全局配置信息, 具体内容和具体的产品相关, 常用的属性有:

NAME TYPE DESCRIPTION
updated Date 产品属性最后一次修改时间

产品事物描述

manifest

系统使用 Manifest JSON 来描述一个设备, 它将包括如下的内容:

{
    "manifest": {
        "properties": {},
        "actions": {},
        "events": {}
    }
}

属性定义 (具体请参考 WoT 事物描述):

NAME TYPE DESCRIPTION
properties Object 事物属性
actions Object 事物操作
events Object 事物事件
阈值设置
{
    "manifest": {
        "properties": {
            "<foo>": {
                "ranks": [{
                    "rank": Number,
                    "threshold": Number,
                    "title": String
                }]
            }
        }
    }
}

创建一个新的产品

POST /product/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
description - String 描述
name true String 名称
key - String 产品编码
model - String 产品型号
type - String 产品类型
protocol - String 接入协议
brand - String 产品品牌
isPublic - Boolean 是否公开
secret - String 产品密钥

响应结果:

返回创建的产品的信息

{
    "id": String,
    "key": String,
    "name": String,
    "type": String,
    "protocol": String,
    "isPublic": Boolean,
    "description": String
}

查询指定产品

GET /product/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 产品 ID

响应结果:

返回指定产品的详细信息

{
    "id": String,
    "key": String,
    "name": String,
    "type": String,
    "protocol": String,
    "isPublic": Boolean,
    "description": String,
    "metadata": {
        "model": String,
        "version": String,
        "updated": Date
    },
    "config": {
        "updated": Date
    },
    "manifest": {
        "@context": String,
        "@type": String,
        "properties": {},
        "actions": {},
        "events": {}       
    }
}

修改产品属性

POST /product/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 产品 ID
brand - String 产品品牌
description - String 简要描述
key - String 产品编码
name - String 产品名称
type - String 产品类型
secret - String 产品密钥
metadata - String 产品元数据, JSON 字符串
manifest - String 产品定义, JSON 字符串
model - String 产品型号
config - String 产品配置信息, JSON 字符串
protocol - String 接入协议
isPublic - Boolean 是否公开

响应结果:

返回修改后的产品的信息

{
    "id": String,
    "key": String,
    "name": String,
    "type": String,    
    "protocol": String,
    "isPublic": Boolean,
    "description": String,
    "metadata": {},
    "manifest": {},
    "config": {}
}

删除一个产品

POST /product/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 产品 ID

响应结果:

返回删除后的产品的信息

{
    "id": String,
    "key": String,
    "name": String,
    "type": String,
    "protocol": String,
    "isPublic": Boolean,
    "description": String,
    "metadata": {},
    "manifest": {},
    "config": {}
}

查询产品列表

GET /product/list (GET /product/)

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset String 0 开始返回的记录的索引
limit String 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
q.name String - 模糊搜索产品名
q.key String - 模糊搜索产品编号
type String - 产品类型过滤条件

示例:

GET /product/list?q=name~=test

响应结果:

返回包含产品信息的列表

{
    "total": Number,
    "products": [{
        "id": String,
        "key": String,
        "name": String,
        "type": String,
        "protocol": String,
        "isPublic": Boolean,
        "description": String,
        "metadata": {},
        "manifest": {},
        "config": {}
    }]
}

固件

固件属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 设备 ID
created yes Date - 创建时间
name yes String 32 固件名称
productId - ObjectId - 所属的产品 ID
size yes Number - 固件大小
md5sum - String 36 MD5 摘要
version yes String 32 固件版本
url - String 255 文件 URL 下载地址
description - String 200 方便人读的简介
updated yes Date - 最后修改时间

添加一个新的固件

POST /firmware/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
productId yes ObjectId 产品 ID
name - String 固件名称
version yes String 固件版本号
url - String 固件文件下载路径
md5sum - String 固件文件 MD5 Hash 值
size - Number 固件大小
description - String 固件简介
{
    "id": String,
    "version": String,      // 固件版本号
    "created": Number,
    "updated": Number,      // 最后修改时间, Unix 时间戳, 单位为秒
    "md5sum": String,         // 固件文件 etag 值, 一般取固件的 md5 hash 值
    "size": Number,         // 固件文件大小, 单位为字节
    "url": String,
    "name": String,
    "description": String
}

上传固件文件

POST /upload/firmware

请求格式:

采用 multipart/form-data 消息体格式

请求参数:

NAME REQUIRED TYPE DESCRIPTION
file true File 固件文件的内容
type true String 总是为 firmware
id true ObjectId 固件的 ID
description - String 固件简介

响应结果:

返回上传的固件的信息

{
    "updated": Number,      // 最后修改时间, Unix 时间戳, 单位为秒
    "etag": String,         // 固件文件 etag 值, 一般取固件的 md5 hash 值
    "size": Number,         // 固件文件大小, 单位为字节
    "mimetype": String,
    "url": String,
    "name": String,
    "description": String
}

修改固件信息

POST /firmware/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id yes String 产品 ID
name - String 固件名称
version - String 固件版本号
url - String 固件文件下载路径
md5sum - String 固件文件 MD5 Hash 值
size - Number 固件大小
description - String 固件简介

响应结果:

返回修改后的固件的信息

{
    "id": String,
    "version": String,
    "created": Date,
    "updated": Date, 
    "md5sum": String, 
    "size": Number, 
    "url": String,
    "name": String,
    "description": String
}

查询固件列表

GET /firmware/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
q.name String - 模糊搜索名称
productId ObjectId - 产品 ID

响应结果:

返回包含固件信息的列表

{
    "total": Number,
    "firmwares": [{
        "id": String,
        "version": String,      // 固件版本号
        "created": Number,
        "updated": Number,      // 最后修改时间, Unix 时间戳, 单位为秒
        "md5sum": String,         // 固件文件 etag 值, 一般取固件的 md5 hash 值
        "size": Number,         // 固件文件大小, 单位为字节
        "url": String,
        "name": String,
        "description": String
    }]
}

查询指定固件信息

GET /firmware/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true String 固件 ID

响应结果:

返回指定的固件的信息

{
    "id": String,
    "version": String,
    "created": Date,
    "updated": Date, 
    "md5sum": String, 
    "size": Number, 
    "url": String,
    "name": String,
    "description": String
}

查询指定设备固件信息

GET /firmware/

请求参数:

NAME REQUIRED TYPE DESCRIPTION
did true String 设备 ID

响应结果:

返回指定的设备最新的固件的信息

{
    "id": String,
    "version": String,
    "created": Date,
    "updated": Date, 
    "md5sum": String, 
    "size": Number, 
    "url": String,
    "name": String,
    "description": String
}

下载固件文件

GET /firmware/file

请求参数:

NAME REQUIRED TYPE DESCRIPTION
did true String 设备 ID

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true String 固件 ID

响应结果:

返回指定的设备最新的固件的文件的内容

<bin data>

删除固件

POST /firmware/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 固件 ID

响应结果:

返回删除的固件的信息

{
    "id": String,
    "version": String,
    "created": Date,
    "updated": Date, 
    "md5sum": String, 
    "size": Number, 
    "url": String,
    "name": String,
    "description": String
}

更新固件

固件验证

上传固件后, 可以选择单个设备下载并升级固件, 验证上传的固件能成功升级, 并能正常运行.

批量升级

验证通过后, 在产品管理中发起批量升级操作命令, 让产品的所有设备都自动升级到最新固件.

可以在设备管理界面查看固件升级状态.

重新升级

对于已升级过的, 或升级失败的设备, 可以发起重新升级命令.

设备

设备属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 设备 ID
created yes Date - 创建时间
config - Object - 配置参数
description - String 200 描述
ownerId - ObjectId - 这个设备所属的公司账号 ID
floor - Object - 楼层
floorId - ObjectId - 楼层 ID
room - Object - 房间
roomId - ObjectId - 房间 ID
did - String 32 设备 ID
name yes String 32 设备名
position - Object - 设备在楼层的具体位置
properties - Object - 设备属性
forms - Object - 设备访问参数
product - Object - 产品
productId - ObjectId - 产品 ID
shadow - Object - 设备影子信息
shadowId - ObjectId - 设备影子 ID
secret - String 32 设备密钥
updated yes Date - 最后修改时间

属性详细描述

did 设备 ID

每一个设备都有一个唯一用户分配的 ID,也称为 DID

主设备 ID

当一个设备属性一个主设备的一部分时,可以指定主设备 ID,方便在界面上关联显示等

网关设备 ID

指这个设备相关的网关设备的 ID

secret 设备密钥

用于验证设备注册消息 的密钥

设备影子 ID

当设备注册以及和平台通信后,平台会自动为其创建设备的影子,用来记录设备的最后状态等信息

公司账号 ID

当用户添加新的设备时,将自动关联到用户所属的公司

设备访问参数

设备属性

创建一个新的设备

POST /device/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
name true String 设备名
did true String 设备 ID
description - String 描述
secret - String 密钥
x - Number 位置 (设备在楼层的 x 坐标)
y - Number 位置 (设备在楼层的 y 坐标)
floorId - ObjectId 楼层 ID
productId true ObjectId 产品 ID

响应结果:

返回添加的设备的信息

{
    "id": String,
    "mac": String,
    "did": String,
    "name": String,
    "secret": String,
    "description": String,
    "x": Number,
    "y": Number,
    "productId": String,
    "floorId": String,
}

获取指定设备信息

GET /device/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 设备 ID

响应结果:

返回指定的设备的详细信息

{
    "id": String,
    "name": String,
    "mac": String,
    "description": String,
    "x": Number,
    "y": Number,
    "floor": {
        "id": String,
        "name": String,
        "building": {
            "id": String,
            "name": String
        }
    },
    "location": String,
    "product": {
        "id": String,
        "name": String
    },
    "status": {
        "online": Boolean,
        "lastSeenOn": Date
    },
    "shadow": {

    }
}

修改设备属性

POST /device/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 设备 ID
master - String 主设备 ID
name - String 设备名
description - String 描述
x - Number 位置 (x坐标)
y - Number 位置 (y坐标)
properties - Object 设备属性
forms - Object 设备访问参数
floorId - ObjectId 楼层 ID
productId - ObjectId 产品 ID

响应结果:

返回修改后的设备的信息

{
    "id": String,
    "mac": String,
    "name": String,
    "description": String,
    "x": Number,
    "y": Number,
    "productId": String,
    "floorId": String,
}

删除一个设备

POST /device/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 设备 ID

响应结果:

返回删除的设备的信息

{
    "id": String,
    "name": String,
    "mac": String,
    "description": String,
    "x": Number,
    "y": Number,
    "productId": String,
    "floorId": String,
}

查询设备列表

GET /device/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
floorId ObjectId - 楼层 ID
productId ObjectId - 产品 ID
did String|Array - 设备 ID
expand String - 是否展开

示例:

GET /device/list?floorId=12345678&did=4567890&q=name~=test

响应结果:

返回包含设备信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "devices": [{
        "id": String,
        "mac": String,
        "name": String,
        "description": String,
        "location": String,
        "x": Number,
        "y": Number,
        "product": {
            "id": String,
            "key": String,
            "name": String
        },
        "floor": {
            "id": String,
            "name": String,
            "building": {
                "id": String,
                "name": String
            }
        },
        "status": {
            "online": Boolean,
            "lastSeenOn": Date
        }
    }]
}

设备统计

统计所有设备

请求参数:

NAME TYPE DEFAULT DESCRIPTION
ownerId String - 要统计的企业账号 ID, @all 表示统计所有子账号

响应结果

返回设备模块统计信息

{
    "online": Number,  // 总共在线的设备
    "total": Number,   // 总共设备数
    "fault": Number,   // 故障设备数
    "products": [
        {
            "id": String,     // 产品 ID
            "name": String,   // 产品名
            "online": Number, // 在线设备数
            "total": Number   // 总共设备数         
        }
    ]
}

实时状态

GET /device/stat

请求参数:

NAME TYPE DEFAULT DESCRIPTION
type String - 要统计的设备类型
ownerId String - 要统计的企业账号 ID, @all 表示统计所有子账号

响应结果

返回设备模块统计信息

{
    "online": Number,  // 在线的设备
    "total": Number,   // 总共设备数
    "fault": Number,   // 故障设备数
    "charging": Number // 状态为 charging 的设备数量
}

活跃设备数

GET /device/stat

请求参数:

NAME TYPE DEFAULT DESCRIPTION
productId String - 产品 ID
duration String 7d 统计时间段

响应结果

返回活跃设备统计信息

{
    "data": [{
        "start": Number,
        "end": Number,
        "online": Number,    // 活跃的设备数
        "total": Number    // 总共设备数
    }]
}

设备影子

事物是物理设备在平台的影子,也称设备影子。事物除了包含设备的信息外,还包含设备实时属性,在线状态等等信息

事物属性

NAME TYPE DESCRIPTION
id String 设备影子 ID
alert Object 事物相关的报警状态
actions Object 事物相关的 Action 的状态
building Object 事物相关的建筑物信息
config Object 事物相关的配置信息
device Object 事物相关的设备
did String 设备 ID
events Object 事物相关的事件的状态
fault Object 事物相关的故障信息
floor Object 事物相关的楼层信息
gateway String 绑定的网关的设备 ID
key String 产品编码
manifest Object 事物能力描述
metadata Object 事物相关的元数据
product Object 事物相关的产品
properties Object 事物相关的属性的状态
register Object 事物相关的注册信息
room Object 事物相关的房间区域信息
status Object 事物当前状态 (系统属性)
telemetry Object 事物相关的遥测信息
type String 产品类型

报警信息 - alert

shadow.alert

故障信息 - fault

shadow.fault

设备出现一般故障时只发出警告,如果出现严重故障表示无法继续运行,需要工作人员处理后才能继续运行

遥测信息 - telemetry

shadow.telemetry

telemetry 可包含如下通用遥测信息:

NAME TYPE DESCRIPTION
device Object 设备信息
location Object 位置信息
firmware Object 固件信息
connectivity Object 连接信息
config Object 配置信息

事物描述 - manifest

shadow.manifest

JSON 格式的事物能力描述文档,具体请参考事物描述一文

操作状态 - actions

shadow.actions

属性状态 - properties

shadow.properties

设备上报的属性的最新状态

元数据 - metadata

shadow.metadata

保存了事物属性的最后更新时间等元数据

服务端状态 - status

shadow.status

设备的状态由云服务器维护和提供, 如云服务器会根据设备的长连接状态和心跳状态来提供设备是否在线的状态.

NAME SORTABLE TYPE MAX DESCRIPTION
lastSeenOn yes Date - 最后在线时间
connected yes Boolean - 是否在线
authenticated yes Boolean - 是否通过认证

查询事物列表

GET /thing/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
floorId ObjectId - 楼层 ID
productId ObjectId - 产品 ID
key String - 产品编号
type String - 设备类型
dids String|Array - 设备 ID

select 额外要返回的属性:

返回结果:

返回包含事物信息的列表

{
    "total": Number,
    "streams": {
        "<name>": {
            ...
        }
    },
    "things": [{
        "id": String,
        "created": Date,
        "did": String,
        "key": String,
        "type": String,
        "product": {
            "id": String,
            "name": String
        },
        "device": {
            "id": String,
            "name": String
        },
        "room": {
            "id": String,
            "name": String
        },
        "floor": {
            "id": String,
            "name": String
        },
        "building": {
            "id": String,
            "name": String
        },
        "properties": {
            "<name>": <value>
        },
        "actions": {},
        "events": {},
        "status": {
            "lastSeenOn": Number
        },
        "updated": Date
    }]
}

查询单个事物

GET /thing/get

请求参数 (通过 ID 查询):

NAME REQUIRED TYPE DESCRIPTION
id Yes ObjectId 设备的 ID

请求参数 (通过 DID 查询):

NAME REQUIRED TYPE DESCRIPTION
did Yes String 设备的 DID

应答消息:

返回指定的事物的详情信息

{
    "id": String,
    "did": String,
    "key": String,
    "type": String,
    "product": {},
    "device": {},
    "room": {},
    "config": {},
    "register": {},
    "floor": {},
    "building": {},
    "properties": {},
    "metadata": {},
    "actions": {},
    "events": {},
    "status": {}
}

装备(设备分组)

装备属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 装备 ID
alert - Object - 报警状态
buildingId yes ObjectId - 所在的建筑 ID
code yes Object 32 装备编码
created yes Date - 创建时间
description - String 100 装备简介
fault - Object - 故障状态
floorId yes ObjectId - 所在的楼层 ID
image yes String 32 装备图片地址
metadata - Object - 装备元数据
name yes String 32 装备名称
ownerId yes ObjectId - 装备所属的公司账号
parts - Array - 装备部件列表
scope - Object - 装备坐标范围
state - String 32 装备状态
type yes String 32 装备类型
updated yes Date - 最后更新时间

常见装备状态

报警状态

和这个装备相关的报警

故障状态

故障状态,具体的故障代码含义取决于装备的类型

创建一个新的装备

POST /equipment/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
code - Object 装备编码
description - String 装备描述
floorId true ObjectId 装备所在楼层 ID
image - String 装备图片
metadata - Object 装备元数据
name true String 装备名称
parts - Array 装备部件 ID 列表
scope - Object 装备坐标范围
type - String 装备类型

响应结果:

返回创建的装备的信息

{
    "code": String,
    "created": Date,
    "description": String,
    "floorId": String,
    "id": String,
    "image": String,
    "metadata": Object,
    "name": String,
    "ownerId": String,
    "parts": Array,
    "scope": Object,
    "type": String,
    "updated": Date
}

获取指定的装备信息

GET /equipment/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 装备 ID

响应结果:

返回指定的装备的信息

{
    "code": String,
    "created": Date,
    "description": String,
    "floorId": String,
    "id": String,
    "image": String,
    "metadata": Object,
    "name": String,
    "ownerId": String,
    "parts": Array,
    "scope": Object,
    "type": String,
    "updated": Date
}

修改装备属性

POST /equipment/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 装备 ID
code - Object 装备编码
description - String 装备描述
floorId true ObjectId 装备所在楼层 ID
image - String 装备图片
metadata - Object 装备元数据
name true String 装备名称
parts - Array 装备部件 ID 列表
scope - Object 装备坐标范围
type - String 装备类型

响应结果:

返回修改后的装备的信息

{
    "code": String,
    "created": Date,
    "description": String,
    "floorId": String,
    "id": String,
    "image": String,
    "metadata": Object,
    "name": String,
    "ownerId": String,
    "parts": Array,
    "scope": Object,
    "type": String,
    "updated": Date
}

删除一个装备

POST /equipment/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 装备 ID

响应结果:

返回删除的装备的信息

{
    "code": String,
    "created": Date,
    "description": String,
    "floorId": String,
    "id": String,
    "image": String,
    "metadata": Object,
    "name": String,
    "ownerId": String,
    "parts": Array,
    "scope": Object,
    "type": String,
    "updated": Date
}

查询装备列表

GET /equipment/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
floorId String - 设备 ID
expand String - 是否展开查询结果,可选: all(展开相关的部件)

响应结果:

返回包含装备信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "equipments": [{
        "code": String,
        "created": Date,
        "description": String,
        "floorId": String,
        "id": String,
        "image": String,
        "metadata": Object,
        "name": String,
        "ownerId": String,
        "parts": Array,
        "scope": Object,
        "type": String,
        "updated": Date
    }]
}

返回包含装备以及展开查询信息的列表(expand=all)

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "equipments": [{
        "code": String,
        "created": Date,
        "description": String,
        "floorId": String,
        "id": String,
        "image": String,
        "metadata": Object,
        "name": String,
        "ownerId": String,
        "parts": Array,
        "scope": Object,
        "type": String,
        "updated": Date,
        "things": Array,
        "streams": Object
    }]
}

操作

操作属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 操作 ID
created - Date - 创建时间
input - Object - 操作输入数据
output - Object - 操作输出数据
name - String 32 操作名称
title - String 32 操作标题
did - String 32 操作设备 DID
updated - Date - 最后更新时间
user - Object - 操作用户
metadata - Object - 元数据
companyId - ObjectId - 事件所属的公司账号
deviceId - ObjectId - 相关的设备 ID

创建一个新的操作

POST /action/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
name true String 操作名称
did true String 操作设备 DID
input - Object 操作输入参数

响应结果:

返回创建的操作的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

获取指定的操作信息

GET /action/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 操作 ID

响应结果:

返回指定的操作的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

修改操作属性

POST /action/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 警报 ID

响应结果:

返回修改后的操作的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

删除一个操作

POST /action/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 操作 ID

响应结果:

返回删除的操作的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

查询操作列表

GET /event/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
did String - 设备 DID
name String - 操作名称

响应结果:

返回包含操作信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "events": [{
        "created": Date,
        "data": Object,
        "deviceId": String,
        "id": String,
        "name": String,
        "title": String,
        "updated": Date
    }]
}

发送一个操作

POST /action/send

请求参数:

注意: 请求内容格式必须为 application/json

NAME REQUIRED TYPE DESCRIPTION
name true String 操作名称
did true String 操作设备 DID
timeout - Number 等待超时时间,单位为毫秒
type true String 总是为 'action'
input - Object 操作输入参数
{
    "did": String,
    "timeout": Number,
    "type": "action",
    "data": {
        "<name>": <input>
    }
}

注意:当未提供 timeout 参数或者为 0 时,平台会立即返回应答。否则平台需要等到设备回应或超时后才返回应答消息

响应结果:

返回创建的操作的信息

{
    "did": String,
    "type": "action",
    "result": {
        ...
    }
}

事件

事件属性列表

NAME SORTABLE TYPE MAX DESCRIPTION
id yes ObjectId - 事件 ID
created - Date - 创建时间
data - Object - 事件数据内容
name - String 32 事件名称
title - String 32 事件标题
updated - Date - 最后更新时间
ownerId - ObjectId - 事件所属的公司账号
deviceId - ObjectId - 相关的设备 ID

创建一个新的事件

POST /event/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
data - Object 事件数据
name true String 事件名称
deviceId true ObjectId 事件来源设备 ID
title - String 事件标题

响应结果:

返回创建的事件的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

获取指定的事件信息

GET /event/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 事件 ID

响应结果:

返回指定的事件的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

修改事件属性

POST /event/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 警报 ID
data - Object 事件数据
name true String 事件名称
source true Object 事件来源
title - String 事件标题

响应结果:

返回修改后的事件的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

删除一个事件

POST /event/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 事件 ID

响应结果:

返回删除的事件的信息

{
    "created": Date,
    "data": Object,
    "deviceId": String,
    "id": String,
    "name": String,
    "title": String,
    "updated": Date
}

查询事件列表

GET /event/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
select String - 选择要返回的字段,多个字段用空格或 +分隔
q String - 搜索条件字符串
deviceId String - 设备 ID

响应结果:

返回包含事件信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "events": [{
        "created": Date,
        "data": Object,
        "deviceId": String,
        "id": String,
        "name": String,
        "title": String,
        "updated": Date
    }]
}

设备统计

统计模板

GET /servlet/list

能耗统计

GET /servlet/stat?name=energy-xxx

节能报表

GET /servlet/stat?name=energy-report

同比分析

GET /servlet/stat?name=energy-yoy

环比分析

GET /servlet/stat?name=energy-chain

能耗历史

GET /servlet/stat?name=energy-history

节能对比

GET /servlet/stat?name=energy-saving

时间段分析

GET /servlet/stat?name=energy-period

充电管理

GET /servlet/stat?name=charging-xxx

充电记录

GET /servlet/stat?name=charging-record

请求参数

NAME TYPE DEFAULT DESCRIPTION
name String charging-record 统计模板名
plateNumber String - 车牌号码,如粤BD12345
stationNumber String - 充电站编号,如123094
startTime Number - 车辆入场时间, 1970年以来经过的毫秒数

响应结果:

{
    "name": "charging-record",
    "data": {
        "plateNumber": String, // 车牌号码
        "plateType": Number, // 车牌类型
        "stationNumber": String, // 充电站编号
        "pileNumber": String, // 可选,充电桩编号
        "isNewEnergyVehicle", Boolean, // 是否是新能源车
        "startTime": Number, // 最近一次充电开始时间,1970年以来经过的毫秒数
        "chargingTime": Number, // 最近一次充电总共充电时间(从开始充电到充满),单位为毫秒
        "dwellTime": Number, // 最近一次充电总共停留时间(从进入车位到离开车位),单位为毫秒
        "startSoC": Number, // 最近一次充电开始充电时的电量
        "endSoC": Number // 最近一次充电结束充电时的电量
    }
}

系统属性

系统各模块统计信息

GET /system/stat

响应结果:

返回设备管理系统各模块统计信息

{
    "product": {
        "total": Number
    },
    "device": {
        "total": Number,
        "online": Number // 在线的设备数
    },
    "building": {
        "total": Number
    },
    "floor": {
        "total": Number
    },
    "room": {
        "total": Number
    },
    "shadow": {
        "total": Number
    },
    "schemas": {
        "total": Number
    }
}

系统状态

GET /system/status

返回结果:

返回服务器软件版本等信息

{
    "name": String,
    "description": String,
    "version": String
}

权限列表

表示系统支持并可以分配的权限列表:

注意如果没有 device 系统权限时不可以查看 device 服务下的所有信息.

NAME DESCRIPTION NOTE
device 设备管理的基本权限 -
device.action 设备操作权限
device.equipment 装备操作权限
device.stream 数据查询权限
device.product 产品操作权限 没有权限时仅且可以查看所有产品
device.device 设备操作权限 没有权限时仅且可以查看所有设备
device.beacon 信标操作权限 没有权限时仅且可以查看所有信标

权限分配表

API PERMISSION NOTE
/stat - -
/product/add device.product -
/product/del device.product -
/product/list - -
/product/get - -
/product/update device.product -
/product/config device.product -
/product/properties device.product -
/device/add device.device -
/device/del device.device -
/device/list - -
/device/get - -
/device/find - -
/device/stat - -
/device/update device.device -
/system/status * -