MQTT 热水器
mqtt
热水器平台允许您控制支持 MQTT 的热水器设备。
配置
要在您的安装中启用此热水器平台,请首先将以下内容添加到您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中:
# 示例 configuration.yaml 条目
mqtt:
- water_heater:
name: Boiler
mode_command_topic: "basement/boiler/mode/set"
Configuration Variables
订阅以接收可用性(在线/离线)更新的 MQTT 主题列表。不得与 availability_topic
一起使用。
当配置了 availability
时,这将控制所需的条件以将实体设置为 可用
。有效条目是 all
、any
和 latest
。如果设置为 all
,则必须在所有配置的可用主题上收到 payload_available
,实体才会被标记为在线。如果设置为 any
,则必须在至少一个配置的可用主题上收到 payload_available
,实体才会被标记为在线。如果设置为 latest
,则在任何配置的可用主题上收到的最后 payload_available
或 payload_not_available
控制可用性。
Defines a template to extract device’s availability from the availability_topic
. To determine the devices’s availability result of this template will be compared to payload_available
and payload_not_available
.
一个模板,通过该模板将渲染在 current_temperature_topic
上接收到的值。
设备与外部世界的连接列表,以元组 [connection_type, connection_identifier]
的列表形式表示。例如网络接口的 MAC 地址:"connections": [["mac", "02:5b:26:a8:dc:12"]]
。
实体的 类别。
Defines a template to extract the JSON dictionary from messages received on the json_attributes_topic
. Usage example can be found in MQTT sensor documentation.
订阅以接收 JSON 字典有效载荷并将其设置为传感器属性的 MQTT 主题。用法示例可以在 MQTT 传感器 文档中找到。
渲染发送到 mode_command_topic
的值的模板。
渲染在 mode_state_topic
上接收到的值的模板。
订阅以获取热水器操作模式更改的 MQTT 主题。如果未设置此项,操作模式将在乐观模式下工作(见下文)。接收到的 “None” 有效载荷将重置为 unknown
状态。空有效载荷将被忽略。
支持的模式列表。需要是默认值的子集。
[“off”, “eco”, “electric”, “gas”, “heat_pump”, “high_demand”, “performance”]
必须为 water_heater
。仅在 MQTT 自动发现设备消息 中允许和要求。
渲染发送到 power_command_topic
的值的模板。value
参数是为 payload_on
或 payload_off
设置的有效载荷。
用于发布命令以更改热水器电源状态的 MQTT 主题。如果通过 water_heater.turn_on
打开热水器,将发送使用 payload_on
配置的有效载荷;如果通过 water_heater.turn_off
关闭热水器,将发送使用 payload_off
配置的有效载荷。请注意,通过 water_heater.turn_on
和 water_heater.turn_off
操作不支持乐观模式。调用这些操作将向设备发送电源命令,但不会乐观更新热水器的状态。热水器设备应通过 mode_state_topic
报告其状态。
渲染发送到 temperature_command_topic
的值的模板。
渲染在 temperature_state_topic
上接收到的值的模板。
订阅目标温度更改的 MQTT 主题。如果未设置此项,则目标温度将在乐观模式下工作(见下文)。接收到的 "None"
值将重置目标温度。空值 ('''
) 将被忽略。
唯一标识此热水器设备的 ID。如果两个热水器设备具有相同的唯一 ID,Home Assistant 将引发异常。在基于设备的发现中使用时为必需。
默认模板,用于在 所有 *_state_topic
上渲染有效载荷。
乐观模式
如果某个属性在 乐观模式 下工作(当相应的状态主题未设置时),Home Assistant 将假设发布到命令主题的任何状态更改都能生效,并在发布到命令主题后立即更改 entity实体表示 Home Assistant 中的传感器、执行器或功能。实体用于监控物理属性或控制其他实体。实体通常是设备或服务的一部分。 [Learn more] 的内部状态。如果它不在乐观模式下工作,entity实体表示 Home Assistant 中的传感器、执行器或功能。实体用于监控物理属性或控制其他实体。实体通常是设备或服务的一部分。 [Learn more] 的内部状态仅在设备通过状态主题确认所请求的更新时更新。您可以通过将 optimistic
选项设置为 true
来强制启用乐观模式。当设置时,即使定义了状态主题,内部状态也将始终更新。
使用模板
对于所有 *_state_topic
,可以指定一个模板,该模板将用于渲染这些主题上的传入有效载荷。此外,可以将适用于所有状态主题的默认模板指定为 value_template
。如果您接收到的有效载荷例如是 JSON 格式,这可能会很有用。由于在 JSON 中,带引号的字符串(例如,"foo"
)只是字符串,因此这也可以用于去引号。
假设您通过 mode_state_topic
接收到的操作模式是 "off"
,但模式实际上仅称为 off
,您可以这样做:
mqtt:
- water_heater:
name: Boiler
modes:
- "off"
- "eco"
- "performance"
mode_command_topic: "basement/boiler/mode/set"
mode_state_topic: "basement/boiler/mode/state"
mode_state_template: "{{ value_json }}"
这将解析传入的 "off"
,结果为 off
。显然,在这种情况下,您也可以只设置 value_template: "{{ value_json }}"
。
同样,对于 *_command_topic
,可以指定一个模板来渲染这些主题上的传出有效载荷。
示例
完整的配置示例如下所示。
# 完整的 configuration.yaml 示例条目
mqtt:
- water_heater:
name: Boiler
modes:
- "off"
- "eco"
- "performance"
mode_state_topic: "basement/boiler/mode"
mode_command_topic: "basement/boiler/mode/set"
mode_command_template: "{{ value if value=="off" else "on" }}"
temperature_state_topic: "basement/boiler/temperature"
temperature_command_topic: "basement/boiler/temperature/set"
current_temperature_topic: "basement/boiler/current_temperature"
precision: 1.0