跳转到内容

模板热水器

template 热水器平台允许您使用几个操作和 lambdas 创建简单的热水器。一旦 定义,它将自动在 Home Assistant 中显示为热水器实体,并可通过前端进行控制。

# Example configuration entry
water_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 的所有其他选项。

您还可以从 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();