MQTT传感器
这个mqtt
传感器平台使用MQTT消息有效负载作为传感器值。如果消息中的消息state_topic
与之出版保持标志,该传感器将获得带有最后已知值的即时更新。否则,初始状态将不确定。
配置
要在安装中使用MQTT传感器,请将以下内容添加到您的configuration.yaml
文件:
#示例Configuration.yaml条目传感器:-平台:mqttstate_topic:“家庭/卧室/温度”
配置变量
MQTT主题列表订阅以接收可用性(在线/离线)更新。不得一起使用availability_topic
。
什么时候可用性
已配置,这控制了将实体设置为可用的
。有效的条目是全部
,,,,任何
, 和最新的
。如果设置为全部
,,,,payload_available
在实体被标记为在线之前,必须在所有配置的可用性主题上收到。如果设置为任何
,,,,payload_available
在实体被标记为在线之前,必须在至少一个配置的可用性主题上收到。如果设置为最新的
, 最后payload_available
或者payload_not_available
在任何配置的可用性主题上都收到了可用性。
定义a模板从中提取设备的可用性availability_topic
。为了确定设备的可用性结果,将与payload_available
和payload_not_available
。
该设备与外界的连接列表作为元组列表[Connection_Type,Connection_Identifier]
。例如,网络接口的MAC地址:“连接”:[[“ Mac”,“ 02:5b:26:A8:DC:12”]]
。
这类型/类传感器将图标设置在前端。
这类别实体。
定义a模板提取last_reset。可用变量:ENTITY_ID
。这ENTITY_ID
可用于引用实体的属性。
这state_class传感器。
例子
在本节中,您可以找到一些如何使用此传感器的现实示例。
JSON属性主题配置
下面的示例传感器显示了使用JSON dict的配置示例:{“ clientname”:
在一个单独的主题中home/sensor1/属性
添加额外的属性。它还利用可用性
话题。
额外的属性将显示在前端,也可以提取模板。例如,提取客户名称
从下面的传感器中属性,使用类似的模板:{{state_attr('sensor.bs_rssi','clientname')}}}}
。
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“RSSI”state_topic:“主页/传感器1/infojson”测量单位:“DBM”value_template:“{{{value_json.rssi}}””可用性:-话题:“主页/传感器1/状态”payload_available:“在线的”payload_not_available:“离线”JSON_ATTRIBUTES_TOPIC:“主页/传感器1/属性”
JSON属性模板配置
下面的示例传感器显示了使用JSON dict的配置示例:{“ Timer1”:{“ ARM”:
关于主题电视/索诺夫/传感器
带有一个模板timer1.arm
和timer1.Time
作为额外属性。而是只添加timer1.arm
作为额外属性,更改JSON_ATTRIBUTES_TEMPLATE
至:“ {{{{'arm':value_json.timer1} | tojson}}}”
。
额外的属性将显示在前端,也可以提取模板。例如,提取手臂
从下面的传感器中属性,使用类似的模板:{{state_attr('sensor.timer1','arm')}}}}
。
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“计时器1“state_topic:“电视/索诺夫/传感器”value_template:“{{{value_json.timer1.arm}}””JSON_ATTRIBUTES_TOPIC:“电视/索诺夫/传感器”JSON_ATTRIBUTES_TEMPLATE:“{{{value_json.timer1|托森}}””-平台:mqtt姓名:“计时器2“state_topic:“电视/索诺夫/传感器”value_template:“{{{value_json.timer2.arm}}””JSON_ATTRIBUTES_TOPIC:“电视/索诺夫/传感器”JSON_ATTRIBUTES_TEMPLATE:“{{{value_json.timer2|托森}}””
通过设计的状态和传感器的属性,如果它们共享相同的MQTT主题,则不会以同步方式更新。如果状态和属性通过相同的MQTT消息同时更改状态和属性,则状态和属性数据之间的时间不匹配。触发传感器任何状态变化的自动化也将触发状态变化或属性的变化。如果状态和属性都会改变,则此类自动化将两次触发。请使用MQTT触发器并直接通过{{trigger.payload_json}}
触发数据对于必须同步处理同一MQTT消息中多个JSON值的自动化。
在模板中使用Entity_id
下面的示例显示了如何通过添加新值的90%和上一个值的10%来计算值的简单过滤器如何在模板中实现。
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“温度1“state_topic:“传感器/温度”value_template:| -{%如果状态(entity_id)== none%}{{值|(2)}}}{% 别的 %}{{值|(2) * 0.9 +状态(ENTITY_ID) * 0.1}}}{% 万一 %}
OwnTracks电池电量传感器
如果您正在使用owntracks并启用电池水平的报告,然后可以使用MQTT传感器跟踪电池。来自OwnTracks的常规MQTT消息看起来像这样:
OwnerTracks/平板电脑/平板电脑{“_类型”:“地点”,,,,“隆”:7.21,“ T”:“你”,,,,“巴特”:92,“ TST”:144995643,“ tid”:“ ta”,,,,“ ACC”:27,“ lat”:46.12}
因此,诀窍是从有效载荷中提取电池水平。
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“电池药片”state_topic:“owntracks/平板电脑/平板电脑”测量单位:“%”value_template:“{{{value_json.batt}}””
温度和湿度传感器
如果您使用的是DHT传感器和Nodemcu板(ESP8266),则可以使用MQTT传感器检索温度和湿度。可以找到一个代码示例这里。此示例中的常规MQTT消息看起来像这样:
办公室/传感器1{“温度”:23.20,,,,“湿度”:43.70}
然后使用此配置示例从有效载荷中提取数据:
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“温度”state_topic:“Office/Sensor1”测量单位:“°C”value_template:“{{{value_json.temperature}}””-平台:mqtt姓名:“湿度”state_topic:“Office/Sensor1”测量单位:“%”value_template:“{{{value_json.humity}}””
从具有特别的设备中获取传感器值
假设您已经用特别是。在“配置”下为您的设备设置一个名称(“单位名称:”)(在这里是“浴室”)。有一个带有协议“ OpenHAB MQTT”的MQTT的“控制器”,并且对条目(“控制器订阅:”和“控制器发布:”)进行了调整以符合您的需求。在此示例中,主题的前缀为“家庭”。请记住,特别的默认主题以一个/
并且仅在编写您的条目时才包含名称configuration.yaml
文件。
- 控制器订阅:
主页/%sysname%/#
(代替/%sysname%/#
) - 控制器发布:
home/%sysname%/%tskname%/%valname%
(代替/%sysname%/%tskname%/%valname%
)
另外,在“设备”中添加一个传感器点击,名称为“模拟”和“亮度”为值。
该单元在线后,您将获得传感器的状态。
家庭/浴室/状态连接...家庭/浴室/模拟/亮度290.00
配置看起来像以下示例:
#示例Configuration.yaml条目传感器:-平台:mqtt姓名:“亮度”state_topic:“家庭/浴室/模拟/亮度”