获取控制地址
接口说明
获取指定玩具车的远程控制面板地址。返回的 URL 包含临时访问 Token,可直接在浏览器中打开进行玩具车控制。
请求
http
GET /device/ctrlUrl请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| deviceSn | query | string | 是 | 玩具车序列号,唯一标识玩具车 |
| duration | query | integer | 否 | 控制时长,默认30分钟(1800秒),单位秒 |
| token | header | string | 是 | 授权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"
}
}响应字段
| 名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| status | integer | 是 | 响应状态:200-成功,401-需要重新授权,404-接口不存在,500-错误信息 |
| desc | string | 是 | 响应描述 |
| time | integer | 是 | 响应时间戳 |
| data | object | 是 | 响应数据 |
| url | string | 是 | 控制面板地址 |
业务场景
- 远程玩具车体验:用户通过手机应用远程控制玩具车,体验驾驶乐趣
- 亲子互动:家长远程控制玩具车与孩子互动,增进亲子关系
- 教育培训:通过玩具车进行驾驶教学和交通安全教育
- 娱乐竞技:组织远程玩具车比赛和竞技活动
安全机制
- 需要应用 Token 认证
- 控制会话有时长限制(默认 30 分钟)
- 玩具车必须已绑定到当前应用
- 独占控制:同一时间只能有一个控制会话
错误处理
设备正在控制中
当设备正在被其他人控制时,接口会返回以下错误响应:
json
{
"status": 500,
"desc": "设备正在控制中!",
"time": 1640995200,
"data": null
}独占控制
系统通过 DeviceSession 状态管理控制会话,确保同一时间只有一个控制会话处于 USING 状态。如果检测到设备正在被控制,接口立即返回"设备正在控制中!"错误,拒绝新的控制请求。
独占控制机制说明
- 互斥访问:系统通过
DeviceSession状态管理控制会话,确保同一时间只有一个控制会话处于 USING 状态 - 状态检测:在创建新的控制会话前,系统会检测设备是否存在 USING 状态的控制会话
- 拒绝策略:如果检测到设备正在被控制,接口立即返回"设备正在控制中!"错误,拒绝新的控制请求
- 应用场景:防止多个用户同时控制同一辆玩具车,确保控制命令的唯一性和可控性
使用建议
- 在调用此接口前,先通过
/device/openList接口查询设备的useStatus状态 - 选择
useStatus为"空闲"的设备进行控制 - 根据业务需求设置合适的
duration参数 - 在应用中嵌入返回的 URL(使用 iframe 或直接跳转)
注意事项
- Token 有效期:3 小时
- 默认控制时长:30 分钟(1800 秒)
- 设备独占:同一设备不能同时被多个用户控制
- 控制会话到期后会自动释放设备
