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

 找回密码
 立即注册
查看: 2043|回复: 5

[技术探讨] 关于ESPHome官方的BL0940组件问题。

[复制链接]

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
发表于 2023-10-26 09:31:45 | 显示全部楼层 |阅读模式
因ESPHome的官方文档提供了BL0940组件,本小白于是理所当然的在电路中采用了该电源管理芯片,想的是不用写代码即可直接使用。
然而,经排查硬件正常,但ESPHome却无法获取数据。于是开始怀疑官方的组件程序是否有问题。
打开官方提供的组件代码发现:
static const uint8_t BL0940_READ_COMMAND = 0x50;  // 0x58 according to documentation
 static const uint8_t BL0940_WRITE_COMMAND = 0xA0;  // 0xA8 according to documentation


上述代码明确注释,组件用的读写指令与芯片生产商的技术手册并不一致。再翻看ESPHome对该组件的描述为“These are used in some Tuya-devices (e.g. the power metering BW-SHP10)”。
于是我猜想,那些电源管理模块或许是采用定制的BL0940芯片,其操作指令进行了调整,所以并不适合市售的BL0940芯片。然而ESPHome官方文档并未对该情况进行描述,于是根本就无法让自制电路正常工作。
最终,根据芯片技术手册的标准指令,通过外部组件方式重新定义了组件后正常(本人小白,不知道还有其它方式没)。
本小白英文极烂,所以希望那位大神能向ESPHome官方反馈该事宜,并完善其技术文档,避免更多的友友们踩坑。
回复

使用道具 举报

51

主题

1339

帖子

5596

积分

论坛DIY达人

积分
5596
金钱
4257
HASS币
20
发表于 2024-1-14 12:40:50 | 显示全部楼层
惨了!我也中招,买了2个BL0942,一个能正常使用,另一个无法正常通讯

SNAG-2024-1-14_0001.png
回复

使用道具 举报

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
 楼主| 发表于 2024-1-14 16:43:43 | 显示全部楼层
本帖最后由 polisher 于 2024-1-14 16:46 编辑
sorrypqa 发表于 2024-1-14 12:40
惨了!我也中招,买了2个BL0942,一个能正常使用,另一个无法正常通讯

或许,您需要要把ESPHOME的官方组件代码与BL0942的产品指南对照一下。我是通过编写外部组件的方式,将ESPHOME的BL0940组件代码进行了重写才能正常工作。不知道您提到的BL0942是否也是同样的情况。
回复

使用道具 举报

51

主题

1339

帖子

5596

积分

论坛DIY达人

积分
5596
金钱
4257
HASS币
20
发表于 2024-1-14 16:50:34 | 显示全部楼层
polisher 发表于 2024-1-14 16:43
或许,您需要要把ESPHOME的官方组件代码与BL0942的产品指南对照一下。我是通过编写外部组件的方式,将ESPH ...

能分享一下您的BL0940外部组件吗?
回复

使用道具 举报

18

主题

266

帖子

2160

积分

论坛DIY达人

积分
2160
金钱
1889
HASS币
20
 楼主| 发表于 2024-1-14 16:59:32 | 显示全部楼层
本帖最后由 polisher 于 2024-1-14 17:01 编辑
sorrypqa 发表于 2024-1-14 16:50
能分享一下您的BL0940外部组件吗?

可参阅bl0940组件代码 bl0940a.rar (4.28 KB, 下载次数: 15)
调用与EHPHOME一致
# 我的组件放在mycomponents目录里
external_components:
  - source: mycomponents
# 调用该组件  
sensor:
  - platform: bl0940a
    uart_id: uart_bus
    Voltage:
      name: '${device_name} BL0940 Voltage'
    Current:
      name: '${device_name} BL0940 Current'
    Power:
      name: '${device_name} BL0940 Power'
    Energy:
      name: '${device_name} BL0940 Energy'
      id: bl0940_energy
    Internal_Temperature:
      name: '${device_name} BL0940 Internal temperature'
    update_interval: 10s

回复

使用道具 举报

51

主题

1339

帖子

5596

积分

论坛DIY达人

积分
5596
金钱
4257
HASS币
20
发表于 2024-1-14 17:15:15 | 显示全部楼层
polisher 发表于 2024-1-14 16:59
可参阅bl0940组件代码
调用与EHPHOME一致

谢谢!改动不少呀!这东西一看头就痛,玩不转

SNAG-2024-1-14_0003.png

SNAG-2024-1-14_0002.png
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 20:50 , Processed in 0.519216 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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