ESPHome的推荐安装方式
官方推荐通过HA的add-on安装,但我之前安装的Core不含add-on,那么在HA的树莓派上跑ESPHome的docker容器?并不是最佳选择。
ESPHome是一套用配置文件就能简单管理众多ESP开发板的强大系统。通过编写YAML配置文件就能给开发板方便地添加各种传感器,且支持OTA更新固件。
需求
- ESPHome主要用来编译和上传固件。这要求运行的机器性能越强越好。树莓派的arm64交叉编译esp32效率较低,就算是x86的NAS一般性能还是比不上主力机的。
- 没必要24X7运行。数据采集直接通过HA,HA上可以设置传感器下线的通知,这时再跑ESPHome进行串口调试查错。
- 手动安装要建立虚拟环境,升级时特别要注意python版本(否则无法取得最新版)和相关依赖,没有docker方便。
通过Docker部署ESPHome
这里采用docker compose的方式,方便调整运行参数和添加watchtower
进行自动更新等。我是将docker镜像挂载的配置放/opt/docker
方便备份,而docker compose配置文件则放~/docker-compose
下。
编辑~/docker-compose/esphome/docker-compose.yaml
:
1 | version: '3' |
启用privileged
让镜像能直接调用USB等接口,这样无需特别指定挂载如/dev/ttyUSB0
等设备,由于串口芯片的不同不同板子有可能是ttyUSB
、ttyACM
、ttyS
等。
然后运行:
1 | docker compose up -d |
浏览器打开http://localhost:6052访问ESPHome Dashboard。
对接Home Assistant的亮灯程序
Web UI右下角绿色按钮+ NEW DEVICE
- CONTINUE
。给个名字如esp32-test
然后输入无线网络SSID和密码,这样就不用每次增加设备都输一次,而且方便分享配置文件。密码文件位于/opt/docker/esphome/config/secrets.yaml
。
选设备,没找到就选ESP32
。然后SKIP
。
此时主界面会出现新建的设备,点EDIT
,board的完整列表见这里,名称就是其网址最后html的名字,比如nodemcu-32s。
记住随机生成的api:encryption:key:
,HA连接要用到。
文件末尾添加板载LED的配置:
1 | switch: |
其中的pin
根据所用开发板的板载LED对应的针脚自行修改。name
建议用英文,否则传到HA的sensorID会用拼音。在HA里再改中文名。
点击右上角SAVE
然后INSTALL
。选Plug into the computer running ESPHome Dashboard
,然后选对应的端口开始编译上传。
上传成功后HA会自动发现。
浏览器打开HA的网址(如何安装Home Assistant)。
此时会有通知发现新设备,配置——设备与服务——集成
中会新增ESPHome: esp32-test
,点配置
,输入刚才记下的apikey即可连通。
在概览
中会增加Board LED
,点击按钮能控制板载LED的亮灭。
之后更新代码无需连主机的USB,INSTALL
后选Wireless
进行OTA升级即可。