commit 48f26e8ef8c6483a92eeef77876147243de371fc
Author: KremeCN <3265494849@qq.com>
Date: Sat Aug 22 12:02:45 2026 +0800
chore: initial commit
diff --git a/docs/ABSDK接口部分_0630.md b/docs/ABSDK接口部分_0630.md
new file mode 100644
index 0000000..7834ce6
--- /dev/null
+++ b/docs/ABSDK接口部分_0630.md
@@ -0,0 +1,408 @@
+# ABSDK 接口文档
+
+## ABRet 返回值说明
+
+| 字段 | 说明 | 备注 |
+|------|------|------|
+| **code** | 00000成功
Xxxxx失败 | 错误码:
00000 成功
0xxxx 系统级错误
1xxxx 权限级
2xxxx 操作级 |
+| **msg** | 错误信息 | code为00000以外时,该字段有效
该字段只提供概要的错误信息。具体错误原因可参考下面提到的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 irInfos)`
+
+**参数说明:**
+
+- irInfos 红外码值信息(请传入IrInfo类型的数据)
+
+**返回值:**
+
+ ABRet:
+ code String 处理结果(00000成功,00000以外失败)
+ msg String 错误信息
+ dicdatas Map 返回数据
+ ret List 导入结果(可通过IrInfo中的status判断每个红外码的下载成功或失败)
+
+
+---
+
+## IrInfo 说明
+
+| 字段 | 说明 | 备注 |
+|------|------|------|
+| **irDevName** | 设备区分 | 红外设备名称 |
+| **key** | 红外KEY | |
+| **code** | 红外码值 | |
+| **status** | 红外下载结果 | 0:失败
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 开关状态数组(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 | 设备控制失败 |
\ No newline at end of file
diff --git a/docs/ABSDK接口部分_0630.xls b/docs/ABSDK接口部分_0630.xls
new file mode 100644
index 0000000..b82a9f7
Binary files /dev/null and b/docs/ABSDK接口部分_0630.xls differ
diff --git a/docs/requirement_spec.md b/docs/requirement_spec.md
new file mode 100644
index 0000000..cad3b73
--- /dev/null
+++ b/docs/requirement_spec.md
@@ -0,0 +1,15 @@
+## 需求规格
+
+**登录**
+1. 记住已登录用户信息功能:记住我
+2. 自动登录:选中自动登录之后
+
+**设备列表**
+1. 设备列表:显示设备名称(插座、温湿度、红外)
+2. 点击设备:跳转到相应的设备控制页面
+3. 插座页面:可以获取插座状态 (图片)
+4. 温湿度控制器页面:分别显示温度及湿度(图片)
+5. 红外传感器:创建遥控器的功能,持久化红外学习按钮
+
+**情景模式**
+* 基于多种设备完成一种或多种生活场景
\ No newline at end of file