MQTT 阀门

mqtt 阀门平台允许您控制一个 MQTT 阀门(例如气体或水阀)。

配置

一个阀门实体可以具有以下状态:openopeningclosedclosing

根据状态控制的阀门

如果配置了 state_topic,则实体的状态仅在接收到对应 state_topic 的 MQTT 消息后更新,该消息必须与 state_openstate_openingstate_closedstate_closing 匹配。通过 payload_openpayload_closedpayload_stop 配置的命令将发布到 command_topic 来控制阀门。

要在您的安装中使用 MQTT 阀门,请将以下内容添加到您的 configuration.yamlconfiguration.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_openingstate_closing。此外,还支持 JSON 格式。这允许同时报告 stateposition

JSON 状态更新示例:

{"state": "opening", "position": 10}

当调用 valve.openvalue.closevalue.set_position 时,所需的位置值或 payload_stop 将发布到 command_topic 来控制阀门。

要在您的安装中使用 MQTT 阀门,请将以下内容添加到您的 configuration.yamlconfiguration.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 每发送一个命令后立即更改状态(openclosed)。它不会等待设备的更新。即使定义了 state_topic,也可以通过将 optimistic 设置为 true 来强制启用乐观模式。如果您遇到阀门操作不正确,请尝试启用它。

Configuration Variables

availability list (Optional)

订阅以接收可用性(在线/离线)更新的 MQTT 主题列表。不得与 availability_topic 一起使用。

payload_available string (Optional, default: online)

表示可用状态的有效负载。

payload_not_available string (Optional, default: offline)

表示不可用状态的有效负载。

topic string Required

订阅以接收可用性(在线/离线)更新的 MQTT 主题。

value_template template (Optional)

Defines a template to extract the device’s availability from the topic. To determine the devices’s availability, the result of this template will be compared to payload_available and payload_not_available.

availability_mode string (Optional, default: latest)

当配置了 availability 时,这控制设置实体为 available 所需的条件。有效条目有 allanylatest。如果设置为 all,则必须在所有配置的可用主题上接收到 payload_available,实体才会标记为在线。如果设置为 any,则在至少一个配置的可用主题上接收到 payload_available 时,实体才会标记为在线。如果设置为 latest,则最后在任何配置的可用主题上接收到的 payload_availablepayload_not_available 控制可用性。

availability_template template (Optional)

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.

availability_topic string (Optional)

订阅以接收来自 MQTT 阀门设备的出生和 LWT 消息的 MQTT 主题。如果未定义 availability 主题,则阀门可用性状态将始终为 available。如果定义了 availability 主题,则阀门可用性状态默认为 unavailable。不得与 availability 一起使用。

command_template template (Optional)

Defines a template to generate the payload to send to command_topic.

command_topic string (Optional)

发布命令以控制阀门的 MQTT 主题。发送的值可以是由 payload_openpayload_closepayload_stop 定义的值。如果 reports_position 设置为 true,则将发布数字值。

device map (Optional)

关于此阀门是其组成部分的设备的信息,以将其绑定到 设备注册表。仅在设置了 unique_id 时有效。必须存在至少一个标识符或连接以识别设备。

configuration_url string (Optional)

可以管理此设备配置的网页链接。可以是 http://https:// 或内部 homeassistant:// URL。

connections list (Optional)

设备与外部世界的连接列表,以元组 [connection_type, connection_identifier] 列表形式表示。例如,网络接口的 MAC 地址: "connections": [["mac", "02:5b:26:a8:dc:12"]]

hw_version string (Optional)

设备的硬件版本。

identifiers list | string (Optional)

唯一标识设备的 ID 列表。例如,序列号。

manufacturer string (Optional)

设备的制造商。

model string (Optional)

设备的型号。

model_id string (Optional)

设备的型号标识符。

name string (Optional)

设备的名称。

serial_number string (Optional)

设备的序列号。

suggested_area string (Optional)

如果设备尚未在某个区域中,建议一个区域。

sw_version string (Optional)

设备的固件版本。

via_device string (Optional)

路由此设备与 Home Assistant 之间消息的设备标识符。此类设备的示例包括中心或子设备的父设备。用于在 Home Assistant 中显示设备拓扑。

device_class string (Optional)

设置 设备的类别,更改在前端显示的设备状态和图标。device_class 可以为 null

enabled_by_default boolean (Optional, default: true)

定义实体在首次添加时是否应启用的标记。

encoding string (Optional, default: utf-8)

接收和发布的消息的有效负载编码。设置为 "" 以禁用传入有效负载的解码。

entity_category string (Optional)

实体的 类别

entity_picture string (Optional)

实体的图片 URL。

icon icon (Optional)

图标 用于实体。

json_attributes_template template (Optional)

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_attributes_topic string (Optional)

订阅以接收 JSON 字典有效负载的 MQTT 主题,然后将其设置为传感器属性。用法示例可以在 MQTT 传感器 文档中找到。

name string (Optional, default: MQTT 阀门)

阀门的名称。如果仅设备名称是相关的,可以设置为 null

object_id string (Optional)

用于替代 name 以自动生成 entity_id

optimistic boolean (Optional)

定义开关是否在乐观模式下工作的标志。

Default:

false 如果定义了状态或位置主题;否则为 true

payload_available string (Optional, default: online)

表示在线状态的有效负载。

payload_close string (Optional, default: CLOSE)

关闭阀门的命令有效负载。仅在 reports_position 设置为 false(默认)时使用。如果 reports_position 设置为 true,则不允许使用 payload_close。可以设置为 null 以禁用阀门的关闭选项。

payload_not_available string (Optional, default: offline)

表示离线状态的有效负载。

payload_open string (Optional, default: OPEN)

打开阀门的命令有效负载。仅在 reports_position 设置为 false(默认)时使用。如果 reports_position 设置为 true,则不允许使用 payload_open。可以设置为 null 以禁用阀门的打开选项。

payload_stop string (Optional)

停止阀门的命令有效负载。未配置时,阀门将不支持 valve.stop 动作。

platform string Required

必须为 valve。仅在 MQTT 自动发现设备消息 中允许并且是必需的。

position_closed integer (Optional, default: 0)

表示关闭位置的数字。当执行操作时,阀门的位置将缩放到(position_closedposition_open)范围内,并在接收到值时缩放回来。

position_open integer (Optional, default: 100)

表示打开位置的数字。当执行操作时,阀门的位置将缩放到(position_closedposition_open)范围内,并在接收到值时缩放回来。

qos integer (Optional, default: 0)

接收和发布消息时使用的最大 QoS 级别。

reports_position boolean (Optional, default: false)

如果值报告位置或支持设定位置则设置为 true。启用 reports_position 选项将导致位置被发布,而不是由 payload_openpayload_closepayload_stop 定义的有效负载。在接收消息时,state_topic 将接受数字有效负载或以下状态消息之一:openopeningclosedclosing

retain boolean (Optional, default: false)

定义发布的消息是否应设置保持标志。

state_closed string (Optional, default: closed)

表示关闭状态的有效负载。仅在 reports_position 设置为 False(默认)时允许。

state_closing string (Optional, default: closing)

表示关闭状态的有效负载。

state_open string (Optional, default: open)

表示打开状态的有效负载。仅在 reports_position 设置为 False(默认)时允许。

state_opening string (Optional, default: opening)

表示正在打开状态的有效负载。

state_topic string (Optional)

订阅以接收阀门状态消息的 MQTT 主题。状态主题接受状态有效负载(openopeningclosedclosing),或者如果支持 reports_position,则接受表示位置的数字值。在包含变量 stateposition 的 JSON 格式中,这两个值可以一起接收。状态值为 “None” 将重置为 unknown 状态。空字符串将被忽略。

unique_id string (Optional)

唯一标识该阀门的 ID。如果两个阀门具有相同的唯一 ID,Home Assistant 将引发异常。在使用基于设备的发现时是必需的。

value_template template (Optional)

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.

Note

MQTT 阀门期望位置值在 0 到 100 的范围内,其中 0 表示关闭位置,100 表示完全打开位置。 如果 position_openposition_closed 设置为不同的范围(例如,40 到 140),则在向设备发送命令时,范围将调整为设备范围。例如,位置 0 将发送值 40 到设备。当设备接收到位置有效负载时,它将调整回 0 到 100 的范围。在我们的示例中,设备值 40 将报告阀门位置 0。 position_openposition_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 阀门将支持 openclose 命令。如果设置了 payload_stop,MQTT 阀门支持 stop

测试您的配置

要测试,可以使用随 mosquitto 附带的命令行工具 mosquitto_pubmosquitto-clients 包发送 MQTT 消息。这使您能够手动操作阀门:

mosquitto_pub -h 127.0.0.1 -t home-assistant/valve/set -m "CLOSE"