『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1934|回复: 2

[技术探讨] 求助,关于mqtt Sensor

[复制链接]

25

主题

272

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
金钱
1594
HASS币
0
发表于 2023-6-15 20:08:21 | 显示全部楼层 |阅读模式
本帖最后由 wpw72 于 2023-6-15 20:11 编辑

哪位大神熟悉mqtt用法。我通过mqtt publish服务 将一温度传感器数据发送到mqtt,再怎样用mqtt Sensor 取回来。用于同一局域网内2个homeassistant系统间数据交换。发送是这样,在homeassistant中建自动化,每分钟触发一次,调用mqtt publish 服务,发送温度

service: mqtt.publish
data:
  topic: homeassistant/sensor/rpi_cpu_temperature
  payload_template: "{{ states('sensor.rpi_cpu_temperature') }}"
  qos: "0"
  retain: false


我在另一homeassistant的mqtt集成中监听“homeassistant/sensor/rpi_cpu_temperature” 也能每分钟收到消息和温度数据,问题是,我怎样才能将此数据变成一个可用的传感器实体,如果是用mqtt Sensor的话,又该如何设置
我这样设置
mqtt:
  sensor:
    - name: "R5S CPU Temperature"
      state_topic: "homeassistant/sensor/r5s_cpu_temperature"
      unit_of_measurement: "°C"
      value_template: "{{ value_json.r5s_cpu_temperature }}"
      json_attributes_topic: "homeassistant/sensor/r5s_cpu_temperature"

其中, value_template: "{{ value_json.r5s_cpu_temperature }}" 出错,该如何写?


回复

使用道具 举报

35

主题

984

帖子

4744

积分

论坛元老

Rank: 8Rank: 8

积分
4744
金钱
3760
HASS币
20
发表于 2023-6-15 21:13:30 | 显示全部楼层
本帖最后由 sctale 于 2023-6-15 21:14 编辑

AI的答案:

根据你提供的配置,你可以使用以下方式来访问通过 MQTT 发布的温度数据。

首先,确保你在配置文件中正确设置了 MQTT 集成。然后,你可以按照以下步骤设置 MQTT 传感器实体:

在配置文件中添加以下配置,指定你的 MQTT 主题和其他相关信息:
yaml
mqtt:
  broker: <MQTT_BROKER_IP_ADDRESS>
  port: <MQTT_BROKER_PORT>
  username: <MQTT_USERNAME>
  password: <MQTT_PASSWORD>
  discovery: true

sensor:
  - platform: mqtt
    name: "R5S CPU Temperature"
    state_topic: "homeassistant/sensor/rpi_cpu_temperature"
    unit_of_measurement: "°C"
    value_template: "{{ value_json }}"
确保将 <MQTT_BROKER_IP_ADDRESS>、<MQTT_BROKER_PORT>、<MQTT_USERNAME> 和 <MQTT_PASSWORD> 替换为你的 MQTT 代理的实际值。

重新启动你的 Home Assistant 实例,使配置生效。

在 Home Assistant 的开发者工具中,你可以使用以下服务调用来验证传感器实体是否正确创建:

服务:homeassistant.update_entity
数据:
entity_id: sensor.r5s_cpu_temperature
这将强制更新传感器实体,使其从 MQTT 主题中获取最新的数据。

如果一切设置正确,你应该能够在 Home Assistant 界面上看到名为 "R5S CPU Temperature" 的传感器实体,并且它的状态将显示为你发布的温度数据。

关于 value_template 的配置,由于你在发布 MQTT 消息时使用了 payload_template,这意味着你发布的数据将直接成为传感器实体的状态,而不是一个 JSON 对象。因此,在传感器配置中,你可以使用 value_template: "{{ value }}" 来直接引用整个状态值。

注意:上述步骤假设你的 MQTT 主题中发布的数据是一个简单的数值,而不是一个包含更多属性的 JSON 对象。如果你发布的数据是一个 JSON 对象,其中包含了更多属性,那么你需要相应地调整 value_template 和 json_attributes_topic 的配置。
回复

使用道具 举报

25

主题

272

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
金钱
1594
HASS币
0
 楼主| 发表于 2023-6-16 09:14:13 | 显示全部楼层
sctale 发表于 2023-6-15 21:13
AI的答案:

根据你提供的配置,你可以使用以下方式来访问通过 MQTT 发布的温度数据。

厉害,正确,万分感谢,现在工作正常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 12:38 , Processed in 0.547578 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表