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

 找回密码
 立即注册
123
返回列表 发新帖
楼主: XCray

[进阶教程] ESPHome 1.18.0版本引入了一个非常方便、非常科学的新特性!

[复制链接]

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-9-18 06:46:10 | 显示全部楼层
本帖最后由 XCray 于 2022-9-18 06:51 编辑

mine下面再建一级子目录,名称就是你的组件名称,比如aaa;
aaa下面存放你的代码,除了cpp、h之外,更关键的是python脚本,包括__init__.py(可以是0字节)和sensor.py(或者binary_sensor.py,看你的功能需要)。

官方文档你没好好看呀!
https://esphome.io/components/ex ... of-local-components
这一段说的很清楚了,稍微有点基础应该就能理解
然后yaml里你要使用这个组件才行,并不是只配置一个目录就完事儿了,比如:
sensor:
  - platform: aaa

     xxx: xxx

程序看到这个platform后的aaa就会到external_components指定的路径下寻找aaa名称的目录,然后加载其中的python脚本、再根据python脚本加载剩余的代码。

另外,任何问题,出错提示也值得仔细查看。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-9-18 06:57:00 | 显示全部楼层
evantalk 发表于 2021-6-16 10:53
我是win10上装了个esphome,没有你这个烦恼

这个主题说的是自定义组件,那么,在windows上装esphome,自定义组件应该怎么弄呢?更省事儿?
回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
发表于 2022-9-19 12:38:15 | 显示全部楼层
XCray 发表于 2022-9-18 06:57
这个主题说的是自定义组件,那么,在windows上装esphome,自定义组件应该怎么弄呢?更省事儿? ...

把.h文件放在yaml文件同一个目录下编译就行了
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-9-19 14:03:23 | 显示全部楼层
evantalk 发表于 2022-9-19 12:38
把.h文件放在yaml文件同一个目录下编译就行了

之前用的那个mqttl就是yaml同目录下放一个.h文件,docker安装esphome,确实很省事儿。不过好像不是所有自定义组件都能这么弄吧?
回复

使用道具 举报

4

主题

41

帖子

211

积分

中级会员

Rank: 3Rank: 3

积分
211
金钱
170
HASS币
0
发表于 2022-9-20 23:31:01 | 显示全部楼层
XCray 发表于 2022-9-18 06:46
mine下面再建一级子目录,名称就是你的组件名称,比如aaa;
aaa下面存放你的代码,除了cpp、h之外,更关键 ...

sensor.py文件有语法介绍吗?看各个传感器写得不一样,看不明白哪些是必须的。
回复

使用道具 举报

4

主题

41

帖子

211

积分

中级会员

Rank: 3Rank: 3

积分
211
金钱
170
HASS币
0
发表于 2022-9-21 00:32:13 | 显示全部楼层
XCray 发表于 2022-9-18 06:46
mine下面再建一级子目录,名称就是你的组件名称,比如aaa;
aaa下面存放你的代码,除了cpp、h之外,更关键 ...

我试了一下还是报错,咋回事?
.yaml如下:
esphome:
  name: test
  platform: ESP8266
  board: esp01_1m
external_components:
  source:
    type: local
    path: mine
# Enable logging
logger:
  baud_rate: 0
# Enable Home Assistant API
api:

ota:
  password: "3bb0962c1dd6108ad9d25f3d2caeb265"

wifi:
  ssid: "2108_AC66"
  password: "[email protected]"
  manual_ip:
    static_ip: 10.5.0.200    ##固定此设备IP地址为192.168.123.156;
    gateway: 10.5.0.1        ##路由器、网关地址;
    subnet: 255.255.255.0         ##子网掩码;

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test Fallback Hotspot"
    password: "88888888"

  #captive_portal:

uart:
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 9600

sensor:
  - platform: mhz19
    co2:
      name: "MH-Z19 CO2 Value"
    temperature:
      name: "MH-Z19 Temperature"
    update_interval: 10s
    automatic_baseline_calibration: false

captive_portal:


编译报错:
INFO Reading configuration /config/esphome/test.yaml...
ERROR Unable to load component mhz19.sensor:
Traceback (most recent call last):
  File "/opt/esphome/esphome/loader.py", line 163, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 786, in exec_module
  File "<frozen importlib._bootstrap_external>", line 923, in get_code
  File "<frozen importlib._bootstrap_external>", line 853, in source_to_code
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/config/esphome/mine/mhz19/__init__.py", line 1
    0 lines (0 sloc)  0 Bytes
      ^
SyntaxError: invalid syntax
Failed config

sensor.mhz19: [source /config/esphome/test.yaml:39]
  
  Platform not found: 'sensor.mhz19'.
  platform: mhz19
  co2:
    name: MH-Z19 CO2 Value
  temperature:
    name: MH-Z19 Temperature
  update_interval: 10s
  automatic_baseline_calibration: False
路径:


无标题.png
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-9-21 06:39:10 | 显示全部楼层
刻刻崖 发表于 2022-9-21 00:32
我试了一下还是报错,咋回事?
.yaml如下:
esphome:

代码级别的东西我没能力帮你,自己慢慢玩吧。

多看看esphome本身自带的组件代码,有能力自己写,没能力就找最接近的试着改。
回复

使用道具 举报

4

主题

41

帖子

211

积分

中级会员

Rank: 3Rank: 3

积分
211
金钱
170
HASS币
0
发表于 2022-9-21 13:13:02 | 显示全部楼层
XCray 发表于 2022-9-21 06:39
代码级别的东西我没能力帮你,自己慢慢玩吧。

多看看esphome本身自带的组件代码,有能力自己写,没能力 ...

我是拿的官网gihub的源码,啥也没改,但是报错了,能给我一个你成功的参考一下吗?十分感谢,我估计还是哪里配置的不对。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-9-21 14:19:34 | 显示全部楼层
刻刻崖 发表于 2022-9-21 13:13
我是拿的官网gihub的源码,啥也没改,但是报错了,能给我一个你成功的参考一下吗?十分感谢,我估计还是 ...

你找找我之前的帖子吧,另外官方除了每个组件外还有示例代码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 12:48 , Processed in 0.815524 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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