尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Home Assistant fan.set_preset_mode 动作完全指南:风扇预设模式的 UI 与 YAML 配置实战

Home Assistant fan.set_preset_mode 动作完全指南:风扇预设模式的 UI 与 YAML 配置实战 Home Assistant fan.set_preset_mode 动作完全指南风扇预设模式的 UI 与 YAML 配置实战【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.iofan.set_preset_mode是 Home Assistant 中用于将风扇实体切换到命名预设模式如 low、medium、high、sleep、auto的官方动作Action。本指南以 source/_actions/fan.set_preset_mode.markdown 为骨架结合 fan 集成 与 MQTT 风扇集成 的源码级配置说明完整讲解该动作的适用场景、UI 与 YAML 两种配置方式、目标Target选取规则并给出可直接复制的自动化示例。读完本文你将能够在自动化与脚本中准确调用该动作并理解预设模式在实体背后的真实来源与限制。什么时候应该使用 fan.set_preset_mode当你的风扇提供命名模式例如 low、medium、high、sleep、auto时fan.set_preset_mode就是切换这些内置模式的正确动作。它与 fan.set_percentage直接设置原始速度百分比形成互补有命名模式可用优先用fan.set_preset_mode语义清晰、可读性好只有速度范围没有命名模式改用fan.set_percentage设置 0–100 的百分比速度打开/关闭风扇使用fan.turn_on/fan.turn_off。从 fan 集成 的说明可以看出设置预设模式Setting a preset mode是 Home Assistant 风扇平台对外提供的一项标准能力但能否使用完全取决于提供该风扇实体的集成是否实现并暴露了预设模式。预设模式从哪来由集成决定的能力边界一个关键事实是可用的预设模式并非 Home Assistant 内置的固定列表而是由提供风扇实体的集成定义的。不同设备、不同集成预设模式名称各不相同。以文档中提到的 ESPHome Speed Fan 为例其默认提供Low、Medium、High三档预设。而以 MQTT 风扇为例fan.mqtt 集成配置文档 明确要求你通过preset_modes配置项声明风扇支持的模式列表preset_modes: - auto - smart - whoosh - eco - breeze该配置项的官方说明为List of preset modes this fan is capable of running at常见示例包括auto、smart、whoosh、eco和breeze默认值为空列表[]。这从实现层面印证了文档中的提示预设模式名称因设备而异切换到不存在的模式不会生效。MQTT 风扇中与预设模式相关的底层配置如果你使用 MQTT 风扇理解下面这些配置项有助于排查fan.set_preset_mode不生效的问题详见 fan.mqtt 集成preset_mode_command_topic发布命令以切换预设模式的 MQTT 主题fan.set_preset_mode动作最终会把目标模式写入该主题preset_mode_state_topic订阅以接收预设模式状态的 MQTT 主题preset_mode_value_template从该状态主题收到的 payload 中提取preset_mode值的模板preset_mode_command_template生成发送到preset_mode_command_topic的 payload 的模板payload_reset_preset_mode当在preset_mode_state_topic收到该特殊 payload 时将preset_mode状态属性重置为unknown默认值为None。下面的完整 MQTT 风扇配置摘自 fan.mqtt 集成文档包含 10 档速度范围与 5 个预设模式展示了预设模式与百分比速度如何在一个实体上共存mqtt: - fan: name: Bedroom Fan state_topic: bedroom_fan/on/state command_topic: bedroom_fan/on/set direction_state_topic: bedroom_fan/direction/state direction_command_topic: bedroom_fan/direction/set oscillation_state_topic: bedroom_fan/oscillation/state oscillation_command_topic: bedroom_fan/oscillation/set percentage_state_topic: bedroom_fan/speed/percentage_state percentage_command_topic: bedroom_fan/speed/percentage preset_mode_state_topic: bedroom_fan/preset/preset_mode_state preset_mode_command_topic: bedroom_fan/preset/preset_mode preset_modes: - auto - smart - whoosh - eco - breeze qos: 0 payload_on: true payload_off: false payload_oscillation_on: true payload_oscillation_off: false speed_range_min: 1 speed_range_max: 10在这个示例中preset_modes中列出的每一个模式都会成为你在 UI 或 YAML 中可以传给fan.set_preset_mode的合法取值。在用户界面UI中使用如果你更习惯用可视化方式搭建自动化与脚本Home Assistant 会引导你一步步完成配置全程不需要编写 YAML见 actions/ui_header.md。操作步骤如下进入SettingsAutomations scenes打开一个现有的自动化或脚本或选择Create automationCreate new automation如果是新建自动化在When区域添加一个触发器在Then do区域选择Add action选择要控制的对象在By target目标方式见下文 目标Targets下选择要控制的风扇也可以选择区域、楼层、设备或标签在针对该目标显示的动作列表中选择Set fan preset mode在Preset mode下选择要使用的模式选择Save保存。UI 中的选项选项说明是否必填Preset mode要应用到所选风扇的预设模式必填在 YAML 中使用如果你直接编写 YAML或者想精确了解 Home Assistant 底层执行了什么本节给出完整的技术参考见 actions/yaml_header.md列出 YAML 中使用的字段名、类型以及哪些字段是必填的。在 YAML 中该动作的引用名就是fan.set_preset_mode。一个基础示例如下action: fan.set_preset_mode target: entity_id: fan.bedroom data: preset_mode: sleep这段配置将fan.bedroom切换到sleep预设模式。YAML 中的选项字段说明必填类型preset_mode要应用到所选风扇的预设模式必填字符串目标Targetsfan.set_preset_mode必须指定目标。目标是动作的作用对象你可以将动作指向单个实体、设备、区域、楼层或标签Home Assistant 会对该目标背后的每一个匹配 fan 实体执行此动作见 actions/targets.md实体Entity某个具体的 fan 实体例如fan.living_room设备Device属于某台设备的所有 fan 实体区域Area某个房间或区域内的所有 fan 实体楼层Floor某一楼层上的所有 fan 实体标签Label共享某个标签的所有 fan 实体。你还可以在同一个动作中组合不同类型的多个目标。例如同时添加一个具体实体和一个区域作为目标动作会对这两者一起执行。实战自动化示例以下示例覆盖了文档中给出的两个真实场景可直接复制到你的automations.yaml或通过 UI 导入。自动化夜间将卧室风扇设为低档如果卧室风扇使用 ESPHome Speed Fan 预设可以在就寝时间自动切换到Low获得更安静的气流。触发器Trigger时间 22:30动作ActionSet fan preset mode目标TargetBedroom fan预设模式Preset modelowYAML 完整写法automation: alias: Bedroom fan low preset triggers: - trigger: time at: 22:30:00 actions: - action: fan.set_preset_mode target: entity_id: fan.bedroom data: preset_mode: low自动化回家时将客厅风扇设为高档在温暖的天气回到家时可以将 ESPHome Speed Fan 立即切换到High快速获得更强的气流。触发器Trigger进入区域Zone entered目标TargetAlex区域ZoneHome动作ActionSet fan preset mode目标TargetLiving room fan预设模式Preset modehighYAML 完整写法automation: alias: Living room fan high preset on arrival triggers: - trigger: zone.entered target: entity_id: person.alex options: zone: zone.home actions: - action: fan.set_preset_mode target: entity_id: fan.living_room data: preset_mode: high两个示例共同展示了fan.set_preset_mode在自动化中最典型的两种触发模式时间触发与地理位置区域进入触发动作本体则始终保持目标 预设模式的简洁结构。需要了解的要点Good to know该动作仅对支持预设模式的风扇可用。如果你的风扇实体没有预设模式能力动作会执行失败或没有效果可用的预设模式来自风扇集成因此模式名称因设备而异——同一个动作在不同设备上可选的预设值可能完全不同要设置百分比速度而不是命名模式请改用 fan.set_percentage 动作。动手测试在开发者工具中立即尝试想先验证效果再写进自动化打开SettingsToolsActions开发者工具中的动作界面搜索fan.set_preset_mode填写字段后点击Perform action。你会立即看到真实实体上的状态变化全程无需编写一行 YAML见 actions/try_it.md。相关动作fan.set_preset_mode常与以下动作配合使用见 actions/related.md 的机制说明及文档 front matter 中的related_actions声明fan.turn_on打开风扇预设模式通常需要风扇处于开启状态才生效fan.set_percentage按 0–100 百分比设置风扇速度用于没有命名模式的场景。结合本文的 UI 步骤、YAML 字段参考与两个自动化示例你现在可以针对任意支持预设模式的风扇实体在界面或纯 YAML 环境中完成fan.set_preset_mode的配置与排错。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表