找回密码
 立即注册

微信扫码登录

搜索
查看: 59|回复: 1

[技术探讨] ESPHome中添加温湿度传感器为什么只显示温度

[复制链接]

2

主题

0

回帖

25

积分

新手上路

积分
25
金钱
23
HASS币
0
发表于 3 小时前 | 显示全部楼层 |阅读模式
求教大佬
开发环境:斐讯T1+冬瓜HAOS , ESP-32S+SHT30温湿度传感器

设备数据采集正常但是在ESPHome界面中只有一个参数

后台日志

后台日志

ESPHome截图

ESPHome截图



yaml代码如下:
esphome:
  name: th
  friendly_name: "大棚温湿度传感器"
  on_loop:
    then:
      - lambda: |-
          while (id(uart_bus).available()) {
            uint8_t c;
            if (id(uart_bus).read_byte(&c)) {
              // 1. 存入缓冲区,限制长度防溢出
              if (id(rx_buffer).length() < 128) {
                id(rx_buffer) += (char)c;
              }

              // 2. 仅识别 \n 作为结束符,过滤 \r 干扰
              if (c == '\n') {
                // 移除缓冲区中所有 \r 字符
                id(rx_buffer).erase(std::remove(id(rx_buffer).begin(), id(rx_buffer).end(), '\r'), id(rx_buffer).end());
                
                if (id(rx_buffer).length() > 0) {
                  float h_val, t_val;
                  bool parse_ok = false;
                  
                  // 匹配 SHT30 输出格式 R:020.8RH 026.3C
                  if (sscanf(id(rx_buffer).c_str(), "R:%fRH %fC", &h_val, &t_val) == 2) {
                    parse_ok = true;
                  } else if (sscanf(id(rx_buffer).c_str(), "%fRH %fC", &h_val, &t_val) == 2) {
                    parse_ok = true;
                  }

                  // 解析成功才同时推送温湿度数据
                  if (parse_ok) {
                    id(sensor_humidity).publish_state(h_val);
                    id(sensor_temperature).publish_state(t_val);
                    ESP_LOGD("sensor_data", "湿度: %.1f%% | 温度: %.1f°C", h_val, t_val);
                  } else {
                    ESP_LOGW("parse_error", "数据格式不匹配: %s", id(rx_buffer).c_str());
                  }
                  
                  // 清空缓冲区准备下一次接收
                  id(rx_buffer).clear();
                }
              }
            }
          }

# ESP32 硬件平台配置(必须存在)
esp32:
  board: esp32dev
  framework:
    type: arduino

# 全局变量:串口接收缓冲区
globals:
  - id: rx_buffer
    type: std::string
    initial_value: '""'

# WiFi 配置 - 替换为你的实际 WiFi 信息
wifi:
  ssid: "Xiaomi_65D4"
  password: "Xiaomi_65D4"
  ap:
    ssid: "TH-Fallback-AP"
    password: "12345678"

# API:ESPHome 与 Home Assistant 通信核心
api:

# OTA 无线更新
ota:
  - platform: esphome

# 日志配置:调试用,查看数据解析情况
logger:
  level: DEBUG
  baud_rate: 115200
  hardware_uart: UART0  # 避免和业务 UART 冲突

# UART 配置:匹配 SHT30 串口参数
uart:
  id: uart_bus
  tx_pin: GPIO22  # ESP32 TX → SHT30 RX
  rx_pin: GPIO21  # ESP32 RX → SHT30 TX
  baud_rate: 9600
  data_bits: 8
  stop_bits: 1
  parity: NONE

# Web 服务:浏览器直接查看数据
web_server:
  port: 80

# ========== 关键修改:禁用实体自动过滤 ==========
sensor:
  # 湿度传感器
  - platform: template
    name: "大棚湿度_001"  # 加后缀避免重名
    id: sensor_humidity_001
    unit_of_measurement: "%"
    accuracy_decimals: 1
    device_class: humidity
    state_class: measurement
    entity_category: diagnostic
    disabled_by_default: false

  # 温度传感器
  - platform: template
    name: "大棚温度_001"  # 加后缀避免重名
    id: sensor_temperature_001
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    device_class: temperature
    state_class: measurement
    entity_category: diagnostic
    disabled_by_default: false
第一次搞,没什么经验,还望各位前辈不吝赐教!!!
回复

使用道具 举报

194

主题

2984

回帖

9710

积分

元老级技术达人

积分
9710
金钱
6517
HASS币
80
发表于 半小时前 | 显示全部楼层
log你有湿度呀,湿度是另外1个实体
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-12-10 14:49 , Processed in 0.136674 second(s), 6 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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