闲暇时间,准备更新一下DC1排插的固件,我的是最早的3月份版本,现在已经更新到12月的版本了,除了有一些新功能外,运行也更加稳定。
下载配置文件并修改
https://github.com/Samuel-0-0/phicomm_dc1-esphome/tree/master/yaml
选择自己对应的配置文件,对于我来说是API版本,那么就需要下载:
# 配置文件 https://github.com/Samuel-0-0/phicomm_dc1-esphome/raw/master/yaml/dc1_homeassistant_api.yaml # 秘钥配置文件 https://github.com/Samuel-0-0/phicomm_dc1-esphome/raw/master/yaml/secrets.yaml
修改dc1_homeassistant_api中的device_name为你之前设备的名称,可以在Home Assistant的后台中查看到。如果与原设备名称不同,则需要更新后重新调整之前的代码。
修改secrets.yaml中的各项密码等。
新建一个文件夹,将这两个文件放进去。
编译固件(以Mac OS为例)
按照说明,我们首先需要安装ESPhome,直接运行 pip install esphome
即可。
执行编译:
# 进入配置文件所在目录 cd xxxxx # 编译固件(xxxxx.yaml为你的配置文件名字) esphome xxxxx.yaml compile
编译过程中会继续下载所需要的库,但在下载到 ESPAsyncWebServer-esphome
时会报如下错误:
Looking for ESPAsyncWebServer-esphome library in registry LibraryManager: Installing id=6758 @ 1.2.6 Error: Please read http://bit.ly/package-manager-ioerror ChunkedEncodingError: ("Connection broken: ConnectionResetError(54, 'Connection reset by peer')", ConnectionResetError(54, 'Connection reset by peer')):
从提供的报错信息来看,是网络问题,但从提供的网站说明来看,是权限问题。我尝试开启网络代理或更换设备,问题依旧存在,且都是卡在下载部分,暂且认为是下载步骤除了问题。尝试手动下载并安装ESPAsyncWebServer-esphome
。
查阅资料,可以通过网站
https://platformio.org/lib/show/6758/ESPAsyncWebServer-esphome
下载该库的离线文件,下载地址在“installation”最下面。
下载后尝试手动安装,输入如下命令:
# XXX为该库安装包的路径 platformio lib --global install /XXX/ESPAsyncWebServer-esphome_1.2.6_6758.tar.gz
运行后,成功安装。继续执行编译命令,建议在重新执行前,清空文件夹下已生成的文件,重新编译。
OTA升级
OTA升级的前提是之前已经刷了ESPHome的固件,并开启了OTA升级且OTA升级密码已知。
打开对应的配置文件,找到 # use_address:
这一行。将前面的注释去掉,ota.local 改为排插接入网络后的IP地址。一般短时间内同一设备的IP地址是不变的。如果担心IP会变,可以在路由器中为设备设置静态IP。
修改后保存,并执行:
# OTA更新固件(xxxxx.yaml为你的配置文件名字) esphome xxxxx.yaml upload
到此为止,如果没有其他报错,就已成功更新了固件。
Home Assistant中的配置
我使用的是API版本,因此在[配置]-[集成]-添加esphome组件-输入dc1的ip地址,就可以正常使用了。