Programando microcontroladores ESP8266 / ESP32 escrevendo arquivos de configuração YAML

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.

Source: https://habr.com/ru/post/pt441984/


All Articles