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

 找回密码
 立即注册
查看: 440|回复: 6

[求助] esphome两个传感器在ha内只显示一个

[复制链接]

34

主题

188

帖子

880

积分

高级会员

Rank: 4

积分
880
金钱
692
HASS币
0
发表于 2024-8-9 09:19:04 | 显示全部楼层 |阅读模式
本帖最后由 yun59t 于 2024-8-9 15:15 编辑

最近开始尝试用esphome做些小东西,边玩边学。esphome没看到哪有系统性的中文教程,esphome的官网,外行+英文,太难食用了。
1、准备材料:
① ESP32 Super Mini开发板 ×1;(接口:1xI2C、1xSPI、2xUART、11xGPIO(PWM)、4xADC)
② 4脚(VIN、GND、A0、D0)雨水传感器×1,型号未知;
③ 4脚(VIN、GND、A0、D0)土壤湿度传感器×1,型号未知;
④ 杜邦线×n。
未命名图片.png Snipaste_2024-08-09_08-57-06.png Snipaste_2024-08-09_08-57-36.png
二、esphome代码
esphome:
  name: rain
  friendly_name: rain

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino

# 启用日志功能
logger:

# 启用HA API,使设备能够与HA通信,接入ha时填此key
api:
  encryption:
    key: "XXX"

# 启用OTA(Over-the-Air)功能,允许通过Wi-Fi更新设备固件
ota:
  - platform: esphome
    password: "123457"

# 配置Wi-Fi网络
wifi:
  ssid: "XXX"
  password: "XXX"

  # 配置热点,在Wi-Fi连接失败时启用
  ap:
    ssid: "智能设备19转192.168.4.1"
    password: "123456789"

# 启用在设备连接热点时提供一个配置页面
captive_portal:

# 启用web服务器,地址IP:80
web_server:
  port: 80

# 定义GPIO引脚,用于控制板载LED灯
output:
  - platform: gpio
    pin: GPIO8
    id: gpio_8

# 定义一个二进制灯光实体,使用上述定义的GPIO输出控制LED灯
light:
  - platform: binary
    name: "LED板载灯"
    output: gpio_8   


# 定义若干二进制传感器
sensor:
  # 一个wifi信号传感器
  - platform: wifi_signal  # 平台,wifi信号传感器
    name: "WiFi信号强度"  # 在HA中显示的实体名称
    update_interval: 60s  # 更新周期,默认60s

  # 一个雨水传感器
  - platform: adc
    pin: GPIO1
    name: "雨量湿度"
    id: rain_humidity_sensor
    update_interval: 1s
    attenuation: 11db  # 输入电压范围档
    filters:
      - lambda: |-
          // 将电压转换为百分比并反转
          float percent = (1.0 - x / 3.3) * 100.0;
          
          // 上式值使用后范围10%~80%,映射为10%~100%
          float min_input = 10.0;
          float max_input = 80.0;
          float min_output = 0.0;
          float max_output = 100.0;

          // 确保值在范围内
          if (percent < min_input) percent = min_input;
          if (percent > max_input) percent = max_input;

          // 线性插值公式
          return (percent - min_input) / (max_input - min_input) * (max_output - min_output) + min_output;
    unit_of_measurement: "%"
    accuracy_decimals: 0  # 精度

  # 一个土壤湿度传感器
  - platform: adc
    pin: GPIO0
    name: "土壤湿度"
    id: soil_moisture_sensor
    update_interval: 3s
    attenuation: 11db  # 输入电压范围档
    filters:
      - lambda: |-
          // 将电压转换为百分比并反转
          float percent = (1.0 - x / 3.3) * 100.0;
          
          // 上式值使用后范围10%~80%,映射为10%~100%
          float min_input = 10.0;
          float max_input = 80.0;
          float min_output = 0.0;
          float max_output = 100.0;

          // 确保值在范围内
          if (percent < min_input) percent = min_input;
          if (percent > max_input) percent = max_input;

          // 线性插值公式
          return (percent - min_input) / (max_input - min_input) * (max_output - min_output) + min_output;
    unit_of_measurement: "%"
    accuracy_decimals: 0  # 精度

# 定义若干二进制传感器
binary_sensor:

# 一个二进制雨水传感器
  - platform: gpio
    pin: GPIO2
    name: "雨水感应"
    device_class: moisture  # 设备类别
    filters:                # 反转输出状态
      - invert:

# 一个二进制土壤湿度传感器
  - platform: gpio
    pin: GPIO5
    name: "土壤湿度感应"
    device_class: moisture  # 设备类别
    filters:                # 反转输出状态
      - invert:

三、成果及存在问题
1、在路由器中接入后,设备名称比较随意,能否在esphome代码中,直接定义路由器中的显示名称,而不是在路由器中修改。
Snipaste_2024-08-09_08-49-30.png
2、二进制传感器正常,但模拟量的传感器,ha中只能显示一个,在esphome的web控制页中也是,但在左侧运行反馈中内容明明有两个。是不是需要进行I2C配置,具体怎么配置。(本条已解决,模拟量名称用中文导致不懂什么原因的冲突,改英文后出来了)
Snipaste_2024-08-09_08-52-41.png Snipaste_2024-08-09_08-50-21.png 3、开发板上有蓝色+红色2个板载LED,其中蓝色这个是可编程的,红色这个是不可编程的。日常通电时,不可编程的红色LED一直亮着,比较碍眼,能把它关掉不。
-------------------------------------
备注:麻烦大神们提供方法时,越具体越好,没有具体做法,这样对于外行小白来说,又绕又晕,难以食用。后面问题解决了,我也把正确的思路写上来,给同是新人的爱好者们提供个参考。非常感谢!!!





回复

使用道具 举报

4

主题

163

帖子

909

积分

高级会员

Rank: 4

积分
909
金钱
746
HASS币
0
发表于 2024-8-9 10:39:31 | 显示全部楼层
name: "土壤湿度感应"
不能用中文,这先用英文写,接入HA后再改成中文。
回复

使用道具 举报

146

主题

2266

帖子

6998

积分

元老级技术达人

积分
6998
金钱
4727
HASS币
30
发表于 2024-8-9 11:38:48 | 显示全部楼层
对,可能是中文的问题,esphome里尽量不要用中文,可以在ha前端改,问楼主1个问题,2个传感器,板子上只有一个5v和1个gmd,怎么接线
回复

使用道具 举报

34

主题

188

帖子

880

积分

高级会员

Rank: 4

积分
880
金钱
692
HASS币
0
 楼主| 发表于 2024-8-9 15:18:13 | 显示全部楼层
lhpsq 发表于 2024-8-9 10:39
name: "土壤湿度感应"
不能用中文,这先用英文写,接入HA后再改成中文。

居然是这个原因,确实有效。
Snipaste_2024-08-09_15-13-00.png
回复

使用道具 举报

34

主题

188

帖子

880

积分

高级会员

Rank: 4

积分
880
金钱
692
HASS币
0
 楼主| 发表于 2024-8-9 15:58:29 | 显示全部楼层
bugensui 发表于 2024-8-9 11:38
对,可能是中文的问题,esphome里尽量不要用中文,可以在ha前端改,问楼主1个问题,2个传感器,板子上只有 ...

可以多个传感器,接同一个的5V和GMD。只要电源的电流足够,就可以接足够多的传感器。I1+I2+In+......≤电源的I
回复

使用道具 举报

34

主题

188

帖子

880

积分

高级会员

Rank: 4

积分
880
金钱
692
HASS币
0
 楼主| 发表于 2024-8-9 16:00:01 | 显示全部楼层
bugensui 发表于 2024-8-9 11:38
对,可能是中文的问题,esphome里尽量不要用中文,可以在ha前端改,问楼主1个问题,2个传感器,板子上只有 ...

可以多个传感器,接同一个的5V和GMD。只要电源的电流足够,就可以接足够多的传感器。I1+I2+In+.....≤I电源。实际接法就是端头先并线(焊锡先焊一起最好),然后一起焊接进去。
回复

使用道具 举报

146

主题

2266

帖子

6998

积分

元老级技术达人

积分
6998
金钱
4727
HASS币
30
发表于 2024-8-9 16:15:08 | 显示全部楼层
yun59t 发表于 2024-8-9 16:00
可以多个传感器,接同一个的5V和GMD。只要电源的电流足够,就可以接足够多的传感器。I1+I2+In+.....≤I电 ...

好的,谢谢,我知道了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 22:37 , Processed in 0.378184 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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