ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Home Assistant KNX 集成 `knx.event_register` 动作详解:动态注册 KNX 组地址事件过滤器

Home Assistant KNX 集成 `knx.event_register` 动作详解:动态注册 KNX 组地址事件过滤器 Home Assistant KNX 集成knx.event_register动作详解动态注册 KNX 组地址事件过滤器【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io本篇技术指南聚焦 Home Assistant KNX 集成提供的knx.event_register动作action讲解如何动态地向knx_event事件过滤器添加或移除组地址从而让原本未建模为实体的 KNX 组地址在指定时间段内向 Home Assistant 事件总线投递事件。读完本文你将掌握该动作在 UI 与 YAML 两种方式下的完整配置方法、address/type/remove三个核心参数的含义与取值以及如何结合自动化在 Home Assistant 启动时注册组地址并消费knx_event事件数据。背景knx_event事件与事件过滤器KNX 集成通过event配置键维护一个事件过滤器。凡目的地址与过滤器模式匹配的 KNX 报文都会被投递到 Home Assistant 事件总线作为knx_event事件发出可用于自动化触发。在configuration.yaml中event键的配置形式如下完整定义见 KNX 集成 Events 章节knx: event: - address: - 0/1/* - address: - 1/2/* - 1/3/2-4 type: 2byte_unsigned - address: - 3/4/5 type: 2byte_float地址支持通配符如0/1/*与范围如1/3/2-4。配置了type的地址块其报文负载会按对应 DPTData Point Type数据点类型解码后写入事件数据的value键。knx.event_register动作正是对这一过滤器的运行时扩展它允许你在自动化或脚本中按需添加或移除组地址无需改动configuration.yaml、也无需重启 Home Assistant。核心机制注册与注销如何工作当某个组地址通过knx.event_register注册后发送到该地址的报文就会触发一个knx_event事件。该事件在事件总线上携带以下数据属性字段说明见 KNX 集成 Events 章节属性说明data原始报文负载如1或[12, 55]destination报文发送到的 KNX 组地址字符串如1/2/3direction报文方向字符串Incoming/Outgoingsource发送方 KNX 个体地址字符串如1.2.3telegramtypeAPCI 服务类型GroupValueWrite、GroupValueRead、GroupValueResponse会生成knx_eventvalue若该地址配置了type此处为按 DPT 解码后的值GroupValueRead报文此键为None注册remove: false与注销remove: true本质上是同一动作的两种操作模式因此你可以按需开启、按需关闭从而只在特定时间段内监听某些地址。适用场景该动作主要面向以下两类需求详见原动作文档响应未建模为实体的 KNX 地址某些组地址如中间状态、动作触发位不需要创建传感器或开关实体只需在事件层面被感知。按时间动态监听通过在自动化中动态注册、注销只在特定时间段内将地址纳入过滤器避免事件总线长期被无关报文占用。需要特别指出在configuration.yaml中通过event键配置的组地址始终处于激活状态无法通过该动作移除。此外若你只是想在自动化中响应报文官方推荐优先使用knx.telegram触发平台而不是knx_event事件——关于两者的取舍下文与knx.telegram触发器的对比一节会展开说明。在 UI 中注册组地址按以下步骤在自动化或脚本中使用该动作进入Settings Automations scenes。打开现有自动化或脚本或选择Create automationCreate new automation。若是新建自动化在When部分添加一个触发器脚本不需要触发器它们在被其他内容调用时运行。在Then do部分选择Add action。在搜索框中搜索并选择KNX: Register knx_event。填写要注册的Group address。可选地设置Value type用于解码负载或打开Remove event registration以移除该地址。选择Save。该动作不支持 targets在 UI 中不会提示你选择区域、设备、实体或标签。且只有具有管理员权限的用户才能运行此动作。UI 选项一览选项必填说明Group address是要添加或移除的组地址提供列表可一次注册多个组地址Value type否若设置负载将按给定 DPT 解码并写入事件数据的value键可取 KNX sensor 类型的合法值详见 KNX Sensor 章节Remove event registration否若开启将把组地址从过滤器中移除YAML 用法与参数详解在 YAML 中动作名称为knx.event_register。最基本的使用示例action: knx.event_register data: address: 0/4/20该示例将组地址0/4/20注册进过滤器此后发往该地址的报文会触发knx_event事件。YAML 参数参数必填类型默认值说明address是string / list—要添加或移除的组地址传入列表可一次注册多个组地址type否string / integer—若设置负载按给定 DPT 解码并写入事件数据value键可取 KNX sensor 类型的合法值remove否booleanfalse若为true将把组地址从过滤器中移除address目标组地址必填参数支持单个地址字符串或字符串列表。一次注册多个地址的写法action: knx.event_register data: address: - 0/4/20 - 0/4/21type负载解码的 DPT可选参数。当设置为某个 DPT 类型时收到报文后会按该类型解码负载并将解码结果写入knx_event事件数据的value键未设置时value键为None但data键仍保存原始负载DPT 1、2、3 这类 1 字节类型尤其适合直接用原始负载。type的合法取值为 KNX sensor 类型即 Value types 表 中列出的类型名如percent、1byte_signed、2byte_float、temperature等也可以使用 DPT 编号字符串如5.001。常见类型示例DPTtype 取值大小字节取值范围单位5.001percent10 ... 100%61byte_signed1-128 ... 12772byte_unsigned20 ... 6553582byte_signed2-32768 ... 327679.001temperature2-273 ... 670760°C9.004illuminance20 ... 670760lx9.007humidity20 ... 670760%124byte_unsigned40 ... 4294967295remove注册还是注销布尔参数默认false。设为true时动作改为将指定组地址从过滤器中移除之后发往该地址的报文不再产生knx_event事件。配合自动化条件即可实现仅在特定时间段监听action: knx.event_register data: address: 0/4/20 remove: true完整自动化示例Home Assistant 启动时注册组地址以下自动化在 Home Assistant 启动时注册一个卷帘移动组地址使该地址的报文触发knx_event供后续动作使用。配置取自原动作文档的示例automation: alias: Register KNX event on startup triggers: - trigger: homeassistant event: start actions: - action: knx.event_register data: # Cover move trigger address: 0/4/20此模式非常适合蓝图blueprint创作者蓝图可以在安装或初始化阶段动态注册所需的组地址而不要求用户在configuration.yaml中手工维护event列表。这也是该动作的主要设计意图之一。消费knx_event事件数据注册成功后可在自动化中以事件触发的方式消费knx_event。例如结合type: 2byte_float注册后触发数据中可同时取到trigger.event.data原始负载与trigger.event.value解码后的值。事件数据中的destination、source、direction、telegramtype字段可用于在动作中进一步分流处理。若你的目标是收到某地址的报文就执行某动作更轻量的做法是直接使用knx.telegram触发器配置与触发数据说明见 KNX 集成 Telegram trigger 章节- alias: Single group address trigger triggers: - trigger: knx.telegram destination: 1/2/3 group_value_read: false outgoing: false conditions: {{ trigger.value 0 }} actions: []knx.telegram触发器提供trigger.destination、trigger.source、trigger.value、trigger.payload、trigger.telegramtype等丰富的触发数据且无需先经过事件过滤器注册。注意事项与边界event键配置的地址无法移除凡在configuration.yaml的knx: event:下配置的组地址始终处于激活状态remove: true对它们无效。无 targets 支持该动作不针对区域、设备、实体或标签执行UI 中不会出现相关选择器。管理员权限限制只有管理员用户可以运行该动作。优先使用触发器如需在自动化中响应报文官方建议优先使用 knx.telegram 触发器knx.event_register更适用于蓝图作者与临时按需监听的场景。历史演进knx.event_register服务自 Home Assistant 2021.2 版本加入见发布说明在 core-2026.6 中修复了该动作吞掉异常的问题见更新日志使用时应保持 Home Assistant 处于较新版本。相关动作knx.event_register属于 KNX 集成动作家族与之配套的还有knx.send向 KNX 总线发送报文写入。knx.read向 KNX 总线发送 GroupValueRead 读请求配合knx.telegram触发器可主动刷新实体状态。knx.exposure_register动态注册暴露配置将 Home Assistant 实体状态、属性或时间广播到 KNX 总线。实际使用中knx.read读回的响应与knx.event_register注册的地址报文都会以knx_event/ 触发器形式进入事件流两者常搭配使用以构建按需轮询 被动监听的混合方案。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表