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

 找回密码
 立即注册
查看: 665|回复: 11

[技术探讨] 【已解决】ESP实体消失/名字错乱如何解决?GPIO出现数值错乱

[复制链接]

16

主题

178

帖子

943

积分

高级会员

Rank: 4

积分
943
金钱
765
HASS币
0
发表于 2024-11-18 02:39:05 | 显示全部楼层 |阅读模式
本帖最后由 leung 于 2024-11-24 01:01 编辑

我是用esphome加载项编译固件后直接OTA,但发现实体经常错乱或者直接消失,每个实体都有配置独立id,所以这是什么问题?还是说实体名字必须全英,对中文识别不好?
例如:OnBoard Temperature一旦用中文“温度”,在web server直接消失
]O4PXHW)3)7N0UJJ`SJ78DR.png
又例如:每个Fan本来都设计有一个Fan、工作模式、调速模式、转速、转速范围,但这里就错乱了,web server不见,HA转速范围数据出现在调速模式上
双例如:fan1的转速数据出现在fan5上(已经确认过id、pin相互独立没有重复)
{S_46MBSLA2(X`E(U0M(WE8.png

根据楼下网友综述,基本确认就是中文文字问题。
一直以为只要ID是唯一就能正常显示,这是错误的。
name还必须是唯一的,涉及到esp到HA实体转换时中文会被忽略,改成全英文就能解决

Fan5会复制Fan1测速数据问题根源也找到了,原来ESP32S3 WROOM模组只有4组脉冲计数控制器PCNT,第五个就开始复制第一个了,第六个就复制第二个
KH~2I$BKHLTO(T8GP(NPA]T.png

贴一下部分代码
sensor:
  - platform: pulse_counter
    pin:
      number: GPIO16
      inverted: true
      mode:
        input: true
        pullup: true
    name: "Fan 1 转速"
    id: fan1_speed
    unit_of_measurement: 'RPM'
    accuracy_decimals: 0  # 只显示整数部分
    filters:
      - multiply: 0.5
      - lambda: |-
          if (x <= 5000) {
            return round(x);  
          } else {
            return {};  
          }
    count_mode:
      rising_edge: INCREMENT
      falling_edge: DISABLE
    update_interval: 5s
  - platform: pulse_counter
    pin: 
      number: GPIO02   # Connect to any input PIN on the ESP
      mode: INPUT_PULLUP
    unit_of_measurement: 'RPM'
    id: fan5_speed
    name: "Fan 51 转速"
    accuracy_decimals: 0
    filters:
      - multiply: 0.5 
      - lambda: |-
          if (x <= 5000) {
            return round(x);  
          } else {
            return {};  
          }
    count_mode:
      rising_edge: INCREMENT
      falling_edge: DISABLE
    update_interval: 5s
text_sensor:
  - platform: template
    id: fan1mode_text_sensor
    name: "Fan 1 调速模式"
    update_interval: never  # 不需要定期更新,只在GPIO18状态变化时更新
  - platform: template
    id: fan2mode_text_sensor
    name: "Fan 2 调速模式"
    update_interval: never  
  - platform: template
    id: fan3mode_text_sensor
    name: "Fan 3 调速模式"
    update_interval: never 

  - platform: wifi_info
    ip_address:
      name: IP地址
    mac_address:
      name: MAC地址

  - platform: template
    name: "运行时长"
    id: uptime_human
    icon: mdi:clock-start
    update_interval: 60s

  - platform: template
    name: "Fan 1 转速范围"
    id: fan1_speed_text
    update_interval: never 
  - platform: template
    name: "Fan 2 转速范围"
    id: fan2_speed_text
    update_interval: never 
  - platform: template
    name: "Fan 3 转速范围"
    id: fan3_speed_text
    update_interval: never 
  - platform: template
    name: "Fan 4 转速范围"
    id: fan4_speed_text
    update_interval: never 
  - platform: template
    name: "Fan 5 转速范围"
    id: fan5_speed_text
    update_interval: never 
  - platform: template
    name: "Fan 6 转速范围"
    id: fan6_speed_text
    update_interval: never 






回复

使用道具 举报

52

主题

1356

帖子

5814

积分

论坛DIY达人

积分
5814
金钱
4458
HASS币
20
发表于 2024-11-18 07:32:38 | 显示全部楼层
看到有大佬开贴说ESPHome支持中文,我以为已经支持了,这么说还是不支持咯
回复

使用道具 举报

15

主题

427

帖子

2864

积分

金牌会员

Rank: 6Rank: 6

积分
2864
金钱
2437
HASS币
0
发表于 2024-11-18 08:45:06 | 显示全部楼层
盡量都用英文  用中文很容易出現錯誤  我試過好多次了  
回复

使用道具 举报

6

主题

67

帖子

787

积分

高级会员

Rank: 4

积分
787
金钱
720
HASS币
0
发表于 2024-11-18 10:02:29 | 显示全部楼层
在esphome里设置中文转换到ha的实体标识符里会不显示,尽量用英文,或者添加符号
回复

使用道具 举报

8

主题

49

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
金钱
262
HASS币
0
发表于 2024-11-18 10:16:36 | 显示全部楼层
本帖最后由 routeros.cn 于 2024-11-18 10:22 编辑

前面加个序号或者唯一识别的可以...中文会被转换为 _ 然后排序如果你的中文字数一样前面的 英文和符号也一样本质上转换后在某些条件下就一样....前面加个唯一序号就可以了
就算是 v3 web 可以指定sorting_weight 排序id 也是一样

name 不加唯一识别 仍然是无法按计划显示的
V3.png
有一些 语音视频SIP电话和ESP插板出同时调试一些路由如routeros 爱快 和 接入网设备
回复

使用道具 举报

18

主题

283

帖子

2963

积分

论坛DIY达人

积分
2963
金钱
2665
HASS币
60
发表于 2024-11-18 13:27:17 | 显示全部楼层
routeros.cn 发表于 2024-11-18 10:16
前面加个序号或者唯一识别的可以...中文会被转换为 _ 然后排序如果你的中文字数一样前面的 英文和符号也一 ...

你这个web界面是啥实现
回复

使用道具 举报

18

主题

283

帖子

2963

积分

论坛DIY达人

积分
2963
金钱
2665
HASS币
60
发表于 2024-11-18 13:28:33 | 显示全部楼层
routeros.cn 发表于 2024-11-18 10:16
前面加个序号或者唯一识别的可以...中文会被转换为 _ 然后排序如果你的中文字数一样前面的 英文和符号也一 ...

你这个web界面是啥实现
回复

使用道具 举报

3

主题

381

帖子

3405

积分

论坛元老

Rank: 8Rank: 8

积分
3405
金钱
3024
HASS币
0
发表于 2024-11-18 14:46:19 | 显示全部楼层
routeros.cn 发表于 2024-11-18 10:16
前面加个序号或者唯一识别的可以...中文会被转换为 _ 然后排序如果你的中文字数一样前面的 英文和符号也一 ...

同问web界面
回复

使用道具 举报

8

主题

367

帖子

4021

积分

论坛元老

Rank: 8Rank: 8

积分
4021
金钱
3654
HASS币
10
发表于 2024-11-18 19:10:14 | 显示全部楼层

应该是V3版本的WEB界面,没注意过。。

https://www.esphome.io/component ... iguration-variables
回复

使用道具 举报

16

主题

178

帖子

943

积分

高级会员

Rank: 4

积分
943
金钱
765
HASS币
0
 楼主| 发表于 2024-11-18 19:56:56 | 显示全部楼层
routeros.cn 发表于 2024-11-18 10:16
前面加个序号或者唯一识别的可以...中文会被转换为 _ 然后排序如果你的中文字数一样前面的 英文和符号也一 ...

全面加个序号不失为个好办法,既可以分类排序也可以保证ID唯一性。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-8 04:00 , Processed in 0.100265 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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