MQTT 阀门
mqtt
阀门平台允许您控制一个 MQTT 阀门(例如气体或水阀)。
配置
一个阀门实体可以具有以下状态:open
、opening
、closed
或 closing
。
根据状态控制的阀门
如果配置了 state_topic
,则实体的状态仅在接收到对应 state_topic
的 MQTT 消息后更新,该消息必须与 state_open
、state_opening
、state_closed
或 state_closing
匹配。通过 payload_open
、payload_closed
和 payload_stop
配置的命令将发布到 command_topic
来控制阀门。
要在您的安装中使用 MQTT 阀门,请将以下内容添加到您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中:
# 示例 configuration.yaml 条目,用于通过打开或关闭命令设置的阀门
mqtt:
- valve:
command_topic: "home-assistant/valve/set"
state_topic: "home-assistant/valve/state"
根据位置控制的阀门
如果阀门支持报告其位置(reports_position
配置选项设置为 true
),则在 state_topic
上预期接收到数字状态,但仍允许状态更新为 state_opening
和 state_closing
。此外,还支持 JSON 格式。这允许同时报告 state
和 position
。
JSON 状态更新示例:
{"state": "opening", "position": 10}
当调用 valve.open
、value.close
或 value.set_position
时,所需的位置值或 payload_stop
将发布到 command_topic
来控制阀门。
要在您的安装中使用 MQTT 阀门,请将以下内容添加到您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中:
# 示例 configuration.yaml 条目,用于报告位置的阀门
mqtt:
- valve:
command_topic: "home-assistant/valve/set"
state_topic: "home-assistant/valve/state"
reports_position: true
乐观操作
如果未定义 state_topic
,则阀门将在乐观模式中工作。在此模式下,阀门将在 Home Assistant 每发送一个命令后立即更改状态(open
或 closed
)。它不会等待设备的更新。即使定义了 state_topic
,也可以通过将 optimistic
设置为 true
来强制启用乐观模式。如果您遇到阀门操作不正确,请尝试启用它。
Configuration Variables
订阅以接收可用性(在线/离线)更新的 MQTT 主题列表。不得与 availability_topic
一起使用。
当配置了 availability
时,这控制设置实体为 available
所需的条件。有效条目有 all
、any
和 latest
。如果设置为 all
,则必须在所有配置的可用主题上接收到 payload_available
,实体才会标记为在线。如果设置为 any
,则在至少一个配置的可用主题上接收到 payload_available
时,实体才会标记为在线。如果设置为 latest
,则最后在任何配置的可用主题上接收到的 payload_available
或 payload_not_available
控制可用性。
Defines a template to extract the device’s availability from the availability_topic
. To determine the devices’s availability, the result of this template will be compared to payload_available
and payload_not_available
.
订阅以接收来自 MQTT 阀门设备的出生和 LWT 消息的 MQTT 主题。如果未定义 availability
主题,则阀门可用性状态将始终为 available
。如果定义了 availability
主题,则阀门可用性状态默认为 unavailable
。不得与 availability
一起使用。
Defines a template to generate the payload to send to command_topic
.
发布命令以控制阀门的 MQTT 主题。发送的值可以是由 payload_open
、payload_close
或 payload_stop
定义的值。如果 reports_position
设置为 true
,则将发布数字值。
设备与外部世界的连接列表,以元组 [connection_type, connection_identifier]
列表形式表示。例如,网络接口的 MAC 地址: "connections": [["mac", "02:5b:26:a8:dc:12"]]
。
设置 设备的类别,更改在前端显示的设备状态和图标。device_class
可以为 null
。
实体的 类别。
Defines a template to extract the JSON dictionary from messages received on the json_attributes_topic
. A usage example can be found in the MQTT sensor documentation.
订阅以接收 JSON 字典有效负载的 MQTT 主题,然后将其设置为传感器属性。用法示例可以在 MQTT 传感器 文档中找到。
关闭阀门的命令有效负载。仅在 reports_position
设置为 false
(默认)时使用。如果 reports_position
设置为 true
,则不允许使用 payload_close
。可以设置为 null
以禁用阀门的关闭选项。
打开阀门的命令有效负载。仅在 reports_position
设置为 false
(默认)时使用。如果 reports_position
设置为 true
,则不允许使用 payload_open
。可以设置为 null
以禁用阀门的打开选项。
必须为 valve
。仅在 MQTT 自动发现设备消息 中允许并且是必需的。
表示关闭位置的数字。当执行操作时,阀门的位置将缩放到(position_closed
…position_open
)范围内,并在接收到值时缩放回来。
表示打开位置的数字。当执行操作时,阀门的位置将缩放到(position_closed
…position_open
)范围内,并在接收到值时缩放回来。
如果值报告位置或支持设定位置则设置为 true
。启用 reports_position
选项将导致位置被发布,而不是由 payload_open
、payload_close
或 payload_stop
定义的有效负载。在接收消息时,state_topic
将接受数字有效负载或以下状态消息之一:open
、opening
、closed
或 closing
。
订阅以接收阀门状态消息的 MQTT 主题。状态主题接受状态有效负载(open
、opening
、closed
或 closing
),或者如果支持 reports_position
,则接受表示位置的数字值。在包含变量 state
和 position
的 JSON 格式中,这两个值可以一起接收。状态值为 “None” 将重置为 unknown
状态。空字符串将被忽略。
Defines a template that can be used to extract the payload for the state_topic
topic. The rendered value should be a defined state payload or, if reporting a position
is supported and reports_position
is set to true
, a numeric value is expected representing the position. See also state_topic
.
MQTT 阀门期望位置值在 0 到 100 的范围内,其中 0 表示关闭位置,100 表示完全打开位置。
如果 position_open
或 position_closed
设置为不同的范围(例如,40 到 140),则在向设备发送命令时,范围将调整为设备范围。例如,位置 0 将发送值 40 到设备。当设备接收到位置有效负载时,它将调整回 0 到 100 的范围。在我们的示例中,设备值 40 将报告阀门位置 0。
position_open
和 position_closed
也可以用于反转设备的方向:如果将 position_closed
设置为 100 且将 position_open
设置为 0,则设备操作将被反转。例如,当将位置设置为 40 时,将向设备发送值 60。
示例
本节提供了一些展示如何使用此平台的示例。
不报告位置的阀门的完整配置
下面的示例显示了一个不报告位置的阀门的完整配置。
# 示例 configuration.yaml 条目
mqtt:
- valve:
name: "MQTT 阀门"
command_template: '{"x": {{ value }} }'
command_topic: "home-assistant/valve/set"
state_topic: "home-assistant/valve/state"
availability:
- topic: "home-assistant/valve/availability"
qos: 0
reports_position: false
retain: true
payload_open: "OPEN"
payload_close: "CLOSE"
payload_stop: "STOP"
state_open: "open"
state_opening: "opening"
state_closed: "closed"
state_closing: "closing"
payload_available: "online"
payload_not_available: "offline"
optimistic: false
value_template: "{{ value_json.x }}"
报告位置的阀门的示例配置
下面的示例显示了一个使用 JSON 消息报告位置的阀门的示例配置。
# 示例 configuration.yaml 条目
mqtt:
- valve:
name: "MQTT 阀门"
command_template: '{"x": {{ value }} }'
command_topic: "home-assistant/valve/set"
state_topic: "home-assistant/valve/state"
availability:
- topic: "home-assistant/valve/availability"
reports_position: true
value_template: "{{ value_json.x }}"
禁用阀门命令的配置
下面的示例显示了一个没有关闭命令的阀门的配置。
将 payload_close
设置为空或 null
将禁用关闭命令,并不显示关闭按钮。
# 示例 configuration.yaml 条目
mqtt:
- valve:
payload_open: "on"
payload_close:
payload_stop: "on"
如果设置了 command_topic
,MQTT 阀门将支持 open
和 close
命令。如果设置了 payload_stop
,MQTT 阀门支持 stop
。
测试您的配置
要测试,可以使用随 mosquitto
附带的命令行工具 mosquitto_pub
或 mosquitto-clients
包发送 MQTT 消息。这使您能够手动操作阀门:
mosquitto_pub -h 127.0.0.1 -t home-assistant/valve/set -m "CLOSE"