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 – 设备离线(设备不存在)