首页 / 文档中心 / 宠物喂食器(ODM 案例) / 设备基础模块

设备基础模块

宠物喂食器(ODM 案例) · APP服务端接口

设备模块鉴权接口文档

概览

  • 基础路径: /api
  • 文档范围: 仅包含设备基础鉴权接口
  • 鉴权方式: 请求头 X-Token
  • Content-Type: application/json

文档拆分

  • 本文档: 设备基础接口,包括列表、详情、绑定、解绑、更新
  • P2P 代理接口: 见 device-auth-p2p.md
  • 直播地址与录像地址接口: 见 device-auth-address.md

鉴权头

字段 类型 必填 说明
X-Token string 是 用户登录后获得的 JWT Token

统一响应格式

{
  "code": 200,
  "msg": "操作成功",
  "data": {}
}

返回字段说明

字段 类型 说明
code integer 业务状态码,200 表示成功,其他值表示失败
msg string 响应消息
data object/array/null 业务数据

通用鉴权失败响应

{
  "code": 401,
  "msg": "未登录或登录过期",
  "data": null
}
{
  "code": 401,
  "msg": "登录已过期,请重新登录",
  "data": null
}

设备对象字段说明

设备列表、设备详情、设备绑定成功时返回的 data 可能包含以下字段:

字段 类型 说明
id string 设备唯一标识
userId integer 当前绑定用户 ID
familyId string 所属家庭 ID
name string 设备名称
batteryLevel integer 电量百分比
isCharging boolean 是否正在充电
foodLevel integer 余粮百分比
firmwareVersion string 固件版本
totalFeedCount integer 总喂食次数
todayFeedCount integer 今日喂食次数
todayFeedAmount integer 今日喂食总量(跨天自动清零)
lastStartTime integer 上次上线时间戳,秒
lastCloseTime integer 上次离线时间戳,秒
online boolean 是否在线
isDisabled boolean 是否禁用
isNew integer 设备状态标记,0 断线重连,1 程序重启,2 设备重启
eip string 外网 IP
cloudVer string 云端版本
addr string 设备地址
createdAt string 创建时间
updatedAt string 更新时间

1. 获取设备列表

  • 路径: /api/device/list
  • 方法: POST
  • 是否鉴权: 是

请求 Body 参数

字段 类型 必填 说明
familyId string 否 家庭 ID。不传时按当前用户查询设备列表,传入时按家庭查询

请求示例

{
  "familyId": "family_001"
}

也可传空对象:

{}

成功响应示例

{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "id": "dev_001",
      "userId": 1,
      "familyId": "family_001",
      "name": "客厅喂食器",
      "batteryLevel": 86,
      "isCharging": false,
      "foodLevel": 70,
      "firmwareVersion": "1.0.2",
      "totalFeedCount": 12,
      "todayFeedCount": 3,
      "lastStartTime": 1752297600,
      "lastCloseTime": 1752280000,
      "online": true,
      "isDisabled": false,
      "isNew": 0,
      "eip": "1.2.3.4",
      "cloudVer": "cloud-2026.05",
      "addr": "192.168.1.10",
      "createdAt": "2026-05-01T10:00:00Z",
      "updatedAt": "2026-05-09T10:00:00Z"
    }
  ]
}

返回参数说明

字段 类型 说明
code integer 成功时为 200
msg string 成功时为 操作成功
data array 设备列表
data[].* object 设备对象字段,见上方设备对象字段说明

失败响应示例

{
  "code": 500,
  "msg": "获取设备列表失败",
  "data": null
}

2. 获取设备详情

  • 路径: /api/device/detail
  • 方法: POST
  • 是否鉴权: 是

请求 Body 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识

请求示例

{
  "deviceId": "dev_001"
}

成功响应示例

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "id": "dev_001",
    "userId": 1,
    "familyId": "family_001",
    "name": "客厅喂食器",
    "batteryLevel": 86,
    "isCharging": false,
    "foodLevel": 70,
    "firmwareVersion": "1.0.2",
    "totalFeedCount": 12,
    "todayFeedCount": 3,
    "lastStartTime": 1752297600,
    "lastCloseTime": 1752280000,
    "online": true,
    "isDisabled": false,
    "isNew": 0,
    "eip": "1.2.3.4",
    "cloudVer": "cloud-2026.05",
    "addr": "192.168.1.10",
    "createdAt": "2026-05-01T10:00:00Z",
    "updatedAt": "2026-05-09T10:00:00Z"
  }
}

返回参数说明

字段 类型 说明
code integer 成功时为 200
msg string 成功时为 操作成功
data object 设备详情
data.* mixed 设备对象字段,见上方设备对象字段说明

失败响应示例

{
  "code": 400,
  "msg": "参数错误",
  "data": null
}
{
  "code": 404,
  "msg": "设备不存在",
  "data": null
}

3. 绑定设备

  • 路径: /api/device/bind
  • 方法: POST
  • 是否鉴权: 是

请求 Body 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
familyId string 是 家庭 ID。设备绑定必须指定家庭
name string 否 自定义设备名称。最多 30 个字符,只允许中文、字母、数字、下划线和短横线

请求示例

{
  "deviceId": "dev_001",
  "familyId": "family_001",
  "name": "客厅喂食器"
}

成功响应示例

{
  "code": 200,
  "msg": "设备绑定成功",
  "data": {
    "id": "dev_001",
    "userId": 1,
    "familyId": "family_001",
    "name": "客厅喂食器"
  }
}

返回参数说明

字段 类型 说明
code integer 成功时为 200
msg string 成功时为 设备绑定成功
data.id string 设备唯一标识
data.userId integer 当前绑定用户 ID
data.familyId string 家庭 ID
data.name string 设备名称

失败响应示例

{
  "code": 400,
  "msg": "familyId不能为空",
  "data": null
}
{
  "code": 400,
  "msg": "设备不存在,无法绑定",
  "data": null
}
{
  "code": 400,
  "msg": "该设备已被他人绑定",
  "data": null
}
{
  "code": 400,
  "msg": "设备名称不能超过30个字符",
  "data": null
}
{
  "code": 400,
  "msg": "设备名称只能包含中文、字母、数字、下划线和短横线",
  "data": null
}

4. 解绑设备

  • 路径: /api/device/unbind
  • 方法: POST
  • 是否鉴权: 是

请求 Body 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识

请求示例

{
  "deviceId": "dev_001"
}

成功响应示例

{
  "code": 200,
  "msg": "设备已解绑",
  "data": null
}

返回参数说明

字段 类型 说明
code integer 成功时为 200
msg string 成功时为 设备已解绑
data null 无返回数据

失败响应示例

{
  "code": 400,
  "msg": "设备不存在",
  "data": null
}
{
  "code": 400,
  "msg": "无权限操作此设备",
  "data": null
}

5. 更新设备名称

  • 路径: /api/device/update
  • 方法: POST
  • 是否鉴权: 是

请求 Body 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
name string 否 新设备名称。最多 30 个字符,只允许中文、字母、数字、下划线和短横线

请求示例

{
  "deviceId": "dev_001",
  "name": "餐厅喂食器"
}

成功响应示例

{
  "code": 200,
  "msg": "更新成功",
  "data": null
}

返回参数说明

字段 类型 说明
code integer 成功时为 200
msg string 成功时为 更新成功
data null 无返回数据

失败响应示例

{
  "code": 400,
  "msg": "设备不存在",
  "data": null
}
{
  "code": 400,
  "msg": "无权限操作此设备",
  "data": null
}
{
  "code": 400,
  "msg": "设备名称不能超过30个字符",
  "data": null
}
{
  "code": 400,
  "msg": "设备名称只能包含中文、字母、数字、下划线和短横线",
  "data": null
}

附录

说明

  • 本文档仅保留设备基础接口。
  • P2P 代理接口仍使用 query 传递 deviceId、sessionId 等参数,见 device-auth-p2p.md。
  • 直播地址与录像地址接口使用统一响应结构,见 device-auth-address.md。
这份文档没解决你的问题?联系我们,技术工程师直接对接。

询价咨询

填写这几项,我们 1 个工作日内回传报价与方案

点「生成询价邮件」会打开你的邮件客户端,正文已自动填好;电脑没配邮件客户端,就点「复制内容」粘到网页邮箱发送,收件人 sunshiyang@xstrive.com。