Home Assistant允许您控制支持MQTT的门锁。
在理想情况下,MQTT设备将具有一个状态主题来发布状态更改。如果这些消息以RETAIN标志发布,MQTT锁将在订阅后立即接收到状态更新,并将以正确的状态启动。否则,门锁的初始状态将为false/unlocked。
当状态主题不可用时,门锁将以即时更新模式工作。在此模式下,门锁将在每次命令后立即更改状态。否则,门锁将等待来自设备的状态确认(消息来自状态主题)。
即使状态主题可用,也可以强制启用即时更新模式。如果遇到不正确的门锁操作,请尝试启用它。
要在您的Home Assistant中启用MQTT门锁,请将以下内容添加到您的configuration.yaml
文件中:
# 示例配置.yml 条目
lock:
- platform: mqtt
command_topic: "home/frontdoor/set"
配置变量:
command_topic
(必需): 用于发布更改门锁状态的MQTT主题。name
(可选): 门锁的名称。默认为'MQTT Lock'。state_topic
(可选): 用于订阅以接收状态更新的MQTT主题。payload_lock
(可选): 表示已启用/已锁定状态的有效载荷。默认为'LOCK'。payload_unlock
(可选): 表示已禁用/已解锁状态的有效载荷。默认为'UNLOCK'。optimistic
(可选): 定义门锁是否以即时更新模式工作的标志。如果未定义状态主题,则默认为true,否则为false。qos
(可选): 状态主题的最大QoS级别。默认为0,并将用于发布消息。retain
(可选): 发布的消息是否应具有保留标志。value_template
(可选): 定义从有效载荷中提取值的模板。
请确保您的主题完全匹配。state_topic
和command_topic
应为不同的主题。
以下是一些实际使用此门锁的示例:
完整配置示例:
# 示例配置.yml 条目
# 配置MQTT门锁
lock:
- platform: mqtt # 使用MQTT平台
name: Frontdoor # 门锁的名称
state_topic: "home-assistant/frontdoor/" # 用于接收状态更新的MQTT主题
command_topic: "home-assistant/frontdoor/set" # 用于发布门锁状态更改命令的MQTT主题
payload_lock: "LOCK" # 表示已锁定状态的有效载荷
payload_unlock: "UNLOCK" # 表示已解锁状态的有效载荷
optimistic: false # 门锁是否以乐观模式工作的标志(不等待状态确认)
qos: 1 # 状态主题的最大QoS级别
retain: true # 发布的消息是否应具有保留标志
value_template: '{{ value.x }}' # 从有效载荷中提取值的模板
请注意保留消息以保持状态,这样在重新启动时不会意外解锁您的门。您可以使用随MQTT一起提供的命令行工具来检查,以手动操作门锁:
$ mosquitto_pub -h 127.0.0.1 -t home-assistant/frontdoor/set -m "LOCK"