Home Assistant允许您控制 MQTT 窗帘/卷帘(如百叶窗、卷帘或车库门)。
在理想情况下,MQTT 设备将有一个状态主题,用于发布状态更改。如果这些消息以设置标志进行发布,遮盖将在订阅后立即接收到状态更新,并且在 Home Assistant 启动时会显示正确的状态。否则,在 Home Assistant 中显示的初始状态将是未知(unknown)。
窗帘/卷帘的相对位置存储在一个属性中,其中 0 表示设备关闭,所有其他中间位置表示设备处于打开状态。
如果没有定义状态主题,遮阳将在即时更新模式下工作。在此模式下,窗帘/卷帘将在 Home Assistant 发送的每个命令后立即更改状态(打开或关闭)。如果定义了状态主题,窗帘/卷帘将等待匹配或者之前的消息,然后在 Home Assistant 中更改状态。
即使定义了状态主题,也可以强制使用即时更新模式。如果您遇到窗帘/卷帘操作不正确的情况,请尝试启用它。
还可选择支持 MQTT 窗帘/卷帘设备的在线和离线消息(birth 和 LWT 消息)。在正常操作期间,如果 MQTT 窗帘/卷帘设备脱机(即发布到某个主题),Home Assistant 将显示窗帘/卷帘为“不可用”。如果使用设置标志发布这些消息,窗帘/卷帘将在订阅后立即更新,并且 Home Assistant 启动时将显示窗帘/卷帘的正确可用性状态。如果不设置标志,Home Assistant 启动时将显示窗帘/卷帘为“不可用”。
要在您的安装中使用 MQTT 窗帘/卷帘,请将以下内容添加到您的 configuration.yaml 文件中:
# 示例 configuration.yaml 条目
cover:
- platform: mqtt
name: "MQTT 窗帘"
command_topic: "home-assistant/cover/set"
配置变量:
name
(可选):窗帘的名称。默认为 "MQTT 窗帘"。command_topic
(可选):用于发布命令以控制窗帘/卷帘状态的 MQTT 主题。payload_open
(可选):打开窗帘/卷帘的有效载荷。默认为 "OPEN"。payload_close
(可选):关闭窗帘/卷帘的有效载荷。默认为 "CLOSE"。payload_stop
(可选):停止窗帘/卷帘的有效载荷。默认为 "STOP"。state_topic
(可选):订阅以接收窗帘/卷帘状态消息的 MQTT 主题。state_open
(可选):表示打开状态的有效载荷。默认为 "open"。state_closed
(可选):表示关闭状态的有效载荷。默认为 "closed"。availability_topic
(可选):订阅以接收来自 MQTT 窗帘/卷帘设备的出生和 LWT 消息的 MQTT 主题。如果未定义,窗帘/卷帘的可用性状态将始终为 "available"。如果已定义,窗帘/卷帘的可用性状态将默认为 "unavailable"。payload_available
(可选):表示在线状态的有效载荷。默认为 "online"。payload_not_available
(可选):表示离线状态的有效载荷。默认为 "offline"。optimistic
(可选):定义窗帘/卷帘是否以即时更新模式工作的标志。默认情况下,如果未定义状态主题,则为 true;否则为 false。qos
(可选):在接收和发布消息时使用的最大 QoS 级别。默认为 0。retain
(可选):定义发布的消息是否应设置保留标志。默认为 false。value_template
(可选):定义从有效载荷中提取值的模板。set_position_topic
(可选):发布位置命令的 MQTT 主题。set_position_template
(可选):定义要发送到主题的位置的模板。传入的位置值可以在模板中使用{{ value }}
。如果未定义模板,则将数字位置(0-100)直接写入主题。tilt_command_topic
(可选):发布命令以控制窗帘/卷帘倾斜的 MQTT 主题。tilt_status_topic
(可选):订阅以接收倾斜状态更新值的 MQTT 主题。tilt_min
(可选):最小倾斜值。默认
为 0。
tilt_max
(可选):最大倾斜值。默认为 100。tilt_closed_value
(可选):在命令上发送的值。默认为 0。tilt_opened_value
(可选):在命令上发送的值。默认为 100。tilt_status_optimistic
(可选):确定倾斜是否以即时更新模式工作的标志。默认情况下,如果未定义,则为 false;否则为 true。tilt_invert_state
(可选):确定打开/关闭是否被翻转;较高的值表示关闭,较低的值表示打开。默认为 False。
示例:
# 完整配置示例(无倾斜)
cover:
- platform: mqtt
name: "MQTT 窗帘/卷帘" # 设备的名称
command_topic: "home-assistant/cover/set" # 用于发布窗帘/卷帘命令的 MQTT 主题
state_topic: "home-assistant/cover/state" # 订阅以接收窗帘/卷帘状态消息的 MQTT 主题
availability_topic: "home-assistant/cover/availability" # 订阅来自 MQTT 窗帘/卷帘设备的出生和 LWT 消息的 MQTT 主题
qos: 0 # 接收和发布消息时使用的最大 QoS 级别
retain: true # 定义发布的消息是否应设置保留标志
payload_open: "OPEN" # 打开窗帘/卷帘的有效载荷
payload_close: "CLOSE" # 关闭窗帘/卷帘的有效载荷
payload_stop: "STOP" # 停止窗帘/卷帘的有效载荷
state_open: "open" # 表示打开状态的有效载荷
state_closed: "closed" # 表示关闭状态的有效载荷
payload_available: "online" # 表示在线状态的有效载荷
payload_not_available: "offline" # 表示离线状态的有效载荷
optimistic: false # 定义窗帘/卷帘是否以即时更新模式工作的标志
value_template: '{{ value.x }}' # 从有效载荷中提取值的模板
# 完整配置示例
cover:
- platform: mqtt
name: "MQTT 窗帘" # 设备的名称
command_topic: "home-assistant/cover/set" # 用于发布窗帘/卷帘命令的 MQTT 主题
state_topic: "home-assistant/cover/state" # 订阅以接收窗帘/卷帘状态消息的 MQTT 主题
availability_topic: "home-assistant/cover/availability" # 订阅来自 MQTT 窗帘/卷帘设备的出生和 LWT 消息的 MQTT 主题
qos: 0 # 接收和发布消息时使用的最大 QoS 级别
retain: true # 定义发布的消息是否应设置保留标志
payload_open: "OPEN" # 打开窗帘/卷帘的有效载荷
payload_close: "CLOSE" # 关闭窗帘/卷帘的有效载荷
payload_stop: "STOP" # 停止窗帘/卷帘的有效载荷
state_open: "open" # 表示打开状态的有效载荷
state_closed: "closed" # 表示关闭状态的有效载荷
payload_available: "online" # 表示在线状态的有效载荷
payload_not_available: "offline" # 表示离线状态的有效载荷
optimistic: false # 定义窗帘/卷帘是否以即时更新模式工作的标志
value_template: '{{ value.x }}' # 从有效载荷中提取值的模板
tilt_command_topic: 'home-assistant/cover/tilt' # 用于发布窗帘/卷帘倾斜命令的 MQTT 主题
tilt_status_topic: 'home-assistant/cover/tilt-state' # 订阅以接收窗帘/卷帘倾斜状态消息的 MQTT 主题
tilt_min: 0 # 最小倾斜值
tilt_max: 180 # 最大倾斜值
tilt_closed_value: 70 # 关闭状态的倾斜值
tilt_opened_value: 180 # 打开状态的倾斜值
为了进行测试,您可以使用附带的命令行工具或包发送 MQTT 消息,这将允许您手动操作您的窗帘/卷帘:
$ mosquitto_pub -h 127.0.0.1 -t home-assistant/cover/set -m "CLOSE"
这条命令用于关闭窗帘/卷帘。