# ABSDK 接口文档

## ABRet 返回值说明

| 字段 | 说明 | 备注 |
|------|------|------|
| **code** | 00000成功<br>Xxxxx失败 | 错误码：<br>00000 成功<br>0xxxx  系统级错误<br>1xxxx  权限级<br>2xxxx  操作级 |
| **msg** | 错误信息 | code为00000以外时，该字段有效<br>该字段只提供概要的错误信息。具体错误原因可参考下面提到的code含义表 |
| **key=> value** | 附带信息, 如 seq => 123111 | code为00000时，该字段有效 |

---

## API 接口


### 0. 取得实例对象

**方法签名：** `ABSDK getInstance()`

**参数：** 无

**返回值：**

  ABSDK实例


### 1. 登录

**方法签名：** `ABRet loginWithUsername(String username, String password)`

**参数说明：**

- username:用户名
- password:密码

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        token     String    TOKEN(后续访问用token，有效期2小时，过期后需重新获取)


### 2. 验证token状态

**方法签名：** `ABRet isValidateToken()`

**参数：** 无

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        status    String    TOKEN状态(0：无效  1：有效)


### 3. 发送红外按键指令（请在登录后使用）

**方法签名：** `ABRet sendIr(String irDevName, String irKey)`

**参数说明：**

- irDevName: 红外设备名称
- irKey:按键KEY

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 4. 控制窗帘（请在登录后使用）

**方法签名：** `ABRet curtainCtrl(String ctDevName, AB_CT_ACTION action, int percent)`

**参数说明：**

- ctDevName: 窗帘名称
- action:动作(请使用下面2个已在库中定义好的常量)
- OPEN 打开窗帘
- ADJUST 校准窗帘
- PAUSE 暂停(使窗帘停止运动)
- percent:窗帘打开百分比(0～100)
- ※该参数只需要在【打开窗帘】时使用

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 5. 主机红外下载 （请在登录后使用）

**方法签名：** `ABRet downloadIrCodes(List<IrInfo> irInfos)`

**参数说明：**

- irInfos 红外码值信息(请传入IrInfo类型的数据)

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        ret    List<IrInfo>    导入结果(可通过IrInfo中的status判断每个红外码的下载成功或失败)


---

## IrInfo 说明

| 字段 | 说明 | 备注 |
|------|------|------|
| **irDevName** | 设备区分 | 红外设备名称 |
| **key** | 红外KEY |  |
| **code** | 红外码值 |  |
| **status** | 红外下载结果 | 0：失败<br>1：成功 |


### 6. 控制插座（请在登录后使用）

**方法签名：** `ABRet sockCtrl(String soDevName, String status)`

**参数说明：**

- soDevName: 插座名称
- status:插座状态(0：关闭 1：打开)

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 7. 控制开关（请在登录后使用）

**方法签名：** `ABRet switchCtrl(String switchDevName, String status, String no)`

**参数说明：**

- switchDevName: 开关名称
- status:开关状态(0：关闭 1：打开)
- no:开关键序号(
- 1开开关：空
- 2开开关：no值和开关键对应如下
- 1：对应2开开关上最下侧按键
- 3：对应2开开关上最上侧按键
- 3开开关：no值和开关键对应如下
- 1：对应3开开关上最下侧按键
- 2：对应3开开关上中间按键
- 3：对应3开开关上最上侧按键
- )

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 8. 控制射灯开关（请在登录后使用）

**方法签名：** `ABRet lightStatusCtrl(String lightDevName, String status)`

**参数说明：**

- lightDevName: 射灯名称
- status:灯的状态 0：关灯 1：开灯

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 9. 控制射灯的色调饱和度（请在登录后使用）

**方法签名：** `ABRet lightHSCtrl(String lightDevName, String h, String s)`

**参数说明：**

- lightDevName: 射灯名称
- h:色调值 0～254
- s:饱和度 0～254

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 10. 控制射灯的亮度（请在登录后使用）

**方法签名：** `ABRet lightVCtrl(String lightDevName, String v)`

**参数说明：**

- lightDevName: 射灯名称
- v:亮度 0～254

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 11. 取得开关状态（请在登录后使用）

**方法签名：** `ABRet getSwitchStatus(String switchDevName)`

**参数说明：**

- switchDevName: 开关名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        btns    String          开关数(1:1开开关 2:2开开关 3:3开开关)
                        status  List<String>    开关状态数组(0:关闭 1:开启)


### 12. 取得插座状态（请在登录后使用）

**方法签名：** `ABRet getSockStatus(String soDevName)`

**参数说明：**

- soDevName: 插座名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        status    String          插座状态(0:关闭 1:开启)


### 13. 取得门磁状态（请在登录后使用）

**方法签名：** `ABRet getDoorStatus(String doorDevName)`

**参数说明：**

- doorDevName: 门磁名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        status    String          门磁状态(0:关闭 1:开启)


### 14. 取得温湿度情报（请在登录后使用）

**方法签名：** `ABRet getThStatusByDevName(String thDevName)`

**参数说明：**

- thDevName: 温湿度名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        temperature    String          温度
                        humidity       String          湿度


### 15. 取得人体活动传感器情报（请在登录后使用）

**方法签名：** `ABRet getHdStatus(String hdDevName)`

**参数说明：**

- hdDevName: 人体活动传感器名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        status               String          人体活动状态(0:无活动 1:有活动)
                        lightIntensity       String          光感强度(1:亮 2:正常 3:昏暗 4:黑)


### 16. 取得一氧化碳传感器情报（请在登录后使用）

**方法签名：** `ABRet getCoStatus(String coDevName)`

**参数说明：**

- coDevName: 一氧化碳传感器名称

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息
  dicdatas      Map     返回数据
                        concentration               String          一氧化碳浓度


### 17. 控制一氧化碳蜂鸣（请在登录后使用）

**方法签名：** `ABRet coCtrlBySoDevName(String coDevName, String interval)`

**参数说明：**

- coDevName: 一氧化碳名称
- interval:蜂鸣时间(单位:秒)

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


### 18. 红外学习

**方法签名：** `ABRet studyIrByIrDevName(String irDevName, String irKey)`

**参数说明：**

- irDevName: 红外设备名称
- irKey:按键KEY

**返回值：**

  ABRet:
  code          String  处理结果(00000成功，00000以外失败)
  msg           String  错误信息


---

## 返回值 CODE 含义

| CODE | 含义 |
|------|------|
| 00000 | 处理成功 |
| 00001 | 数据库操作失败 |
| 10001 | TOKEN不存在或长度不足 |
| 10002 | TOKEN已失效 |
| 10003 | TOKEN中的SN号不正 |
| 10004 | 签名不存在 |
| 10005 | 时间戳不存在 |
| 10006 | 签名不正确 |
| 20000 | 请求超时 |
| 20001 | 用户名或密码不存在 |
| 20002 | 用户不存在或已暂停使用 |
| 20003 | 登录失败次数过多 |
| 20004 | 用户名或密码不正确 |
| 20005 | 本地用户权限不足 |
| 20101 | 服务器端URL或酒店名或房间号或APIKEY不存在 |
| 20201 | 红外KEY不存在 |
| 20202 | 红外码值不存在 |
| 20203 | 红外设备不存在 |
| 20204 | 红外码库导入失败 |
| 20205 | 红外发射失败 |
| 20206 | 红外设备已离线 |
| 20301 | 参数不正_CMD0不存在 |
| 20302 | 参数不正_CMD1不存在 |
| 20303 | 参数不正_PAYLOAD不存在 |
| 20304 | 窗帘设备不存在 |
| 20305 | 窗帘设备控制失败 |
| 20306 | 窗帘设备已离线 |
| 20501 | 参数不正_插座状态不存在 |
| 20502 | 插座设备不存在 |
| 20503 | 插座设备控制失败 |
| 20504 | 插座设备已离线 |
| 20601 | 参数不正_开关状态不存在 |
| 20602 | 参数不正_开关类型不存在(标识几开开关) |
| 20603 | 开关设备不存在 |
| 20604 | 开关设备控制失败 |
| 20605 | 开关设备已掉线 |
| 20701 | 参数不正_射灯操作类型不存在 |
| 20702 | 参数不正_射灯操作类型不正确 |
| 20703 | 参数不正_射灯开关状态不存在 |
| 20704 | 参数不正_射灯色调饱和度不存在 |
| 20705 | 参数不正_射灯亮度不存在 |
| 20706 | 射灯设备不存在 |
| 20707 | 射灯设备控制失败 |
| 20801 | 参数不正_设备名称不存在 |
| 20802 | 端末设备不存在 |
| 20803 | 端末状态属性不存在 |
| 20804 | 参数不正_报警时长不正确 |
| 20805 | 端末设备已离线 |
| 20806 | 设备控制失败 |