找回密码
 立即注册

微信扫码登录

搜索
查看: 595|回复: 5

[技术探讨] 关于esphome网络问题的升级解决方案

[复制链接]

11

主题

110

回帖

842

积分

高级会员

积分
842
金钱
721
HASS币
0
发表于 2025-10-8 11:12:57 | 显示全部楼层 |阅读模式
最近esphome又开始抽风,arduino框架正常,换成esp-idf框架就各种编译错,总的来说就是因为依赖包下载不完整,前面我也在论坛发过求助帖,很多大佬给了指导,这里总结一下。



1. 最简单的方法就是翻墙,但是我试了v2x和clash,也用了wgturbo(冬瓜大佬在wgos里集成的加速工具,日常解决git这些网站下载的问题)效果都不理想,下载依然很卡,编译经常出错,可能是因为免费的不问题,我也没有买收费的梯子。
2. 另外一个方案就是用移动的手机做热点,重点是移动的手机网络,我也测试了移动的宽带,好像效果没有手机做热点好,不知道是不是玄学。
3. 最后就开始折腾之路了,老规矩,大神随意,小白参考。然后本文针对冬瓜os,原版os俺是搞不定的。


首先,通过http://homeassistant.local:7681/进入ttyd,然后login,(这步要是不能理解,后面也不用看了。)
然后,docker ps|grep esphome,找到esphome的容器id,复制容器id,用 docker exec -it 「容器id」 bash 进入容器命令行(当看到esphome#,就说明成功了)
具体如下图。
docker1.png

进入后ping github.com,正常是一个20开头的地址,而且ping不通,简单的处理就是直接给host加上指向github.com的ip地址,命令如下:
echo "140.82.113.4 github.com" >> /etc/hosts
这步完成后,到esphome的界面重新编译看看依赖项下载是不是正常了,如果正常了,就不用折腾了,毕竟折腾越多,风险越大。


如果还是不行,那就输入 pio run -t clean ,然后pio run ,看看是否正常,如果还是不行,那就开始下面的危险操作,



前方高能,操作完成后,有可能esphome就不能用了要重装
完全没有电脑命令行操作经验的人不推荐!!!



安装一个vi,命令如下:
apt update
apt install -y vim


然后vi编辑下面这一堆文件,如果有的话,没有就不用改。
vi /data/cache/platformio/platforms/espressif32/platform.json
vi /data/cache/platformio/packages/framework-arduinoespressif32/package.json
vi /data/cache/platformio/packages/framework-espidf/package.json
vi /data/cache/platformio/packages/tool-esp_install/package.json
vi /data/cache/platformio/packages/tool-esptoolpy/package.json
vi /data/cache/platformio/packages/toolchain-riscv32-esp/package.json
vi /data/cache/platformio/packages/toolchain-xtensa-esp-elf/package.json
vi /esphome/platformio.ini
vi /platformio.ini



把其中的https://github.com修改成https://bgitghub.xyz(任意一个github的代理都可以)
命令如下
:.,$s/github.com/bgithub.xyz/c
完成记得保存退出
:wq


然后可以运行下pio run(也可以直接去esphome重新编译,记得清除编译文件)


这样折腾过后我的esphome就可以正常使用了,但是目前感觉esphome经常重启,不知道是不是修改引起的不稳定,日志里面啥也没有,各位大佬给点意见。


类似的折腾,每次esphome版本升级都需要重新来一次,但是如果网络正常是不需要的。


















回复

使用道具 举报

68

主题

456

回帖

2225

积分

金牌会员

积分
2225
金钱
1701
HASS币
50
发表于 2025-10-8 14:23:06 | 显示全部楼层
好像有点复杂
回复

使用道具 举报

7

主题

145

回帖

887

积分

高级会员

积分
887
金钱
735
HASS币
0
发表于 2025-10-8 17:29:43 | 显示全部楼层
联通编译得很快,没有用科学
回复

使用道具 举报

0

主题

23

回帖

596

积分

高级会员

积分
596
金钱
573
HASS币
0
发表于 2025-10-11 09:26:05 | 显示全部楼层
本帖最后由 ewintec 于 2025-10-11 11:14 编辑

直接替换就行 没必要在容器内装编辑器,装编辑器要换源,会引发一大堆问题。
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/platforms/espressif32/platform.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/framework-arduinoespressif32/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/framework-espidf/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/tool-esp_install/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/tool-esptoolpy/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/toolchain-riscv32-esp/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /data/cache/platformio/packages/toolchain-xtensa-esp-elf/package.json
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /esphome/platformio.ini
sed -i.bak 's#https://github.com#https://gh-proxy.com/https://github.com#g'  /platformio.ini


另外可在esphome 容器内 添加pip国内源以便加速pip依赖项。
pip3 config list
#pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/
#pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple/

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/
pip config set global.extra-index-url "https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.aliyun.com/pypi/simple/ https://mirrors.cloud.tencent.com/pypi/simple/ https://pypi.doubanio.com/simple/ https://repo.huaweicloud.com/repository/pypi/simple/"
pip config set install.trusted-host "mirrors.aliyun.com repo.huaweicloud.com pypi.tuna.tsinghua.edu.cn pypi.mirrors.ustc.edu.cn mirrors.cloud.tencent.com pypi.doubanio.com"

可选:esphome 容器内添加DNS
cp /etc/resolv.conf /etc/resolv.conf.bak
echo "nameserver 223.5.5.5" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf

注意以上操作均为 esphome 容器内操作。 具体加速源与DNS地址 自行修改

回复

使用道具 举报

0

主题

23

回帖

596

积分

高级会员

积分
596
金钱
573
HASS币
0
发表于 2025-10-11 09:33:54 | 显示全部楼层
本帖最后由 ewintec 于 2025-10-11 21:21 编辑

修复新版本esphome 编译espidf平台设备时报障:
#编译espidf时报错日志:
Reading CMake configuration...
-- git rev-parse returned 'fatal: not a git repository (or any parent up to mount point /)
原因: pip pydantic:2.12.0 模块与espidf不兼容。
解决方法:esphome容器内:降低pydantic版本至 2.11.0
# 导航到 esp-idf 目录,并在 esp-idf VEN 内安装 pydantic 2.11.0
root@5c53de3b-esphome-dev:# ls -al ~/.platformio/penv
total 12
drwxr-xr-x 3 root root 4096 Oct 11 07:37 .
drwxr-xr-x 1 root root 4096 Oct 11 07:28 ..
drwxr-xr-x 5 root root 4096 Oct 11 08:21 .espidf-5.4.2

cd ~/.platformio/penv/.espidf-5.4.2
##进入VM
source bin/activate
## 查看当前模块版本
root@5c53de3b-esphome-dev:~/.platformio/penv/.espidf-5.4.2# source bin/activate
((.espidf-5.4.2) ) root@5c53de3b-esphome-dev:~/.platformio/penv/.espidf-5.4.2# pip list
Package               Version
--------------------- ---------
annotated-types       0.7.0
certifi               2025.10.5
cffi                  2.0.0
charset-normalizer    3.4.3
click                 8.3.0
colorama              0.4.6
cryptography          44.0.3
esp-idf-kconfig       2.5.0
idf-component-manager 2.0.4
idna                  3.10
jsonref               1.1.0
packaging             25.0
pip                   25.0.1
pycparser             2.23
pydantic              2.12.0   #原始版本
pydantic_core         2.41.1   #原始版本
pydantic-settings     2.11.0
pyparsing             3.2.5
python-dotenv         1.1.1
PyYAML                6.0.3
requests              2.32.5
requests-file         2.1.0
requests-toolbelt     1.0.0
tqdm                  4.67.1
typing_extensions     4.15.0
typing-inspection     0.4.2
urllib3               1.26.20
wheel                 0.46.1

##重装pydantic
#source bin/activate
pip install --force-reinstall -v "pydantic==2.11.0"


## 查看模块版本变化
((.espidf-5.4.2) ) root@5c53de3b-esphome-dev:~/.platformio/penv/.espidf-5.4.2# pip list
Package               Version
--------------------- ---------
annotated-types       0.7.0
certifi               2025.10.5
cffi                  2.0.0
charset-normalizer    3.4.3
click                 8.3.0
colorama              0.4.6
cryptography          44.0.3
esp-idf-kconfig       2.5.0
idf-component-manager 2.0.4
idna                  3.10
jsonref               1.1.0
packaging             25.0
pip                   25.0.1
pycparser             2.23
pydantic              2.11.0   #更新后
pydantic_core         2.33.0   #更新后
pydantic-settings     2.11.0
pyparsing             3.2.5
python-dotenv         1.1.1
PyYAML                6.0.3
requests              2.32.5
requests-file         2.1.0
requests-toolbelt     1.0.0
tqdm                  4.67.1
typing_extensions     4.15.0
typing-inspection     0.4.2
urllib3               1.26.20
wheel                 0.46.1

## 退出ven
deactivate

## 前台webUI下直接进行esphome编译操作就行,无需重启容器




如编译失败 记得需清除编译缓存后再次编译
回复

使用道具 举报

11

主题

110

回帖

842

积分

高级会员

积分
842
金钱
721
HASS币
0
 楼主| 发表于 2025-10-11 11:06:43 | 显示全部楼层
ewintec 发表于 2025-10-11 09:26
直接替换就行 没必要在容器内装编辑器,装编辑器要换源,会引发一大堆问题。

大神厉害啊,我就感觉装了vi后esphome容器变得不稳定了。感谢感谢!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-12-1 01:02 , Processed in 0.137010 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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