文件预览

SKILL.md

查看 jf-open-pro-device-list 技能包中的文件内容。

文件内容

SKILL.md

---
name: jf-open-pro-device-list
description: 杰峰设备列表查询技能(开发版)。查询开发者账号下绑定的设备列表,支持分页查询和按设备序列号条件查询。
metadata:
  version: 1.0.0
  author: JFTech
  category: device
  tags:
    - 杰峰
    - 设备列表
    - 设备查询
    - 分页查询
    - 设备管理
  triggers:
    - 查询设备列表
    - 设备列表
    - 我的设备
    - 绑定设备
    - 设备分页
  prerequisites:
    - 配置必需的环境变量
  region:
    - CN: api-cn.jftechws.com (中国大陆)
    - AS: api-as.jftechws.com (亚洲)
    - EU: api-eu.jftechws.com (欧洲)
    - NA: api-na.jftechws.com (北美洲)
---

# jf-open-pro-device-list - 杰峰设备列表查询技能(开发版)

## 技能描述

支持查询开发者账号下绑定的设备信息列表:

- **分页查询** - 获取账号下所有绑定的设备
- **条件查询** - 按设备序列号列表查询(最多 100 个)
- **设备信息** - 返回设备序列号、用户名、昵称、Token 等

## 触发词

- 查询设备列表 / 设备列表 / 我的设备
- 绑定设备 / 设备分页 / 查询绑定设备

## 前置条件

### 必需配置

1. **签名算法** - 使用杰峰官方移位加密算法生成 signature
2. **时间戳算法** - counter(7 位) + timeMillis(13 位),实时生成
3. **开放平台账号** - 需要有绑定的设备

### 环境变量

| 变量名 | 说明 | 默认值 | 必需 |
|--------|------|--------|------|
| `JF_UUID` | 开放平台用户 uuid | - | ✅ |
| `JF_APP_KEY` | 开放平台应用 appKey | - | ✅ |
| `JF_APP_SECRET` | 开放平台应用密钥 | - | ✅ |
| `JF_MOVE_CARD` | 移动卡标识(用于签名) | `2` | ✅ |
| `JF_ENDPOINT` | API 接入地址 | `api-cn.jftechws.com` | ❌ |

## API 接口

| 功能 | 地址 | 方法 |
|------|------|------|
| 查询设备列表 | `POST /gwp/v3/rtc/device/list` | POST |

## 核心功能

### 设备列表查询(Device List)

**API:** `POST /gwp/v3/rtc/device/list`

**请求参数:**
| 参数 | 类型 | 必需 | 默认值 | 说明 |
|------|------|------|--------|------|
| page | int | ❌ | `1` | 页码(分页查询) |
| limit | int | ❌ | `100` | 每页数量(最大 100) |
| sns | string[] | ❌ | - | 设备序列号列表(最多 100 个) |

**响应参数:**
| 字段 | 类型 | 说明 |
|------|------|------|
| code | int | 平台状态码(2000=成功) |
| msg | string | 响应消息 |
| data | object | 响应数据 |
| └─ deviceList | object[] | 设备列表 |
|     ├─ sn | string | 设备序列号 |
|     ├─ username | string | 设备登录用户名 |
|     ├─ password | string | 设备登录密码 |
|     ├─ nickname | string | 设备昵称 |
|     └─ loginToken | string | 设备登录 Token |

## 查询场景

### 场景 1:分页查询

获取开发者账号下的所有绑定设备信息列表。

**请求示例:**
```json
{
  "page": 1,
  "limit": 100
}
```

### 场景 2:条件查询(按设备序列号列表)

指定设备序列号查询设备信息列表(最多 100 个)。

**请求示例:**
```json
{
  "sns": ["5e26d516f54f500dxxxx", "115477b8705dxxxx"]
}
```

## 使用示例

### 环境准备

```bash
# 设置环境变量(使用占位符,请替换为实际值)
export JF_UUID="uuidxxxx"
export JF_APP_KEY="appkeyxxxx"
export JF_APP_SECRET="appsecretxxxx"
export JF_MOVE_CARD="2"
export JF_ENDPOINT="api-cn.jftechws.com"
```

### 1. 查询设备列表(分页)

```bash
cd ~/.openclaw/workspace/skills/developer/jf-open-pro-device-list/scripts

# 查询第 1 页,每页 100 个
python3 device_list.py --action list

# 查询第 2 页
python3 device_list.py --action list --page 2

# 每页 50 个
python3 device_list.py --action list --limit 50
```

### 2. 按设备序列号查询

```bash
# 查询指定设备
python3 device_list.py --action query-by-sns \
  --sns "devicesnxxxx"

# 查询多个设备(最多 100 个)
python3 device_list.py --action query-by-sns \
  --sns "devicesnxxxx,devicesnyyyy"
```

### 3. 从文件读取设备序列号

```bash
# 从文件读取设备序列号列表
python3 device_list.py --action query-by-sns \
  --sns-file "devices.txt"
```

### 4. 格式化输出

```bash
# 表格格式输出(推荐)
python3 device_list.py --action list --format table

# JSON 格式输出
python3 device_list.py --action list --format json
```

## 设备序列号文件格式

```
# devices.txt - 设备序列号列表文件
# 格式:每行一个设备序列号
devicesnxxxx
devicesnyyyy
devicesnzzzz
```

## 状态码

### 平台状态码

| code | 说明 | 处理建议 |
|------|------|----------|
| 2000 | 成功 | - |
| 28007 | Header 参数错误 | 检查 uuid、appKey、timeMillis、signature |
| 40103 | 无效 Token | 检查 uuid 和 appKey |
| 50000 | 服务器内部错误 | 联系杰峰技术支持 |

## 注意事项

1. **分页限制** - 每页最大 100 个设备
2. **条件查询** - 最多查询 100 个设备序列号
3. **设备信息** - 部分设备可能没有 nickname 或 loginToken
4. **密码安全** - 设备密码可能为空或加密显示

## 相关文件

| 文件 | 说明 |
|------|------|
| `SKILL.md` | 技能文档 |
| `scripts/device_list.py` | Python 执行脚本 |
| `scripts/crypto.py` | 签名/时间戳加密工具(复用) |

## 参考文档

- [杰峰开放平台](https://docs.jftech.com)