回答
在 Hamibot 中,多设备同步通常涉及两个场景:批量执行脚本(动作同步)和设备间数据交互(数据同步)。可以通过 API 接口和脚本编程来实现。
1. 批量执行脚本(动作同步)
若要同时在多台设备上运行同一个脚本,可以通过调用 Hamibot API,在请求参数中指定多个设备信息。
实现步骤:
- 获取设备列表,确认设备
_id。 - 调用脚本运行接口,在
devices数组中填入多台设备信息。
示例代码:
// 文档地址 https://docs.hamibot.com/
http.request('https://api.hamibot.com/v1/scripts/脚本_id/run', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
devices: [
{ _id: '设备 ID1', name: '设备名 1' },
{ _id: '设备 ID2', name: '设备名 2' }
],
}),
});
将多台设备信息放入 devices 数组中,即可触发这些设备同时运行指定脚本。
2. 设备间数据同步(数据交互)
Hamibot 设备之间没有直接的内部通信通道。若需实现数据同步(例如设备 A 完成任务后通知设备 B),需借助外部服务器作为中转。
实现方法:
- 在脚本中使用
http.request向外部服务器发送数据。 - 另一台设备通过
http.request从外部服务器获取数据。
示例代码:
// 文档地址 https://docs.hamibot.com/
// 发送数据到外部服务器
http.request('https://你的服务器地址/api/sync', {
method: 'POST',
contentType: 'application/json',
body: JSON.stringify({
deviceId: hamibot.deviceId,
data: '同步内容'
})
});
3. 获取设备列表
在进行多设备管理前,可通过 API 获取当前账号下的设备列表,以便获取准确的设备 _id。
示例代码:
// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devices', {
method: 'GET',
headers: {
authorization: '你的令牌(hmp 开头)',
},
});
log(res.body.json());
注意事项
- JavaScript 兼容性:Hamibot 脚本环境基于 Rhino 1.7.15,编写代码时请勿使用箭头函数、默认参数值等新特性。
- 令牌安全:API 请求中的
authorization令牌需妥善保管,避免泄露。 - 网络环境:确保设备网络畅通,能够访问 Hamibot API 或外部同步服务器。
通过上述 API 调用和 HTTP 请求方式,你可以灵活地实现多设备的协同工作和数据同步。
ℹ️ 本回答由 AI 生成,内容仅供参考