Como fã do sistema de controle doméstico inteligente do Home Assistant , descobri recentemente uma ferramenta interessante que está intimamente integrada ao HA e anteriormente não estava disponível no Habré - ESP Home (anteriormente ESPhomeYAML).
O ESP Home é um conjunto de bibliotecas e ferramentas que geram firmware para os microcontroladores ESP8266 e ESP32 a partir de um arquivo de configuração criado pelo usuário no formato YAML. Isso simplifica bastante a escrita de firmware de nível pequeno e médio, especialmente para aqueles que não são bons em programação para o Arduino e reduz bastante o número de linhas de código / configuração para aqueles que são fortes.
Para facilitar a instalação, é suportada uma atualização de firmware sem fio.
O ESP Home suporta dispositivos baseados no ESP8266 e ESP32, que são muito populares entre a automação residencial e outros ventiladores domésticos, além de várias dezenas de sensores e vários periféricos - monitores, placas de rede etc. Para trocar dados com o dispositivo programado, MQTT, UART, I2C, SPI e API são integrados, integrados ao Home Assistant.
Abaixo está um pequeno exemplo de instalação do ESP Home e configuração simples do dispositivo no exemplo do switch Sonoff T1 , que é um ESP8266 com um relé, um botão e um LED controlado. O exemplo terá etapas de instalação para Python e Docker puro ao mesmo tempo.
Instalação
Python 2.7 (devido a dependências do Platformio )
pip2 install esphome
Docker da imagem final
docker pull esphome/esphome
Criando um arquivo de configuração
O ESP Home inclui um assistente que ajuda a criar o arquivo de configuração inicial.
As mesmas etapas podem ser executadas na interface WEB do ESP Home, descrita no final do artigo.
Primeiro você precisa especificar:
- O nome do dispositivo (vamos chamá-lo de switch)
- ESP8266 (no exemplo) ou ESP32
- Tipo de placa (temos esp01_1m)
- Pontos de acesso WiFi nomeados
- Senha WiFi
- Senha do API Home Assistant, ele também será usado por padrão para atualizar o firmware pelo ar.
O resultado do trabalho do assistente será o arquivo switch.yaml na pasta atual aproximadamente deste tipo:
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'
Isso é suficiente para compilar o firmware e fazer outras alterações por via aérea.
Primeiro firmware
Agora, se você conectar o controlador ao computador via USB (NodeMCU) ou através do programador, poderá fazer o upload do firmware.
Python :
esphome switch.yaml run
O ESP Home verificará se não há erros no arquivo de configuração, compilará e fará o download do firmware. Além disso, uma nova pasta aparecerá na pasta atual com o nome do seu dispositivo e o projeto da plataforma dentro.
Se o programador / dispositivo não estiver conectado ao computador, você poderá executar o comando:
esphome switch.yaml compile
e o arquivo de firmware compilado aparecerá na pasta switch / .pioenvs / switch / firmware.bin
Docker
No Linux ou MacOS, você pode adicionar o comando --device = / dev / ttyUSB0 Docker - o endereço do dispositivo do programador ou da porta serial.
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
De maneira semelhante ao comando esphome, como resultado do início do contêiner, a pasta switch / .pioenvs / switch / firmware.bin será exibida
O arquivo de firmware binário pode ser baixado para o controlador através do IDE do Arduino.
Depois disso, o dispositivo pode ser desconectado do USB e outras atualizações de firmware ocorrerão automaticamente pelo ar.
Mudar configuração
Então você pode adicionar os componentes necessários:
Sensores # 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"
Relé switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1
LEDs 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 ,
Para finalmente obter:
Configuração concluída 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 ,
Interface WEB
As mesmas ações podem ser realizadas através da interface WEB, que roda em Linux e MacOS.
Python
Você precisa instalar dependências adicionais:
pip2 install tornado esptool
e execute o ESP Home com este comando:
esphome config/ dashboard
Docker
A documentação diz que, para que os indicadores de status funcionem, você precisa conectar o contêiner à rede host com o seguinte comando:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
Ela não trabalhou para mim e eu usei:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
Depois disso, você pode acessar 127.0.0.1:6052 e trabalhar em uma interface conveniente:

Tenha um bom trabalho.