模板热水器
template 热水器平台允许您使用几个操作和 lambdas 创建简单的热水器。一旦
定义,它将自动在 Home Assistant 中显示为热水器实体,并可通过前端进行控制。
# Example configuration entrywater_heater: - platform: template name: "Template Boiler" id: my_boiler
# Lambda to read the current temperature (e.g. from a sensor) current_temperature: !lambda 'return id(my_sensor).state;'
# Lambda to read the target temperature (optional) target_temperature: !lambda 'return id(my_target_temp_sensor).state;'
# Lambda to read the current operation mode (optional) mode: !lambda 'return water_heater::WATER_HEATER_MODE_ECO;'
# Lambda to read the away mode state (optional) away: !lambda "return id(vacation_mode).state;"
# Lambda to read the current On/Off state (optional) is_on: !lambda 'return id(my_relay).state;'
optimistic: true
# List of modes to show in the UI (optional) 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", "New mode: %d", id(my_boiler).get_mode()); ESP_LOGI("boiler", "New target temperature: %.1f", id(my_boiler).get_target_temperature()); ESP_LOGI("boiler", "On: %s, Away: %s", YESNO(id(my_boiler).is_on()), YESNO(id(my_boiler).is_away()));lambdas 的可能返回值:
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。期望返回 float 值。
-
target_temperature (可选, lambda): 重复评估以获取目标水温的 Lambda。期望返回 float 值。
-
mode (可选, lambda): 重复评估以获取当前操作模式的 Lambda。期望返回
WaterHeaterMode枚举值。 -
away (可选, lambda): 重复评估以获取当前外出模式状态的 Lambda。期望返回布尔值。
-
is_on (可选, lambda): 重复评估以获取当前开/关状态的 Lambda。期望返回布尔值。
-
optimistic (可选, boolean): 是否以乐观模式运行——在此模式下,任何发送到 模板热水器的命令将立即更新报告的状态。默认为
true。 -
set_action (可选, Action): 当热水器收到命令时执行的操作(模式变更、目标温度变更、外出、开/关等)。 这是实现热水器实际控制逻辑的地方。
-
supported_modes (可选, list): 将暴露给前端的静态操作模式列表(例如 Home Assistant)。这控制报告给 Home Assistant 的
operation_list,仅影响 UI 和可用的服务调用。它不改变运行时行为或控制逻辑。未指定时,默认显示所有支持的模式。NOTE
supported_modes列表是静态的,在启动时评估。它不能动态更改,且不支持模板或 lambdas。 -
restore_mode (可选, enum): 控制热水器在启动时如何尝试恢复状态。
NO_RESTORE(默认):不保存或恢复状态。RESTORE: 尝试在启动时恢复状态(目标温度和模式),但不执行set_action。RESTORE_AND_CALL: 尝试在启动时恢复状态,并立即执行set_action。
-
还包括 Water Heater 的所有其他选项。
water_heater.template.publish 操作
Section titled “water_heater.template.publish 操作”您还可以从 YAML 文件中的其他地方
使用 water_heater.template.publish 操作向模板热水器发布状态。
# Example action- 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 (可选, float, templatable): 要发布的当前测量温度。
- target_temperature (可选, float, templatable): 要发布的目标设定点温度。
- mode (可选, string, templatable): 要发布的操作模式。请参阅 Water Heater Modes 了解选项。
- away (可选, boolean, templatable): 要发布的外出模式状态。
- is_on (可选, boolean, templatable): 要发布的布尔开/关状态。
NOTE
此操作也可以在 lambdas 中编写:
id(my_boiler).set_current_temperature(55.0);id(my_boiler).publish_state();