MQTT传感器


这个mqtt传感器平台使用MQTT消息有效负载作为传感器值。如果消息中的消息state_topic与之出版保持标志,该传感器将获得带有最后已知值的即时更新。否则,初始状态将不确定。

配置

要在安装中使用MQTT传感器,请将以下内容添加到您的configuration.yaml文件:

#示例Configuration.yaml条目传感器-平台mqttstate_topic家庭/卧室/温度”

配置变量

可用性 列表 ((可选的

MQTT主题列表订阅以接收可用性(在线/离线)更新。不得一起使用availability_topic

payload_available 细绳 ((可选的,默认:在线

代表可用状态的有效载荷。

payload_not_available 细绳 ((可选的,默认:离线

代表不可用状态的有效载荷。

话题 细绳 必需的

MQTT主题订阅以接收可用性(在线/离线)更新。

value_template 模板 ((可选的

定义a模板从中提取设备的可用性话题。为了确定设备的可用性结果,将与payload_availablepayload_not_available

availability_mode 细绳 ((可选的,默认:最新

什么时候可用性已配置,这控制了将实体设置为可用的。有效的条目是全部,,,,任何, 和最新的。如果设置为全部,,,,payload_available在实体被标记为在线之前,必须在所有配置的可用性主题上收到。如果设置为任何,,,,payload_available在实体被标记为在线之前,必须在至少一个配置的可用性主题上收到。如果设置为最新的, 最后payload_available或者payload_not_available在任何配置的可用性主题上都收到了可用性。

availability_template 模板 ((可选的

定义a模板从中提取设备的可用性availability_topic。为了确定设备的可用性结果,将与payload_availablepayload_not_available

availability_topic 细绳 ((可选的

MQTT主题订阅以接收可用性(在线/离线)更新。

设备 地图 ((可选的

有关设备的信息,该传感器是将其绑定到的一部分设备注册表。只能通过MQTT发现什么时候唯一身份设置。必须至少存在一个标识符或连接以识别设备。

configuration_url 细绳 ((可选的

可以管理此设备配置的网页的链接。可以是HTTP或HTTPS链接。

连接 列表 ((可选的

该设备与外界的连接列表作为元组列表[Connection_Type,Connection_Identifier]。例如,网络接口的MAC地址:“连接”:[[“ Mac”,“ 02:5b:26:A8:DC:12”]]

身份标识 字符串|列表 ((可选的

唯一标识设备的ID列表。例如序列号。

制造商 细绳 ((可选的

设备的制造商。

模型 细绳 ((可选的

设备的模型。

姓名 细绳 ((可选的

设备的名称。

建议_area 细绳 ((可选的

如果该设备还没有,则建议一个区域。

sw_version 细绳 ((可选的

设备的固件版本。

via_device 细绳 ((可选的

该设备与家庭助理之间路由消息的设备的标识符。必威是什么此类设备的示例是枢纽或子设备的父设备。这用于在家庭助理中显示设备拓扑。必威是什么

device_class device_class ((可选的,默认:无

类型/类传感器将图标设置在前端。

enabled_by_default 布尔 ((可选的,默认:正确

标志,该标志首先添加时定义是否应启用实体。

编码 细绳 ((可选的,默认:UTF-8

收到的有效载荷的编码。调成“”禁用传入有效载荷的解码。

Entity_Category 细绳 ((可选的,默认:无

类别实体。

Expire_After 整数 ((可选的,默认:0

如果未更新,则定义传感器状态到期后的秒数。到期后,传感器的状态变成不可用

强制性升级 布尔 ((可选的,默认:false

即使值没有更改,也会发送更新事件。如果您想在历史记录中具有有意义的价值图,则有用。

图标 图标 ((可选的

图标对于实体。

JSON_ATTRIBUTES_TEMPLATE 模板 ((可选的

定义a模板从收到的消息中提取JSON字典JSON_ATTRIBUTES_TOPIC

JSON_ATTRIBUTES_TOPIC 细绳 ((可选的

MQTT主题订阅以接收JSON字典有效载荷,然后将其设置为传感器属性。暗示强制性升级当收到有关此主题的消息时,当前的传感器状态。

last_reset_value_template 细绳 ((可选的

定义a模板提取last_reset。可用变量:ENTITY_ID。这ENTITY_ID可用于引用实体的属性。

姓名 细绳 ((可选的,默认:MQTT传感器

MQTT传感器的名称。

object_id 细绳 ((可选的

代替姓名用于自动生成ENTITY_ID

payload_available 细绳 ((可选的,默认:在线

代表可用状态的有效载荷。

payload_not_available 细绳 ((可选的,默认:离线

代表不可用状态的有效载荷。

QoS 整数 ((可选的,默认:0

国家主题的最大QoS级别。

state_class 细绳 ((可选的,默认:无

state_class传感器。

state_topic 细绳 必需的

MQTT主题订阅以接收传感器值。

唯一身份 细绳 ((可选的

独特地标识该传感器的ID。如果两个传感器具有相同的独特ID,则家庭助理将引起例外。必威是什么

测量单位 细绳 ((可选的

定义传感器测量单元(如果有)。

value_template 模板 ((可选的

定义a模板提取值。可用变量:ENTITY_ID。这ENTITY_ID可用于引用实体的属性。如果模板引发错误,则将使用当前状态。

例子

在本节中,您可以找到一些如何使用此传感器的现实示例。

JSON属性主题配置

下面的示例传感器显示了使用JSON dict的配置示例:{“ clientname”:,“ ip”:,“ mac”:,“ rssi”:,“ hostName”:,“ connectedssid”:}在一个单独的主题中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”:,“ Time”:关于主题电视/索诺夫/传感器带有一个模板timer1.armtimer1.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_topicowntracks/平板电脑/平板电脑”测量单位%”value_template{{{value_json.batt}}””

温度和湿度传感器

如果您使用的是DHT传感器和Nodemcu板(ESP8266),则可以使用MQTT传感器检索温度和湿度。可以找到一个代码示例这里。此示例中的常规MQTT消息看起来像这样:

办公室/传感器1{“温度”23.20,,,,“湿度”43.70}

然后使用此配置示例从有效载荷中提取数据:

#示例Configuration.yaml条目传感器-平台mqtt姓名温度”state_topicOffice/Sensor1”测量单位°C”value_template{{{value_json.temperature}}””-平台mqtt姓名湿度”state_topicOffice/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家庭/浴室/模拟/亮度”