Home Assistant使用MQTT消息负载作为传感器值。如果在这个消息中使用了RETAIN标志,传感器将立即接收到具有上次已知值的更新。否则,初始状态将未定义。
要在您的安装中使用MQTT传感器,请将以下内容添加到您的configuration.yaml文件中:
# 示例 configuration.yaml 条目
sensor:
- platform: mqtt
state_topic: "home/bedroom/temperature"
配置变量:
- state_topic(必填):订阅以接收传感器值的MQTT主题。
- name(可选):传感器的名称。默认为'MQTT Sensor'。
- qos(可选):状态主题的最大QoS级别。默认值为0。
- unit_of_measurement(可选):定义传感器的测量单位(如果有的话)。
- expire_after(可选):定义值在多少秒后过期(如果不进行更新)。默认为0(永不过期)。
- value_template(可选):定义从负载中提取值的模板。
示例:
在这个部分中,您将找到一些关于如何使用此传感器的实际示例。
获取电池电量:
如果您使用Owntracks并启用电池电量报告,那么您可以使用MQTT传感器来跟踪电池电量。Owntracks的常规MQTT消息如下所示:
owntracks/tablet/tablet {"_type":"location","lon":7.21,"t":"u","batt":92,"tst":144995643,"tid":"ta","acc":27,"lat":46.12}
因此,从负载中提取电池电量的关键是:
# 示例配置:获取电池电量的MQTT传感器
sensor:
- platform: mqtt # 使用MQTT传感器平台
state_topic: "owntracks/tablet/tablet" # 订阅MQTT主题以接收传感器值
name: "平板电池" # 传感器的名称
unit_of_measurement: "%" # 传感器值的单位(百分比)
value_template: '{{ value_json.batt }}' # 使用模板从负载中提取电池电量值
获取温度和湿度:
如果您使用DHT传感器和NodeMCU板(esp8266),您可以使用MQTT传感器来检索温度和湿度。您可以在此处找到代码示例。该示例生成的MQTT消息如下所示:
office/sensor1
{
"temperature": 23.20,
"humidity": 43.70
}
然后,使用以下配置示例从负载中提取数据:
# 示例配置:获取温度和湿度的MQTT传感器
sensor:
- platform: mqtt # 使用MQTT传感器平台
state_topic: 'office/sensor1' # 订阅MQTT主题以接收温度传感器值
name: '温度传感器' # 传感器的名称
unit_of_measurement: '°C' # 传感器值的单位(摄氏度)
value_template: '{{ value_json.temperature }}' # 使用模板从负载中提取温度值
- platform: mqtt # 使用MQTT传感器平台
state_topic: 'office/sensor1' # 订阅MQTT主题以接收湿度传感器值
name: '湿度传感器' # 传感器的名称
unit_of_measurement: '%' # 传感器值的单位(百分比)
value_template: '{{ value_json.humidity }}' # 使用模板从负载中提取湿度值