news 2026/9/16 19:50:04

Home Assistant Ecovacs 集成实战:使用 `ecovacs.raw_get_positions` 获取扫地机器人与充电座原始位置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Home Assistant Ecovacs 集成实战:使用 `ecovacs.raw_get_positions` 获取扫地机器人与充电座原始位置

Home Assistant Ecovacs 集成实战:使用ecovacs.raw_get_positions获取扫地机器人与充电座原始位置

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

本指南深入讲解 Home Assistant Ecovacs 集成中的ecovacs.raw_get_positions动作:它用于一次性取回 Ecovacs 扫地机器人(Deebot)与充电座(充电坞)的原始位置响应数据,适用于自动化、脚本、模板传感器以及故障排查场景。读完本文,你将掌握该动作在 UI 与 YAML 两种模式下的完整调用方式、响应数据结构(resp -> body -> data下的deebotPoschargePos坐标),并能将其接入自定义流程做进一步处理。

动作概览

ecovacs.raw_get_positions是 Ecovacs 集成 提供的动作之一,其核心用途是检索 Ecovacs 扫地机器人及其充电座的原始位置响应

该动作的元信息如下:

  • 动作名(action)ecovacs.raw_get_positions
  • 所属域(domain)ecovacs
  • 描述:Retrieves a raw response containing the positions of the charger and the vacuum(检索包含充电座与扫地机器人位置的原始响应)。

与集成内常见的“开始清扫”“回充”等控制类动作不同,本动作不产生物理动作,只读取数据——它返回的是设备上报的原始坐标响应,适合在需要拿到位置明细做自定义处理或排障时使用。

在 UI 中调用该动作

如果更习惯用图形界面编排自动化与脚本,可以按以下步骤完成配置:

  1. 进入设置(Settings)>自动化与场景(Automations & scenes)
  2. 打开一个已有的自动化或脚本;或者点击创建自动化(Create automation)>创建新自动化(Create new automation)
  3. 如果新建的是自动化,需要在When(当…时)区域添加一个触发器。脚本(Script)不需要触发器——脚本由其他自动化、仪表盘或其他脚本调用时才运行。
  4. Then do(然后执行)区域点击添加动作(Add action)
  5. 选择要控制的目标设备。在By target(按目标)(详见下文 动作的目标)下选择对应的 Ecovacs 扫地机器人。
  6. 在该目标展示的动作列表中,选择获取原始位置(Get raw positions)
  7. 点击保存(Save)

UI 中的选项

该动作在 UI 中没有额外的选项。也就是说,图形界面下你只需要指定目标实体,其余全部由 Home Assistant 自动完成。

在 YAML 中调用该动作

如果你直接编写 YAML,或希望精确了解 Home Assistant 在底层做了什么,可以参考本节的技术参考。YAML 中调用该动作的方式如下:

action: | action: ecovacs.raw_get_positions target: entity_id: vacuum.deebot_n8_plus response_variable: ecovacs_positions

以上配置会对vacuum.deebot_n8_plus执行ecovacs.raw_get_positions,并将返回结果存入响应变量ecovacs_positions,供后续步骤引用。

YAML 中的选项

该动作在 YAML 中除 target(目标)之外没有额外的选项。可选的response_variable用于存储响应内容,便于在后续步骤中继续使用。

动作的目标(Targets of the action)

该动作必须指定一个目标(target)。目标是动作的作用对象,可以将动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会对该目标下所有匹配的vacuum实体执行动作:

  • 实体(Entity):单个指定的vacuum实体,例如vacuum.living_room
  • 设备(Device):属于某台设备的所有vacuum实体。
  • 区域(Area):某个房间/区域内的所有vacuum实体。
  • 楼层(Floor):某个楼层上的所有vacuum实体。
  • 标签(Label):共享某个标签的所有vacuum实体。

也可以在同一个动作中混合使用不同的目标类型,例如同时把某个具体实体和某个区域都作为目标,让动作一次性作用于两者。

响应数据结构解析

该动作返回的是原始响应,其中包含扫地机器人和充电座的位置。需要特别注意的是:确切的响应结构取决于扫地机器人的型号与固件版本,不同设备返回的字段可能有所差异。

响应中的坐标位于resp -> body -> data路径下,典型结构如下:

vacuum.deebot_n8_plus: ret: ok resp: header: pri: 1 tzm: 480 ts: "1717748487712" ver: 0.0.1 fwVer: 1.2.0 hwVer: 0.1.1 body: code: 0 msg: ok data: deebotPos: x: 1 y: 5 a: 85 invalid: 0 chargePos: - x: 5 y: 9 a: 85 t: 1 invalid: 0 mid: "200465850" id: 5o81 payloadType: j

对该响应的关键字段做如下解读:

路径含义
ret请求整体返回状态,ok表示成功
resp.header协议头信息,包含时区分钟偏移tzm、时间戳ts(毫秒)、协议版本ver、固件版本fwVer、硬件版本hwVer
resp.body.code/resp.body.msg响应体状态码与消息,0/ok表示正常
resp.body.data.deebotPos扫地机器人当前位置坐标
resp.body.data.chargePos充电座位置坐标(注意是列表结构)
resp.body.data.mid地图 ID
id/payloadType消息标识与载荷类型

坐标字段说明:

  • xy:位置坐标。
  • a:角度(用于表示朝向)。
  • t:类型/标签(仅在chargePos中出现)。
  • invalid:有效性标志,0表示坐标有效。

deebotPos是单个对象,而chargePos是数组(以-开头表示列表项),这一差异在编写模板提取数据时需要注意。

实战:将原始坐标接入自动化与模板

拿到response_variable后,可以在自动化后续步骤或模板中提取并使用这些坐标。例如,通过自动化调用该动作并将结果写入日志或模板传感器:

action: ecovacs.raw_get_positions target: entity_id: vacuum.deebot_n8_plus response_variable: ecovacs_positions

随后即可在后续步骤中引用ecovacs_positions中的字段。配合 Template 模板集成 的用法,可以将坐标转换为可持久化的传感器状态。例如在模板传感器中读取扫地机器人当前位置:

template: - sensor: - name: "Deebot Position X" state: "{{ ecovacs_positions['vacuum.deebot_n8_plus']['resp']['body']['data']['deebotPos']['x'] | default('unknown') }}"

说明:由于响应结构依赖型号与固件,编写模板时应做好容错(例如使用default()、判断字段是否存在),避免因个别设备字段差异导致模板报错。若希望稳定获取坐标,最可靠的方式是在自动化中显式调用ecovacs.raw_get_positions并通过response_variable承接响应,再结合resp.body.data.deebotPosresp.body.data.chargePos字段编写提取表达式。

使用场景与注意事项

  • 主要用途:需要原始位置数据用于故障排查(troubleshooting)或自定义处理(custom processing)时,该动作最为有用。例如,当怀疑机器人的清扫地图、回充定位出现异常时,可以通过该动作一次性获取坐标快照,判断invalid标志是否异常、坐标是否超出预期范围。
  • 结构不固定:响应结构依赖型号与固件,在编写自动化解析逻辑时应做好容错,避免因个别设备字段差异导致模板报错。
  • 目标为 vacuum 实体:该动作按vacuum域匹配目标,请确保目标选择的是 Ecovacs Deebot 扫地机器人实体(如vacuum.deebot_n8_plus)。
  • 不改变设备状态:这是一个只读查询类动作,不会启动清扫、不会触发回充,也不产生清扫任务;它对设备的影响仅是发起一次位置状态查询。

相关阅读

  • Ecovacs 集成完整文档:包含设备前提条件、提供的实体列表(传感器、开关、按钮、事件、地图图片等)、真空吸尘器实体的使用寿命属性与错误处理,以及自托管(Self-hosted)配置说明。
  • 在该集成文档的 真空吸尘器(Vacuum)章节 中,你可以进一步了解如何通过ecovacs_error事件监听错误、通过error属性排查异常,以及如何将组件寿命提取为模板传感器。

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 19:49:52

Betterfox如何提升Firefox隐私与性能

Betterfox如何提升Firefox隐私与性能 【免费下载链接】Betterfox Firefox user.js for optimal privacy and security. Your favorite browser, but better. 项目地址: https://gitcode.com/GitHub_Trending/be/Betterfox Betterfox 是一套 Firefox user.js 优化配置&am…

作者头像 李华
网站建设 2026/9/16 19:48:35

MIC33153+R7薄膜电容构建工业级电源稳定性闭环

1. 项目概述:这不是一个“调参实验”,而是一次面向工业级电源管理的系统性加固你手头有一块正在跑关键任务的控制板,可能是PLC扩展模块、边缘网关的主控单元,也可能是医疗设备里的信号调理子系统——它不追求炫酷的新功能&#xf…

作者头像 李华
网站建设 2026/9/16 19:47:34

从工程视角拆解 Java 缺陷系统中的状态机与事务设计

简介:一份面向Java开发者的缺陷检查系统源码,聚焦静态代码分析、语法树遍历与规则引擎设计,适合希望掌握代码质量检测原理并动手实践的中级开发者。压缩包共73个文件,以53个Java源码为主,辅以9个XML配置、前端样式与脚…

作者头像 李华
网站建设 2026/9/16 19:46:30

YOLOv8环境配置全指南:Win10安装CUDA 11.6与cuDNN实操

刚接触YOLOv8的时候,大部分人上来就pip install ultralytics,结果一跑就报各种 CUDA 相关的错,不是torch.cuda.is_available()返回 False,就是训练的时候直接提示找不到 GPU。问题出在哪?十有八九是底层环境没配对。我…

作者头像 李华