本帖最后由 leung 于 2024-11-24 01:01 编辑
我是用esphome加载项编译固件后直接OTA,但发现实体经常错乱或者直接消失,每个实体都有配置独立id,所以这是什么问题?还是说实体名字必须全英,对中文识别不好?
例如:OnBoard Temperature一旦用中文“温度”,在web server直接消失
又例如:每个Fan本来都设计有一个Fan、工作模式、调速模式、转速、转速范围,但这里就错乱了,web server不见,HA转速范围数据出现在调速模式上
双例如:fan1的转速数据出现在fan5上(已经确认过id、pin相互独立没有重复)
根据楼下网友综述,基本确认就是中文文字问题。
一直以为只要ID是唯一就能正常显示,这是错误的。
name还必须是唯一的,涉及到esp到HA实体转换时中文会被忽略,改成全英文就能解决
Fan5会复制Fan1测速数据问题根源也找到了,原来ESP32S3 WROOM模组只有4组脉冲计数控制器PCNT,第五个就开始复制第一个了,第六个就复制第二个
贴一下部分代码
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
|