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

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

[技术探讨] 大金空气传感器esphome外部组件版

[复制链接]

10

主题

85

帖子

571

积分

论坛分享达人

积分
571
金钱
486
HASS币
0
发表于 2025-2-23 03:35:06 | 显示全部楼层 |阅读模式
本帖最后由 avrilclc 于 2025-2-23 16:50 编辑

最新的esphome不支持自定义组件了,需要转化为外部组件。

求助了各种AI,deepseek,qwen2.5max, chatgpt O3 mini,全部都是报错,有的编译时报错,有的直接yaml里面就报错

最后用grok 3一次搞定,神奇啊

下面讲使用方法


  includes:
    - "cm1106.h"
    # - "pm2105.h"  #根据PM2.5传感器型号选择
    - "pm2105i2c.h"
替换为:
external_components:
  - source:
      type: local
      path: components
然后

sensor:
- platform: cm1106
  update_interval: 15s
  uart_id: cm1106_uart
  name: "CM1106 CO₂ Sensor"
  id: co2sensor
  device_class: carbon_dioxide
  state_class: measurement
  unit_of_measurement: "ppm"

- platform: pm2105
  i2c_id: pm25_bus
  address: 0x28
  update_interval: 15s
  pm2_5:
    name: "PM2005 PM2.5"
    id: pm25sensor
  pm10:
    name: "PM2005 PM10"
    id: pm10sensor
switch:
- platform: cm1106
  uart_id: cm1106_uart
  name: "CM1106 Calibrate"
  id: calibration



然后把我发的文件解压后放到esphome根目录下,然后去编译,搞定

ps:并不是首发,有大佬两天前就已经在esphome的github上请求pull了,不过我看了代码,跟我这个AI写的完全不一样,可能过段时间esphome官方就支持了

components.zip

9.81 KB, 下载次数: 16

评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 大神666!

查看全部评分

回复

使用道具 举报

55

主题

1441

帖子

6172

积分

论坛DIY达人

积分
6172
金钱
4731
HASS币
30
发表于 2025-2-23 10:11:48 | 显示全部楼层
谢谢大佬!因为这类问题,估计要一年半载后才敢更新ESPHome了
回复

使用道具 举报

10

主题

85

帖子

571

积分

论坛分享达人

积分
571
金钱
486
HASS币
0
 楼主| 发表于 2025-2-23 13:25:07 | 显示全部楼层
sorrypqa 发表于 2025-2-23 10:11
谢谢大佬!因为这类问题,估计要一年半载后才敢更新ESPHome了

现在AI很强了 我这个完全是grok写的 我测试了完全正常
回复

使用道具 举报

55

主题

1441

帖子

6172

积分

论坛DIY达人

积分
6172
金钱
4731
HASS币
30
发表于 2025-2-23 14:54:10 | 显示全部楼层
avrilclc 发表于 2025-2-23 13:25
现在AI很强了 我这个完全是grok写的 我测试了完全正常

grok有这么牛?是使用的人牛吧?下面是ESPHome官网的uart_to_text_sensor自定义组件内容,您能让这个grok转换为可以正常使用的外部组件我就信了。

#include "esphome.h"

class UartReadLineSensor : public Component, public UARTDevice, public TextSensor {
 public:
  UartReadLineSensor(UARTComponent *parent) : UARTDevice(parent) {}

  void setup() override {
    // nothing to do here
  }

  int readline(int readch, char *buffer, int len)
  {
    static int pos = 0;
    int rpos;

    if (readch > 0) {
      switch (readch) {
        case '\n': // Ignore new-lines
          break;
        case '\r': // Return on CR
          rpos = pos;
          pos = 0;  // Reset position index ready for next time
          return rpos;
        default:
          if (pos < len-1) {
            buffer[pos++] = readch;
            buffer[pos] = 0;
          }
      }
    }
    // No end of line has been found, so return -1.
    return -1;
  }

  void loop() override {
    const int max_line_length = 80;
    static char buffer[max_line_length];
    while (available()) {
      if(readline(read(), buffer, max_line_length) > 0) {
        publish_state(buffer);
      }
    }
  }
};


回复

使用道具 举报

10

主题

85

帖子

571

积分

论坛分享达人

积分
571
金钱
486
HASS币
0
 楼主| 发表于 2025-2-23 16:48:09 | 显示全部楼层
sorrypqa 发表于 2025-2-23 14:54
grok有这么牛?是使用的人牛吧?下面是ESPHome官网的uart_to_text_sensor自定义组件内容,您能让这个grok ...

没什么信不信的,我没空帮你测试,提问肯定有技巧,越详细越好,你自己实操一下就知道了,你要给他自定义组件的yaml里面的代码以及你上面的代码,还要把esphome关于自定义组件取消的说明https://esphome.io/guides/contri ... t-custom-components 里面的内容一起喂给它,把需要的文件结构也给他
回复

使用道具 举报

55

主题

1441

帖子

6172

积分

论坛DIY达人

积分
6172
金钱
4731
HASS币
30
发表于 2025-2-23 17:29:12 | 显示全部楼层
avrilclc 发表于 2025-2-23 16:48
没什么信不信的,我没空帮你测试,提问肯定有技巧,越详细越好,你自己实操一下就知道了,你要给他自定义 ...

果然不简单,有那功夫我还不如直接找现成的https://github.com/eigger/espcomponents
回复

使用道具 举报

10

主题

85

帖子

571

积分

论坛分享达人

积分
571
金钱
486
HASS币
0
 楼主| 发表于 2025-2-23 18:02:26 | 显示全部楼层
sorrypqa 发表于 2025-2-23 17:29
果然不简单,有那功夫我还不如直接找现成的https://github.com/eigger/espcomponents ...

确实,等别人喂嘴里最简单
回复

使用道具 举报

55

主题

1441

帖子

6172

积分

论坛DIY达人

积分
6172
金钱
4731
HASS币
30
发表于 2025-2-23 18:15:18 | 显示全部楼层
avrilclc 发表于 2025-2-23 18:02
确实,等别人喂嘴里最简单

这叫重复造轮子,你会用到的,别人也许早就用到并分享出来了,比如大金这个传感器的外部组件,我在几个月前就找到有人分享出来了,不必找那个回答起来语无伦次的AI逐个测试
回复

使用道具 举报

10

主题

85

帖子

571

积分

论坛分享达人

积分
571
金钱
486
HASS币
0
 楼主| 发表于 2025-2-23 18:20:24 | 显示全部楼层
sorrypqa 发表于 2025-2-23 18:15
这叫重复造轮子,你会用到的,别人也许早就用到并分享出来了,比如大金这个传感器的外部组件,我在几个月 ...

哈哈哈哈 笑死,回答起来语无伦次,那可能你用的都是降智AI。没错,哪天你遇到某个小众问题的时候,希望你也可以找到别人的轮子。自己利用AI解决问题本身就是乐趣。
回复

使用道具 举报

55

主题

1441

帖子

6172

积分

论坛DIY达人

积分
6172
金钱
4731
HASS币
30
发表于 2025-2-23 18:29:48 | 显示全部楼层
avrilclc 发表于 2025-2-23 18:20
哈哈哈哈 笑死,回答起来语无伦次,那可能你用的都是降智AI。没错,哪天你遇到某个小众问题的时候,希望 ...

你自己都说了:求助了各种AI,deepseek,qwen2.5max, chatgpt O3 mini,全部都是报错..........
我们使用的ESPHome和AI等就是那些大神做的轮子,要不然个个全靠手搓C+,哪来的简便
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-3-4 16:53 , Processed in 0.060121 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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