
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
rest980是一个HTTP服务器,可将dorita980库的所有方法映射为REST API,从而通过HTTP请求控制iRobot Roomba 900系列(980/i7/i7+)扫地机器人。
rest980旨在提供一个便捷的REST API接口,让用户能够通过HTTP请求远程控制Roomba机器人,支持本地和云两种控制方式,适用于家庭自动化、远程监控等场景。
适用于需要通过HTTP协议控制iRobot Roomba 900系列(980/i7/i7+)机器人的场景,包括但不限于:
检查您的机器人固件版本,并在rest980配置中设置firmwareVersion参数!
服务可通过编辑config/default.json文件或设置环境变量进行配置:
配置文件(config/default.json) | 环境变量 | 描述 |
|---|---|---|
| port | PORT | (默认:3000)HTTP服务监听端口 |
| blid | BLID | (必填)Roomba的BLID * |
| password | PASSWORD | (必填)Roomba的密码 * |
| robotIP | ROBOT_IP | (可选)已知机器人IP时设置,可跳过发现过程加快启动 |
| firmwareVersion | FIRMWARE_VERSION | (可选)根据固件版本设置为1或2。固件>=2时使用2(包括版本3),默认1(适用于固件1.6.6) |
| enableLocal | ENABLE_LOCAL | (可选)设置为'no'禁用本地API,默认'yes' |
| enableCloud | ENABLE_CLOUD | (可选)设置为'no'禁用云API,默认'yes' |
| keepAlive | KEEP_ALIVE | (可选)设置为'no'时每次请求连接/断开机器人(速度慢但释放连接供官方应用使用) |
| basicAuthUser | BASIC_AUTH_USER | (可选)启用基本认证,需同时设置用户和密码 |
| basicAuthPass | BASIC_AUTH_PASS | (可选)启用基本认证,需同时设置用户和密码 |
| sslKeyFile | SSL_KEY_FILE | (可选)HTTPS密钥文件路径,需同时设置密钥和证书 (创建自签名证书方法) |
| sslCertFile | SSL_CERT_FILE | (可选)HTTPS证书文件路径,需同时设置密钥和证书 (创建自签名证书方法) |
有关获取BLID和密码的更多信息和说明,请参见https://github.com/koalazak/dorita980
拉取Docker镜像
bashdocker pull docker.xuanyuan.run/koalazak/rest980
运行Docker容器
bashdocker run -e BLID=myuser -e PASSWORD=mypass -e ROBOT_IP=myrobotIP docker.xuanyuan.run/koalazak/rest980
本地构建Docker镜像
可通过项目中的https://github.com/koalazak/rest980/blob/master/Dockerfile%E6%9C%AC%E5%9C%B0%E6%9E%84%E5%BB%BA%EF%BC%9A
bashdocker build . -t koalazak/rest980
服务启动后,可通过端口3000访问API,主要包含local(本地)和cloud(云)两个端点,分别对应dorita980的本地和云方法。
错误响应
HTTP状态码500,响应格式:
json{"message":"人类可读消息","error":{}}
本地API(local)
操作接口(Actions)
所有清洁操作通过/api/local/action/[action]端点,使用GET方法(无查询参数):
可用操作:
示例:开始清洁
httpGET http://192.168.1.110:3000/api/local/action/start
成功响应:
json{"ok":null,"id":23}
示例:指定房间清洁
部分Roomba型号(如s9、i7)支持房间特定清洁,需通过POST方法发送参数:
shcurl -X POST http://192.168.1.110:3000/api/local/action/cleanRoom -H 'Content-Type: application/json' -d '{"ordered": 0, "pmap_id": "123456", "regions": [{"region_id":"5", "region_name":"Hallway","region_type":"hallway"}], "user_pmapv_id": "987654"}'
信息接口(Info)
所有信息通过/api/local/info/[record]端点,使用GET方法(无查询参数):
可用记录:
示例:获取当前任务变量
httpGET http://192.168.1.110:3000/api/local/info/mission
成功响应:
json{ "ok": { "flags": 0, "cycle": "none", "phase": "charge", "pos": { "theta": 179, "point": {"x": 102, "y": -13} }, "batPct": 99, "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 0, "sqft": 0 }, "id": 2 }
配置接口(Configurations)
所有配置通过/api/local/config/[configName]端点,GET方法获取配置,POST方法设置配置:
可用配置名称:
preferences设置语言)preferences获取当前配置)示例:获取固件1的偏好设置
httpGET http://192.168.1.110:3000/api/local/config/preferences
成功响应:
json{ "ok": { "flags": 1024, "lang": 2, "timezone": "America/Buenos_Aires", "name": "myRobotName", "cleaningPreferences": { "carpetBoost": "auto", "edgeClean": true, "cleaningPasses": "1", "alwaysFinish": true } }, "id": 2 }
示例:设置清洁次数为两次
httpPOST http://192.168.1.110:3000/api/local/config/cleaningPasses/two
请求体:
json{}
成功响应:
json{"ok":null,"id":293}
云API(cloud,仅固件1.6.x支持)
所有信息接口使用GET方法(无查询参数):
所有操作接口使用GET方法(无查询参数):
示例:开始清洁
httpGET http://192.168.1.110:3000/api/cloud/action/clean
成功响应:
json{"status":"OK","method":"multipleFieldSet"}
可将图片或文件添加到public/文件夹,服务将提供静态文件访问。
通过浏览器访问http://serverIP:3000/map,可体验实验性实时地图功能。
!实时地图
视频演示:使用dorita980库的iRobot Roomba 980清洁地图
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务