模板热水器
template 热水器平台允许您仅用几个动作和 lambda 创建简单的热水器。定义后,它将自动在 Home Assistant 中显示为热水器实体,并可通过前端控制。
# 示例配置water_heater: - platform: template name: "模板锅炉" id: my_boiler
# 读取当前温度的 lambda(例如从传感器) current_temperature: !lambda 'return id(my_sensor).state;'
# 读取目标温度的 lambda(可选) target_temperature: !lambda 'return id(my_target_temp_sensor).state;'
# 读取当前操作模式的 lambda(可选) mode: !lambda 'return water_heater::WATER_HEATER_MODE_ECO;'
# 读取离开模式状态的 lambda(可选) away: !lambda "return id(vacation_mode).state;"
# 读取当前开/关状态的 lambda(可选) is_on: !lambda 'return id(my_relay).state;'
optimistic: true
# UI 中显示的模式列表(可选) supported_modes: - "OFF" - ECO - GAS
visual: min_temperature: 10.0 max_temperature: 85.0 target_temperature_step: 0.5
set_action: - lambda: |- ESP_LOGI("boiler", "新模式: %d", id(my_boiler).get_mode()); ESP_LOGI("boiler", "新目标温度: %.1f", id(my_boiler).get_target_temperature()); ESP_LOGI("boiler", "开: %s, 离开: %s", YESNO(id(my_boiler).is_on()), YESNO(id(my_boiler).is_away()));lambda 的可能返回值:
current_temperature:返回一个float(例如42.5)。target_temperature:返回一个float(例如60.0)。mode:返回一个WaterHeaterMode枚举(例如water_heater::WATER_HEATER_MODE_ECO)。away:返回一个bool(例如false)。is_on:返回一个bool(例如true)。
-
current_temperature (可选, lambda): 重复评估以获取当前水温的 lambda。期望返回浮点值。
-
target_temperature (可选, lambda): 重复评估以获取目标水温的 lambda。期望返回浮点值。
-
mode (可选, lambda): 重复评估以获取当前操作模式的 lambda。期望返回
WaterHeaterMode枚举值。 -
away (可选, lambda): 重复评估以获取当前离开模式状态的 lambda。期望返回布尔值。
-
is_on (可选, lambda): 重复评估以获取当前开/关状态的 lambda。期望返回布尔值。
-
optimistic (可选, 布尔值):是否以乐观模式运行 - 在此模式下,发送到模板热水器的任何命令都会立即更新报告状态。默认为
true。 -
set_action (可选, 动作): 当热水器收到命令(模式更改、目标温度更改、离开、开/关等)时执行的动作。这是您实现热水器实际控制逻辑的地方。
-
supported_modes (可选, 列表): 将暴露给前端(例如 Home Assistant)的操作模式静态列表。这控制报告给 Home Assistant 的
operation_list,仅影响 UI 和可用的服务调用。它不会更改运行时行为或控制逻辑。未指定时,默认显示所有支持的热水器模式。NOTE
supported_modes列表是静态的,在启动时评估。它不能动态更改,不支持模板或 lambda。 -
restore_mode (可选, 枚举):控制热水器在启动时如何尝试恢复状态。
NO_RESTORE(默认):不保存或恢复状态。RESTORE:在启动时尝试恢复状态(目标温度和模式),但不执行set_action。RESTORE_AND_CALL:在启动时尝试恢复状态并立即执行set_action。
-
来自 热水器 的所有其他选项。
water_heater.template.publish 动作
Section titled “water_heater.template.publish 动作”您还可以使用 water_heater.template.publish 动作从 YAML 文件的其他位置向模板热水器发布状态。
# 示例动作- water_heater.template.publish: id: my_boiler current_temperature: 55.0 target_temperature: 60.0 mode: ECO away: false is_on: true配置选项:
- id (*必需, ID):模板热水器的 ID。
- current_temperature (可选, 可模板化, 浮点数): 要发布的当前测量温度。
- target_temperature (可选, 可模板化, 浮点数): 要发布的目标设定点温度。
- mode (可选, 可模板化, 字符串): 要发布的操作模式。有关选项,请参阅 热水器模式。
- away (可选, 可模板化, 布尔值): 要发布的离开模式状态。
- is_on (可选, 可模板化, 布尔值): 要发布的布尔开/关状态。
NOTE
此动作也可以在 lambda 中编写:
id(my_boiler).set_current_temperature(55.0);id(my_boiler).publish_state();