Skip to content

获取控制地址

接口说明

获取指定玩具车的远程控制面板地址。返回的 URL 包含临时访问 Token,可直接在浏览器中打开进行玩具车控制。

请求

http
GET /device/ctrlUrl

请求参数

名称位置类型必选说明
deviceSnquerystring玩具车序列号,唯一标识玩具车
durationqueryinteger控制时长,默认30分钟(1800秒),单位秒
tokenheaderstring授权token,通过 /app/token 接口获取

请求示例

bash
curl -X GET "http://182.254.182.254:9090/device/ctrlUrl?deviceSn=TOY_CAR_001&duration=1800" \
  -H "token: <your_access_token>"
javascript
const response = await fetch(
  'http://182.254.182.254:9090/device/ctrlUrl?deviceSn=TOY_CAR_001&duration=1800',
  {
    method: 'GET',
    headers: {
      'token': '<your_access_token>'
    }
  }
);

const data = await response.json();

响应

成功响应

状态码:200

json
{
  "status": 200,
  "desc": "string",
  "time": 0,
  "data": {
    "url": "string"
  }
}

响应字段

名称类型必选说明
statusinteger响应状态:200-成功,401-需要重新授权,404-接口不存在,500-错误信息
descstring响应描述
timeinteger响应时间戳
dataobject响应数据
urlstring控制面板地址

业务场景

  • 远程玩具车体验:用户通过手机应用远程控制玩具车,体验驾驶乐趣
  • 亲子互动:家长远程控制玩具车与孩子互动,增进亲子关系
  • 教育培训:通过玩具车进行驾驶教学和交通安全教育
  • 娱乐竞技:组织远程玩具车比赛和竞技活动

安全机制

  • 需要应用 Token 认证
  • 控制会话有时长限制(默认 30 分钟)
  • 玩具车必须已绑定到当前应用
  • 独占控制:同一时间只能有一个控制会话

错误处理

设备正在控制中

当设备正在被其他人控制时,接口会返回以下错误响应:

json
{
  "status": 500,
  "desc": "设备正在控制中!",
  "time": 1640995200,
  "data": null
}

独占控制

系统通过 DeviceSession 状态管理控制会话,确保同一时间只有一个控制会话处于 USING 状态。如果检测到设备正在被控制,接口立即返回"设备正在控制中!"错误,拒绝新的控制请求。

独占控制机制说明

  • 互斥访问:系统通过 DeviceSession 状态管理控制会话,确保同一时间只有一个控制会话处于 USING 状态
  • 状态检测:在创建新的控制会话前,系统会检测设备是否存在 USING 状态的控制会话
  • 拒绝策略:如果检测到设备正在被控制,接口立即返回"设备正在控制中!"错误,拒绝新的控制请求
  • 应用场景:防止多个用户同时控制同一辆玩具车,确保控制命令的唯一性和可控性

使用建议

  1. 在调用此接口前,先通过 /device/openList 接口查询设备的 useStatus 状态
  2. 选择 useStatus 为"空闲"的设备进行控制
  3. 根据业务需求设置合适的 duration 参数
  4. 在应用中嵌入返回的 URL(使用 iframe 或直接跳转)

注意事项

  • Token 有效期:3 小时
  • 默认控制时长:30 分钟(1800 秒)
  • 设备独占:同一设备不能同时被多个用户控制
  • 控制会话到期后会自动释放设备

OMI