MQTT 开关
mqtt
开关平台让您控制支持 MQTT 的开关。
配置
在理想情况下,MQTT 设备将拥有一个 state_topic
来发布状态变化。如果这些消息使用 RETAIN
标志发布,MQTT 开关将在订阅后接收到即时状态更新,并将以正确的状态开始。否则,开关的初始状态将为 unknown
。MQTT 设备可以使用 None
负载将当前状态重置为 unknown
。
当 state_topic
不可用时,开关将在乐观模式下工作。在此模式下,每个命令后开关都会立即改变状态。否则,开关将等待来自设备的状态确认(来自 state_topic
的消息)。乐观模式下,初始状态设置为 False
/ off
。
即使 state_topic
可用,也可以强制启用乐观模式。如果您遇到开关操作不正确的情况,请尝试启用它。
要在您的安装中启用此开关,请将以下内容添加到您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中:
# 示例 configuration.yaml 条目
mqtt:
- switch:
command_topic: "home/bedroom/switch1/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
.
Defines a template to generate the payload to send to command_topic
. The switch command template accepts the parameters value
. The value
parameter will contain the configured value for either payload_on
or payload_off
.
设备与外界连接的列表,作为 [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
. Usage example can be found in MQTT sensor documentation.
订阅以接收 JSON 字典负载的 MQTT 主题,然后将其设置为传感器属性。使用示例请参见 MQTT 传感器 文档。
表示 off
状态的负载。如果指定,将用于与 state_topic
中的值进行比较(有关详细信息,请参见 value_template
和 state_off
)以及作为 off
命令发送到 command_topic
。
表示 on
状态的负载。如果指定,将用于与 state_topic
中的值进行比较(有关详细信息,请参见 value_template
和 state_on
)以及作为 on
命令发送到 command_topic
。
必须为 switch
。仅在 MQTT 自动发现设备消息 中允许和必需。
表示 off
状态的负载。用于在 state_topic
中表示 off
状态的值与应发送到 command_topic
的值不同。
payload_off
如果已定义,或 OFF
表示 on
状态的负载。用于在 state_topic
中表示 on
状态的值与应发送到 command_topic
的值不同。
payload_on
如果已定义,或 ON
订阅以接收状态更新的 MQTT 主题。“None” 负载将重置为 unknown
状态。空负载将被忽略。默认情况下,有效状态负载为 OFF
和 ON
。可以使用 payload_off
和 payload_on
配置选项覆盖接受的负载。
确保您的主题完全匹配。some-topic/
和 some-topic
是不同的主题。
示例
在本节中,您将找到一些如何使用此传感器的真实示例。
完整配置
下面的示例显示了开关的完整配置。
# 示例 configuration.yaml 条目
mqtt:
- switch:
unique_id: bedroom_switch
name: "卧室开关"
state_topic: "home/bedroom/switch1"
command_topic: "home/bedroom/switch1/set"
availability:
- topic: "home/bedroom/switch1/available"
payload_on: "ON"
payload_off: "OFF"
state_on: "ON"
state_off: "OFF"
optimistic: false
qos: 0
retain: true
为了进行检查,您可以使用随 mosquitto
附带的命令行工具 mosquitto_pub
发送 MQTT 消息。这使您能够手动操作您的开关。首先,我们可以模拟发送给开关的可用性消息:
mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1/available -m "online"
我们可以通过发布 ON
命令消息来模拟开关打开:
mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1/set -m "ON"
最后,我们可以模拟开关向 Home Assistant 报告更改的状态:
mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON"
使用 ESPEasy 设置设备状态
假设您已经用 ESPEasy
您可以使用 mosquitto_pub
或其他 MQTT 工具手动将引脚 13 设置为高:
mosquitto_pub -h 127.0.0.1 -t home/bathroom/gpio/13 -m "1"
配置将如下所示:
# 示例 configuration.yaml 条目
mqtt:
- switch:
name: 浴室
state_topic: "home/bathroom/gpio/13"
command_topic: "home/bathroom/gpio/13"
payload_on: "1"
payload_off: "0"