dorita980: 非官方iRobot Roomba控制库的全面指南
dorita980是一个强大的Node.js库,为iRobot Roomba系列扫地机器人提供了非官方的控制接口。无论你是想要将Roomba集成到自己的智能家居项目中,还是只是想更灵活地控制你的机器人,dorita980都能满足你的需求。本文将全面介绍dorita980的各项功能及其使用方法。
1. dorita980简介
dorita980是一个非官方的开源项目,旨在为iRobot Roomba系列扫地机器人提供一个Node.js SDK。它支持多种Roomba型号,包括i7/i7+、980、960、e5、690、675等。通过dorita980,你可以:
- 通过本地网络或iRobot云API发送控制指令
- 获取机器人的各种状态信息
- 设置清扫偏好和定时任务
- 实时监控清扫任务进度
- 绘制清扫地图(部分支持位置报告的型号)
值得注意的是,dorita980是一个非官方项目,因此使用时需要注意以下几点:
- 建议阻止机器人的互联网访问,以避免固件自动更新可能导致的兼容性问题。
- 在使用新固件版本之前,请先确认dorita980是否兼容。
- 如果你的机器人固件版本是1.6.x,请参考旧版文档。
2. 安装dorita980
安装dorita980非常简单,只需要通过npm执行以下命令:
npm install dorita980 --save
3. 获取机器人的身份认证信息
在使用dorita980之前,你需要获取机器人的blid(用户名)和密码。dorita980提供了多种方法来获取这些信息:
方法1: 使用云API(推荐)
-
全局安装dorita980:
npm install -g dorita980
-
运行获取密码的命令:
get-roomba-password-cloud <iRobot用户名> <iRobot密码> [可选的API密钥]
方法2: 使用本地网络(仅适用于旧版固件)
- 找到机器人的IP地址(可以通过路由器或网络扫描工具获取)
- 运行以下命令:
get-roomba-password <机器人IP地址>
获取到的信息会类似这样:
Robot "Dorita" (sku: R98---- SoftwareVer: v2.4.16-126):
BLID=> xxxxxxxxxxxxx
Password=> :1:1486937829:gktkDoYpWaDxCfGh
请保存好这些信息,后续使用dorita980时会用到。
4. 使用dorita980控制Roomba
4.1 基本用法
以下是一个简单的例子,展示如何使用dorita980通过本地网络连接并控制你的Roomba:
const dorita980 = require('dorita980');
const myRobotViaLocal = new dorita980.Local('MyUsernameBlid', 'MyPassword', '192.168.1.104');
myRobotViaLocal.on('connect', () => {
myRobotViaLocal.clean()
.then(() => myRobotViaLocal.end())
.catch(console.log);
});
这段代码会连接到你的Roomba,发送清扫命令,然后断开连接。
4.2 获取机器人状态
dorita980提供了多种方法来获取机器人的状态信息:
myRobotViaLocal.getRobotState(['batPct', 'bbchg3'])
.then((state) => {
console.log('电池电量:', state.batPct);
console.log('充电信息:', state.bbchg3);
});
4.3 设置清扫偏好
你可以轻松地更改机器人的清扫偏好:
myRobotViaLocal.setCarpetBoostAuto()
.then(() => console.log('已设置自动地毯增强模式'));
myRobotViaLocal.setEdgeCleanOn()
.then(() => console.log('已开启边缘清扫'));
4.4 定时任务
设置每周清扫计划也很简单:
const newWeek = {
cycle: ["none","start","start","start","start","start","start"],
h: [10,10,10,10,10,10,10],
m: [30,30,30,30,30,30,30]
};
myRobotViaLocal.setWeek(newWeek)
.then(() => console.log('已设置新的每周清扫计划'));
5. 高级功能
5.1 实时地图绘制
对于支持位置报告的型号,你可以利用mission
事件来实时绘制清扫地图:
myRobotViaLocal.on('mission', (data) => {
console.log('当前位置:', data.pose);
console.log('清扫状态:', data.cleanMissionStatus);
// 这里可以添加绘制地图的逻辑
});
5.2 自定义MQTT命令
如果你想尝试一些未文档化的功能,可以使用publish
方法发送原始MQTT命令:
const myCommand = {
command: 'clean',
time: Date.now() / 1000 | 0,
initiator: 'localApp'
};
myRobotViaLocal.publish('cmd', JSON.stringify(myCommand), (err) => {
if(err) console.log('错误:', err);
});
6. 注意事项和最佳实践
-
连接管理: Roomba一次只能建立一个本地连接。使用完dorita980后,记得调用
end()
方法断开连接,以便官方app可以通过本地网络连接。 -
错误处理: 总是使用try-catch或者Promise的catch方法来处理可能的错误。
-
固件兼容性: 在更新Roomba固件之前,先检查dorita980的兼容性。
-
网络安全: 考虑使用HTTPS和基本认证来增强your REST API的安全性(如果你使用rest980)。
-
资源管理: 对于长期运行的应用,注意处理各种事件(如('offline'事件)以确保稳定性。
7. 结语
dorita980为Roomba爱好者和开发者提供了强大而灵活的控制方式。无论是简单的日常使用,还是复杂的智能家居集成,dorita980都能满足你的需求。随着项目的不断更新和社区的贡献,我们期待看到更多基于dorita980的创新应用。
希望这篇指南能帮助你充分利用你的Roomba,享受智能清扫带来的便利。如果你有任何问题或者想法,欢迎查阅官方文档或者参与GitHub上的讨论。祝你使用愉快!
🤖🧹✨