作为Home Assistant智能家居控制系统的粉丝,我最近发现了一个有趣的工具,它与HA紧密集成,并且以前在Habré- ESP Home (以前称为ESPhomeYAML)上未启用。
ESP Home是一组库和工具,可通过用户创建的YAML格式配置文件为ESP8266和ESP32微控制器生成固件。 这极大地简化了中小型复杂性的固件编写,特别是对于那些不擅长为Arduino编程的人,并大大减少了那些精干的人的代码/配置行数。
为了简化设置,支持无线固件更新。
ESP Home支持基于ESP8266和ESP32的设备,这些设备在家庭自动化和其他自制风扇中非常流行,以及数十个传感器和各种外围设备-显示器,网卡等。 为了与已编程的设备交换数据,MQTT,UART,I2C,SPI和API已与Home Assistant集成在一起。
以下是安装ESP Home和简单设备设置的简短示例 以Sonoff T1开关为例,这是一台ESP8266,带有一个继电器,一个按钮和一个受控LED。 该示例将同时具有纯Python和Docker的安装步骤。
安装方式
Python 2.7 (由于Platformio依赖性)
pip2 install esphome
成品镜像中的Docker
docker pull esphome/esphome
创建配置文件
ESP Home包含一个向导,可帮助您创建初始配置文件。
可以在本文结尾处介绍的ESP Home WEB界面中执行相同的步骤。
首先,您需要指定:
- 设备的名称(我们称之为开关)
- ESP8266(在示例中)或ESP32
- 板子类型(我们有esp01_1m)
- 命名为WiFi接入点
- WiFi密码
- 来自API Home Assistant的密码,默认情况下还将使用它通过无线方式更新固件。
向导工作的结果将是当前文件夹中与此类型大致相同的switch.yaml文件:
esphome: name: switch platform: ESP8266 board: esp01_1m wifi: ssid: 'wifi_ap' password: 'wifi_password' # Enable logging logger: # Enable Home Assistant API api: password: 'api_password' ota: password: 'api_password'
这足以编译固件并通过空中进行进一步更改。
第一固件
现在,如果您通过USB(NodeMCU)或通过编程器将控制器连接到计算机,则可以上传固件。
Python :
esphome switch.yaml run
ESP Home将检查配置文件中是否没有错误,编译并下载固件。 此外,新文件夹将出现在当前文件夹中,其中包含设备名称和platformio项目。
如果编程器/设备未连接到计算机,则可以运行以下命令:
esphome switch.yaml compile
并且编译的固件文件将出现在switch / .pioenvs / switch / firmware.bin文件夹中
码头工人
在Linux或MacOS上,可以添加--device = / dev / ttyUSB0 Docker命令-编程器或串行端口的设备地址。
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
与esphome命令类似,由于启动了容器,将显示switch / .pioenvs / switch / firmware.bin文件夹
二进制固件文件可以通过Arduino IDE下载到控制器。
之后,可以断开设备与USB的连接,并且进一步的固件更新将自动通过空中进行。
开关设定
然后,您可以添加必要的组件:
感测器 # binary_sensor: # - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # , on_press: - switch.toggle: relay_1 # , - platform: status name: "Switch Status"
接力赛 switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1
发光二极管 output: # , - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: # "", - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID ,
最终得到:
完成配置 esphome: name: switch platform: ESP8266 board: esp01_1m # , . on_boot: # priority: -10 then: - light.turn_on: blue_led_light wifi: ssid: 'wifi_ap' password: 'wifi_password' # logger: # Home Assistant API api: password: 'api_password' # ota: password: 'api_password' # web # web_server: port: 80 # MQTT mqtt: broker: 10.0.0.2 username: mqt_user password: mqtt_password # binary_sensor: # - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # , on_press: - switch.toggle: relay_1 # , - platform: status name: "Switch Status" switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 output: # , - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: # "", - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID ,
WEB界面
可以通过在Linux和MacOS上运行的WEB界面执行相同的操作。
巨蟒
您需要安装其他依赖项:
pip2 install tornado esptool
并使用以下命令运行ESP Home:
esphome config/ dashboard
码头工人
该文档说,要使状态指示器正常工作,您需要使用以下命令将容器连接到主机网络:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
她没有为我工作,我使用了:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
之后,您可以转到127.0.0.1:6052并在一个方便的界面中工作:

辛苦了