-
Notifications
You must be signed in to change notification settings - Fork 5
API Reference
完整的 REST API 文档。所有接口前缀为 /api,启动后也可通过 Swagger UI 查看:http://127.0.0.1:5000/api/docs/
API 支持两种认证方式:
| 方式 | 适用场景 | Header |
|---|---|---|
| JWT Bearer | API 调用、第三方集成 | Authorization: Bearer <access_token> |
| Session Cookie | Web UI | 自动携带 |
大部分接口同时支持两种方式。
{
"success": true,
"data": {},
"message": "操作成功"
}错误响应:
{
"success": false,
"message": "错误描述"
}用户注册。
// Request
{
"username": "myuser",
"password": "123456",
"email": "user@example.com" // 可选
}
// Response 201
{
"success": true,
"data": { "user_id": 1, "username": "myuser" },
"message": "注册成功"
}| 字段 | 规则 |
|---|---|
| username | 2-64 字符,必填 |
| password | 6-128 字符,必填 |
| 合法邮箱格式,可选 |
Session 登录,返回用户信息并设置 session cookie。
// Request
{ "username": "myuser", "password": "123456" }
// Response 200
{
"success": true,
"data": {
"user_id": 1,
"username": "myuser",
"is_admin": false
}
}退出登录,清除 session。
获取当前登录用户信息。需认证。
// Response 200
{
"success": true,
"data": {
"user_id": 1,
"username": "myuser",
"email": "user@example.com",
"display_name": "My User",
"is_admin": false
}
}修改密码。需认证。
// Request
{
"old_password": "123456",
"new_password": "654321"
}获取 JWT 令牌,适用于 API 调用和第三方集成。
// Request
{ "username": "myuser", "password": "123456" }
// Response 200
{
"success": true,
"data": {
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"user_id": 1,
"username": "myuser"
}
}Token 有效期:access_token 24 小时,refresh_token 7 天。
刷新 access_token。需在 Header 中携带 refresh_token。
Authorization: Bearer <refresh_token>
// Response 200
{
"success": true,
"data": { "access_token": "eyJ..." }
}所有接口需认证。
生成小米账号绑定二维码。
// Response 200
{
"success": true,
"data": {
"qr_image": "<base64 图片>",
"poll_id": "xxx"
}
}若已绑定:返回 "message": "小米账号已绑定且有效"。
轮询扫码状态。
// Response 200
{
"success": true,
"data": {
"status": "pending" // pending | success | timeout | error
}
}查看小米账号绑定状态。
解绑小米账号。
所有接口需认证。
获取设备列表。
| 参数 | 类型 | 说明 |
|---|---|---|
| home_id | query, string | 按家庭 ID 过滤 |
| refresh | query, boolean | 强制刷新缓存,默认 false |
获取设备详情及规格(属性、动作列表)。
读取设备属性值。
// 示例:获取灯的亮度
GET /api/devices/12345/props/brightness
// Response
{
"success": true,
"data": { "prop_name": "brightness", "value": 50 }
}
设置设备属性值。
// 示例:设置灯的亮度
// PUT /api/devices/12345/props/brightness
{ "value": 80 }执行设备动作。
// 示例:执行扫地机开始清扫
// POST /api/devices/12345/actions/start-sweep
{ "value": {} } // 参数可选获取摄像头流信息(IP、Token)。
获取用户所有摄像头的 go2rtc YAML 配置。
所有接口需认证。
获取家庭列表。
| 参数 | 类型 | 说明 |
|---|---|---|
| refresh | query, boolean | 强制刷新缓存 |
获取家庭详情(含设备列表)。
所有接口需认证。
获取场景列表。
| 参数 | 类型 | 说明 |
|---|---|---|
| home_id | query, string | 按家庭过滤 |
| refresh | query, boolean | 强制刷新缓存 |
执行场景。
// Response
{
"success": true,
"data": { "result": "success" }
}所有接口需认证。
获取用户的所有分组。
创建分组。
// Request
{ "name": "客厅设备", "icon": "sofa" } // icon 可选删除分组。
将设备添加到分组。
将设备从分组移除。
切换设备收藏状态。
查询设备是否已收藏。
// Response
{ "success": true, "data": { "did": "12345", "is_favorite": true } }所有接口需认证。
获取用户的所有自动化规则。
创建自动化规则。
// Request
{
"name": "每晚关灯",
"trigger_type": "cron",
"trigger_config": { "hour": 23, "minute": 0 },
"actions": [
{ "did": "12345", "prop_name": "power", "value": "off" }
],
"enabled": true
}更新规则。请求体格式同创建。
删除规则。
启用/禁用规则(切换状态)。
所有接口需认证。
记录能耗数据。
// Request
{
"prop_name": "power_consumption",
"value": 12.5,
"unit": "kWh" // 可选
}获取日粒度能耗统计。
| 参数 | 类型 | 说明 |
|---|---|---|
| days | query, int | 回溯天数,默认 7,最大 90 |
获取小时粒度能耗统计。
| 参数 | 类型 | 说明 |
|---|---|---|
| hours | query, int | 回溯小时数,默认 24,最大 168 |
获取最新能耗记录。
| 参数 | 类型 | 说明 |
|---|---|---|
| prop_name | query, string | 按属性名过滤 |
| limit | query, int | 返回条数,默认 100,最大 1000 |
获取设备的能耗相关属性列表。
管理第三方访问令牌。所有接口需认证。
列出当前用户的令牌。
// Response
{
"success": true,
"data": [
{
"id": 1,
"name": "Home Assistant",
"permissions": "read_write",
"last_used_at": "2026-05-01T12:00:00",
"created_at": "2026-04-01T08:00:00",
"expires_at": null
}
]
}创建令牌。原始 token 仅在创建时返回一次,请妥善保存。
// Request
{
"name": "My Integration",
"permissions": "read_write" // read_only | read_write
}
// Response 201
{
"success": true,
"data": {
"token": "mijia_xxx...", // 仅此一次!
"id": 2,
"name": "My Integration",
"permissions": "read_write"
}
}撤销令牌。
设备接口会将米家 API 错误码映射为标准 HTTP 状态码:
| HTTP | 米家错误码 | 说明 |
|---|---|---|
| 400 | -704220043 | 属性值错误 |
| 400 | -704220025 | 动作参数个数不匹配 |
| 400 | -704220035 | 动作参数错误 |
| 403 | -704010000 | 未授权(设备可能已删除) |
| 403 | -704030013 | 属性不可读 |
| 403 | -704030023 | 属性不可写 |
| 404 | -704042001 | 设备不存在 |
| 404 | -704040003 | 属性不存在 |
| 404 | -704040005 | 动作不存在 |
| 409 | -704053100 | 设备当前状态不允许此操作 |
| 500 | 其他 | 服务器内部错误 |
| 503 | -704042011 | 设备离线 |
| 504 | -704053036 | 设备操作超时 |
下一步:CLI Guide — 命令行工具的完整使用说明。