DNASDK Command 参数详解
设备控制Command详解
Command 参数概览
名称 | 描述 |
---|---|
标准控制 | dev_ctrl |
数据透传 | dev_passthrough |
修改设备信息 | dev_info |
查询设备远程在线状态 | dev_online |
查询固件版本 | fw_version |
固件升级 | fw_upgrade |
查询服务器时间 | serv_time |
进入扫描子设备状态 | dev_newsubdev_scan_start |
退出扫描子设备状态 | dev_newsubdev_scan_stop |
获取扫描到的新子设备列表 | dev_newsubdevlists |
获取已添加的子设备列表 | dev_subdevlists |
添加子设备到管理列表 | dev_subdevadd |
将子设备从管理列表中删除 | dev_subdevdel |
获取已添加的子设备列表 | dev_subdevmodify |
设备定时接口 | dev_subdev_timer |
Fastcon设备零配任务 | fastcon_no_config |
标准控制(dev_ctrl)
参数格式
command dev_ctrl
dataStr {
"prop": "stdctrl",
"act": "set/get",
"params": [
"mark",
"temp"
],
"vals": [
[
{
"val": 1,
"idx": 1
}
],
[
{
"val": 2,
"idx": 1
}
]
]
}
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | prop | 标准控制填stdctrl | String | 是 |
act | 查询或设置状态 set:设置 get:查询 |
String | 是 | |
params | 要操作的字段,可操作字段从profile获取 | String[] | 是 | |
vals | 要设置的值。如是查询则为空 | [] | 是 | |
val | 要设置的值,可选范围从profile获取 | Int | 是 | |
idx | 如插排等可选择控制第几路,大部分设备填1即可 | int | 是 |
返回格式
{
"status": 0,
"msg": "success",
"data": {
"params": [
"mark",
"temp"
],
"vals": [
[
{
"val": 1,
"idx": 1
}
],
[
{
"val": 2,
"idx": 1
}
]
]
},
"cookie": "112233445566"
}
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
params | 返回的参数 | String[] |
vals | 返回结果 | [] |
val | 参数对应的值 | int |
idx | 第几路 | int |
cookie | 十六进制的字符串 | String |
数据透传(dev_passthrough)
参数格式
command dev_passthrough
dataStr "{
"data": "812k38cawkFASDd9kefdi+=="
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | data | 控制命令的base64字符串 | String | 是 |
"{
"status": 0,
"msg": "success",
"data": {
"resp": "812k38cawkFASDd9kefdi+=="
}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
resp | 设备返回数据的base64字符串 | String |
修改设备信息(dev_info)
参数格式
command dev_info
dataStr "{
"data": {
"name": "bedroom light",
"lock": false
}
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | data | 返回的数据 | Object | 是 |
name | 要修改的设备名称,可以两个一起改或只改一个 | String | 否 | |
lock | 要修改的锁定状态,可以两个一起改或只改一个 | bool | 否 |
返回格式
"{
"status": 0,
"msg": "success",
"data": {
"name": "bedroom light",
"lock": false
}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
name | 修改之后的名称 | String |
lock | 修改之后的锁定状态 | Bool |
查询设备远程在线状态(dev_online)
参数格式
command dev_online
dataStr {}
返回格式
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
online | “设备是否远程在线 false:不在线 true:在线” |
bool |
查询固件版本(fw_version)
参数格式
command fw_version
dataStr {}
返回格式
"{
"status": 0,
"msg": "success",
"data": {
"version": {
"hw": "23"
}
}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
version | 固件的版本信息(后期可能扩展的对象,目前只有一个hw) | Object |
hw | 模块的固件版本 | String |
固件升级(fw_upgrade)
参数格式
command fw_upgrade
dataStr "{
"hw_url": "www.upgradeurl.com/id=xxxx"
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | hw_url | 固件升级地址 | String | 是 |
返回格式
"{
"status": 0,
"msg": "success"
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
查询服务器时间(serv_time)
参数格式
command serv_time
dataStr {}
返回格式
"{
"status": 0,
"msg": "success",
"data": {
"serv_time": "+0800-20150805-102023"
}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
serv_time | zone-yyyyMMdd-hhmmss | String |
进入扫描子设备状态(dev_newsubdev_scan_start)
参数格式
command dev_newsubdev_scan_start
dataStr "{
"pid": "xxxxxx"
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | pid | 请求的 pid 为可选项,如果没有 pid,则返回所有扫描到的子设备,否则只返回 pid 匹配的子设备 | String | 否 |
返回格式
"{
"status": 0,
"msg": "success",
"data": {}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据(空) | Object |
退出扫描子设备状态(dev_newsubdev_scan_stop)
参数格式
command dev_newsubdev_scan_stop
dataStr {}
返回格式
"{
"status": 0,
"msg": "success",
"data": {}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据(空) | Object |
获取扫描到的新子设备列表(dev_newsubdevlists)
参数格式
command dev_newsubdevlist
dataStr "{
"count": 2,
"index":0
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | count | 预期查询的子设备数量,若实际数量不足,则返回实际数量,否则返回指定数量 | Int | 是 |
index | 查询子设备的起始位置,用于增量查询 | Int | 是 |
返回格式
"{
"status": 0,
"msg": "success",
"data": {
"total": 16,
"index": 0,
"list": [
{
"did" : "子设备的ID",
"pid" : "子设备的产品ID",
"name" : "子设备的名称",
"flag" : xxx
},
……
]
}
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
data | 返回数据 | Object |
total | 当前总共的子设备数量,用于增量查询 | Int |
index | 返回子设备的起始位置,用于增量查询 | Int |
list | 新子设备列表 | Object[] |
did | 子设备的ID,用于标示唯一设备 | String |
pid | 子设备的产品ID,用于标示同一类型的设备 | String |
name | 子设备的名称 | String |
flag | 用于子设备复位的情况,当子设备复位后将作为新设备被扫描出,但网关内该子设备的状态仍为已添加,此时网关会将 flag 置为 1 | int |
获取已添加的子设备列表(dev_subdevlists)
参数格式
command dev_subdevlist
同获取新子设备列表传参
返回格式
同获取新子设备列表返回结果
添加子设备到管理列表(dev_subdevadd)
参数格式
command dev_subdevadd
dataStr "{
"did": "子设备的ID",
"url": "http://xxxxxxxxxx",
"name": "子设备的名称",
"param": " xxxxxxxxxx"
}"
参数 | 字段 | 说明 | 类型 | 必填 |
---|---|---|---|---|
dataStr | did | 子设备ID,新子设备列表中返回 | String | 是 |
url | 子设备profile下载地址 | String | 是 | |
name | 子设备的名称,新子设备列表中返回 | String | 是 | |
param | 下载子设备 profile 所需的 HTTP 头部信息,HTTP头字段为 token | String | 是 |
返回格式
"{
"status": 0,
"msg": "success",
"did": "子设备的ID"
}"
字段 | 说明 | 类型 |
---|---|---|
status | 执行结果code, 详见错误码表 | int |
msg | 执行结果消息 | String |
将子设备从管理列表中删除(dev_subdevdel)
参数格式
command dev_subdevdel
dataStr "{
"did": "子设备的ID",
}"
返回格式
同添加子设备到管理列表返回结果
获取已添加的子设备列表(dev_subdevmodify)
参数格式
command dev_subdevmodify
同获取新子设备列表传参, 其中仅name/lock/type允许修改,否则会出错
返回格式
同获取新子设备列表返回结果
设备定时接口 (dev_subdev_timer)
①背景 考虑到二进制方式可扩展性太差,不易于后期新需求的导入,因此我们将原有的功能通过方式进行描述。
②参数格式
command dev_subdev_tiimer
③时间格式
格式:秒_分_时_日_月_周_年
1: 如果某列没有明确值, 则以*代替 2: 某一列有多值,则以,分开 举例如下:
编号 | 任务类型 | 表达式 | 说明 |
---|---|---|---|
1 | 定时执行一次 | 0_1_22_26_2_*_2018 |
2018年的2月26号22点01分执行 |
2 | 每周定时执行 | 0_1_22_*_*_0,1,3,5_* |
每周日,周1,周3,周5的22点01分执行 |
3 | 每天定时执行 | 0_1_22_*_*_*_* |
每天22点01分执行 |
4 | 日出前执行 | U- 0_30_0_*_*_0,1,3,5_* |
每周日,周1,周3,周5日出前半小时执行 |
5 | 日出后执行 | U+ 0_30_0_*_*_0,1,3,5_* |
每周日,周1,周3,周5日出后半小时执行 |
6 | 日落前执行 | D- 0_30_0_*_*_0,1,3,5_* |
每周日,周1,周3,周5日落前半小时执行 |
7 | 日落后执行 | D+ 0_30_0_*_*_0,1,3,5_* |
每周日,周1,周3,周5日落后半小时执行 |
④ class定义
值 | 含义 |
---|---|
sleep | 睡眠曲线 |
⑤ type定义
值 | 含义 |
---|---|
comm | 普通定时 |
delay | 延时 |
period | 周期 |
cycle | 循环 |
rand | 防盗 |
sleep | 睡眠曲线 |
all | 所有定时 |
举例:comm|period 表示普通定时或者周期定时。
说明:type也可以是某一类的名称,比如设为sleep表示获取与睡眠曲线相关的定时任务,本质上这些定时任务仍然属于普通定时、延时、周期等。如果在添加定时任务的时候没有指定class,那么默认就按type进行分类,因此如果查询的时候type设为”comm”,那么模块端实现的时候不应该把属于sleep类的comm定时返回。
⑥ | action(act)定义 |
---|---|
值 | 含义 |
0 | 添加 |
1 | 删除 |
2 | 编辑 |
3 | 获取定时列表 |
4 | 开启或者禁用定时 |
5 | 获取定时限制信息 |
6 | 配置日出日落信息 |
⑦ dataStr格式
添加(修改)定时
请求参数:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : xx,
“timerlist” : [
//普通定时(延时)、周期定时
{
“type” : “xx”, //定时类型
“class” : “xx”, //所属类,可选,如果为空则当一般定时任务处理
“id” : xx, //定时索引(由固件统一管理,添加的时候设为0或者为空)
“en” : xx, //定时使能:0 - 关闭,1 - 打开
“name” : “xx” , //定时名称
“time” : “xx”, //时间定义(参考时间格式)
“cmd” : “xx”, //执行命令base64表示(考虑到二进制透传命令)
},
//循环(防盗)定时
{
“type” : “xx”,
“class” : “xx”, //所属类,可选,如果为空则当一般定时任务处理
“id” : xx,
“en” : xx,
“name” : “xx” ,
“stime” : “xx”, //开始时间(参考时间格式)
“etime” : “xx”, //结束时间(参考时间格式)
“time1” : xx, //循环定时动作1保持时间(单位:秒)或者随机定时保持时间最小值
“time2” : xx, //循环定时动作2保持时间(单位:秒)或者随机定时保持时间最大值
“cmd1” : “xx”, //执行命令1 base64表示
“cmd2” : “xx”, //执行命令2 base64表示
},
//更多定时
{},
……
]
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“ver” : xx, //定时任务版本,由固件管理,每次操作成功自增
“status” : 0, // 非0表示失败
“idlist” : [xx, xx, ……] //定时任务ID列表,与添加的时候一一对应
//比如修改5个,但是最终idlist只返回3个并且status非0,那么说明后面两个定时修改失败
}
备注:修改定时的时候只需要添加待修改的项目,比如修改时间的请求格式如下
{
“type” : “xx”, //必须携带
“id” : xx, //必须携带且是由设备返回的定时任务索引
“time” : “xx”
}
删除定时
请求参数:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : 1,
“timerlist” : [
{
“type” : “xx”, //定时类型
“id” : xx, //定时索引
},
{},
{},
……
]
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“ver” : xx, //定时任务版本,由固件管理,每次操作成功自增
“status” : 0, // 非0表示失败
“idlist” : [xx, xx, ……] //定时任务ID列表,与删除的时候一一对应
//比如删除5个,但是最终idlist只返回3个并且status非0,那么说明后面两个定时删除失败
}
开启或者禁用某种定时
请求参数:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : 4,
“comm_en” : xx, //普通定时使能:0 - 关闭,1 - 打开
“delay_en” : xx, //延时使能: 0 - 关闭,1 - 打开
“period_en” : xx, // 周期定时使能:0 - 关闭,1 - 打开
“cycle_en” : xx, //循环定时使能: 0 - 关闭,1 - 打开
“rand_en” : xx //防盗定时使能: 0 - 关闭,1 - 打开
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“ver” : xx, //定时任务版本,由固件管理,每次操作成功自增
“status” : 0, // 非0表示失败
}
查询定时限制信息
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : 5,
“type” : “xx”, //定时类型 (可以用|运算符连接多种定时,比如period|comm)
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“status” : 0, // 非0表示失败
//根据type返回对应定时限制信息
“sun” : [set, “longitude”, “latitude”]
//是否已经配置日出日落信息(0/1)、经度值、纬度值
//如”E128” - 东经128度
//如”N90” - 北纬90度
//说明:只有在set为1的时候,后面信息才有意义
“comm_limits” : [
en, max_cnt, now_cnt //是否开启(0 /1)、最大数目和当前数目
]
“delay_limits” : [en, max_cnt, now_cnt],
“period_limits” : [en, max_cnt, now_cnt],
“cycle_limits” : [en, max_cnt, now_cnt],
“rand_limits” : [en, max_cnt, now_cnt]
}
获取定时列表
请求参数:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : 3,
“type” : “xx”, //定时类型 (可以用|运算符连接多种定时,比如period|comm)
“count”: xx, //查询数量
“index”: xx, //查询开始索引
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“ver” : xx, //定时任务版本
“status” : 0, // 非0表示失败
“total”: xx, //定时任务总数
“index”: xx, //查询开始索引
//根据type返回对应定时限制信息
“delay_limits” : [en, max_cnt, now_cnt],
“period_limits” : [en, max_cnt, now_cnt],
“cycle_limits” : [en, max_cnt, now_cnt],
“rand_limits” : [en, max_cnt, now_cnt],
“timerlist” : [ //如果status为非0则timerlist字段为空
//普通定时(延时)、周期定时
{
“type” : “xx”,
“class” : “xx”, //所属类,可选
“id” : xx, //定时索引(由固件管理)
“en” : xx, //定时使能:0 - 关闭,1 - 打开
“name” : “xx” , //定时名称
“time” : “xx”, //时间定义(参考时间格式)
“cmd” : “xx”, //执行命令base64表示(考虑到二进制透传命令)
},
//循环(防盗)定时
{
“type” : “xx”,
“class” : “xx”, //所属类,可选
“id” : xx,
“en” : xx,
“name” : “xx” ,
“stime” : “xx”, //开始时间(参考时间格式)
“etime” : “xx”, //结束时间(参考时间格式)
“time1” : xx,//循环定时动作1保持时间(单位:秒)或者随机定时保持时间最小值
“time2” : xx,//循环定时动作2保持时间(单位:秒)或者随机定时保持时间最大值
“cmd1” : “xx”, //执行命令1 base64表示
“cmd2” : “xx”, //执行命令2 base64表示
},
//更多定时
{},
……
]
}
配置日出日落信息
请求参数:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“act” : 6,
“longitude” : “xxx”, //如”E128” - 东经128度
“latitude” : “xxx”, //如”N90” - 北纬90度
“fmt” : xx //table格式 (预留:default为0)
“table” : [
mon, day, sunrise_hour, sunrise_min, sunrise_sec, sunset_hour, sunset_min, sunset_sec,
……
]
}
响应报文格式:
{
“did”:”xx”, //网关did、普通模块did或者子设备did
“status” : 0, // 非0表示失败
}
说明:Table中至少需要包含每一个月的第一天、夏至/冬至的日出日落时间,另外如果支持夏令时,则必须包含夏令时开始前一天以及结束后第一天的日出日落时间,未涉及的节点固件可以通过线性插值算法求得。
Fastcon设备零配 (fastcon_no_config)
参数格式
command fastcon_no_config
action(act)定义
值 | 含义 |
---|---|
0 | 获取待配网设备列表 |
1 | 批量配网 |
2 | 获取配网状态 |
DataStr 格式:
获取待配网设备列表
请求参数:
{
“did”:”xx”, //普通模块did
“act” : 0,
“count”: xx, //查询数量
“index”: xx, //查询开始索引
}
响应报文格式:
{
“did”:”xx”, //普通模块did
“status”: 0, //非0表示失败
“total”: xx, //设备总数
“index”: xx, //查询开始索引
“devlist” : [
{“pid”: “xx”, “did”:”xx”},
{“pid”: “xx”, “did”:”xx”},
{“pid”: “xx”, “did”:”xx”},
…
]
}
批量配网
请求参数:
{
“did”:”xx”, //普通模块did
“act” : 1,
“devlist” : [
“did0”,”did1”,”did2”, … //待配网设备的did列表
]
}
响应报文格式:
{
“did”:”xx”, //普通模块did
“status”: 0, //非0表示失败
}
说明:最多支持8个设备同时配网。
获取配网状态
请求参数:
{
“did”:”xx”, //普通模块did
“act” : 2,
“devlist”:[
“did0”,”did1”,”did2”, … //待配网设备的did列表
]
}
响应报文格式:
{
“did”:”xx”, //普通模块did
“status”: 0, //非0表示失败
“devlist”:[
{“did”:”xx”, “status”:xx},
{“did”:”xx”, ”status”:xx},
{“did”: “xx”, “status”:xx},
…
]
}
配网状态定义:
0 – 等待配网
1 – 正在配网
2 – 配网成功
3 – 配网超时
4 – 设备离线(设备不存在)