这是一篇笔记,记录我开始尝试使用esphome做一些小工具的过程,之后可能还会有一些相关的笔记。
如果你要问为什么我不用home assistant里的esphome builder插件的话,原因是我需要插入我自己的项目代码,如果使用esphome builder 我就必须先把代码上传到某处然后把部件的地址写在配置文件里才能下载并编译,会很麻烦,所以需要一个本地开发环境用于快速测试更改。
安装环境
使用esphome主要是为了接入home assistant,esphome依赖platformIO(以下都简称为pio)作为底层框架,因此需要先安装它。在windows平台,我们可以直接使用vscode安装platformIO插件,这个插件将会帮我们把pio安装好,在安装pio的时候需要确保网络爬墙,否则大概率会安装失败,在实际使用时我们并不需要直接去用这个插件,之后的步骤都将靠esphome的命令完成。
然后是安装esphome工具链,这其实是一个python包,按照官网的方式安装:https://esphome.io/guides/installing_esphome
pip3 install wheel pip3 install esphome
然后使用`esphome version`命令检查能否正确显示版本号即可。
项目初始化
接下来进行一个基础的固件编译测试,首先确定要使用的esp8266或者esp32的模块,然后用以下命令来初始化一个配置文件:
esphome wizard 配置文件名字.yaml
执行后将会引导你选择板子以及进行一些设置,这里就不赘述了,完成后会生成一个配置文件。
我在写这篇笔记时使用的测试板是一个esp8266的开发板,选择的是’nodemcuv2’。
固件编译
有了配置文件之后就可以使用以下命令来进行编译,编译出来的固件会在当前目录下的”.esphome\build”文件夹里,这里面还有其它的缓存之类的东西,如果之后的编译出现了奇怪的错误,可以尝试删除这个文件夹。
esphome compile 配置文件名字.yaml
固件烧录
编译好固件之后就可以用以下命令上传你的固件,第一次上传需要使用串口连接,以后的固件就可以通过网络OTA的方式进行更新了(也是这个命令,执行时会让你选择)。
esphome upload 配置文件名字.yaml
固件写完之后重启开发板,它将会开始连接到wifi,此时同一局域网里的home assistant应该就会提示发现了新的设备,问是否要添加,添加时把配置里的api密钥填进去连接即可。
额外测试
接下来配置一个简单的控制开关用来点亮开发板上的led,在配置文件里加入以下顶层项目:
# LED控制配置 output: - platform: gpio pin: D4 id: led_gpio inverted: true #led在引脚低电平时是亮,所以要反转一下 switch: - platform: output name: "开发板LED" output: led_gpio
然后再编译并上传,设备联网后在home assistant的该设备页面上应该会自动多出来一个控制开关,现在就可以通过这个开关控制led的亮灭了。
我还写了个脚本用于方便编译和上传测试,
send.bat:
@echo off chcp 65001 > nul SET CONFIG_FILE=config.yaml esphome compile %CONFIG_FILE% IF %ERRORLEVEL% NEQ 0 ( ECHO 编译失败,错误码: %ERRORLEVEL% EXIT /B %ERRORLEVEL% ) echo 1 | esphome upload %CONFIG_FILE% IF %ERRORLEVEL% NEQ 0 ( ECHO 上传失败,错误码: %ERRORLEVEL% EXIT /B %ERRORLEVEL% ) echo 1 | esphome logs %CONFIG_FILE%
虽然esphome自带的run命令也可以连续执行这三步,但还是要手动选择设备。用这个脚本可以编译上传打日志一气呵成,前提是你电脑上只插了一个板子(或者不插板子就走wifi),因为原理就是自动选第一个选项。
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。