ESPHome no seu Hass.io

Hoje vamos falar um pouco sobre ESPHome . O ESPHome é um sistema para controlar o seu ESP8266 / ESP32 por arquivos de configuração simples, mas poderosos, e controlá-los remotamente através de sistemas de automação residencial.

Aqui vamos falar mais especificamente para uma solução perfeita criando firmwares personalizados para as suas placas ESP8266 / ESP32, e mostraremos como realizar uma configuração básica usando o complemento Hass.io.

O ESPHome é uma ferramenta que lê arquivos de configuração YAML (assim como o Home Assistant) e cria firmwares personalizados. A ferramenta também tem muitos ajudantes que simplificam os dispositivos de flash e tem como objetivo tornar o gerenciamento de suas placas ESP o mais simples possível. Depois de adicionar dispositivos ou sensores na configuração do ESPHome, eles serão exibidos automaticamente na interface do usuário do Home Assistant.

No link abaixo, você consegue verificar todos os guias, dispositivos, componentes, sensores compatíveis com o ESPHome, e ainda existem mais, que aos poucos vão se tornar oficiais.

Eu comecei a utilizar não faz nem duas semanas, então estou aprendendo ainda. Créditos ao Nelson que me ajudou muito a entender um pouco.

Como começar?

  1. Dispositivo ESP
    Antes de tudo, você precisar ter um dispositivo ESP para que possa atualizar seu firmware com o ESPHome. E o ESP não é necessariamente uma placa “separada”. Pode ser um interruptor (de várias marcas), um sonoff basic, e inclusive quem tem sonoff com tasmota, pode migrar para o ESPHome.
  2. Instalar o Addon no seu Hass.io
    Para instalar o Add-on, você precisa inserir o endereço https://github.com/esphome/hassio no campo Search, para aparecer as opções do componente.

    Após adicionar, o nome do Add-On é “ ESPHome “, basta acessar o menu “Hass.io -> Add-On Store -> Procurar por ESPHome e instalar”. Após instalado você não precisa realizar nenhuma configuração, e você tem a opção de visualizar o menu ESPHome no menu lateral.
    image
  3. Primeira configuração
    Para esse exemplo, vamos configurar uma placa ESP32. Igual a essa: Placa ESP 32. Com o objetivo de utilizar como um HUB bluetooth para outros dispositivos se conectarem ao ESP através do bluetooth, e com isso integrar no meu HA esses dispositivos bluetooth.
    Com o Add-On instalado, vamos acessar o menu ESPHome, e adicionar um novo dispositivo, como na imagem abaixo.

    Após clicar no botão, terá 4 passos:
  4. Nome: Irá mostrar um texto com uma breve introdução, e um campo para você definir um nome para seu dispositivo. Nesse caso, vamos colocar esp_escritorio.
    Observação: Os nomes devem estar em minúsculas e não devem conter espaços (caracteres permitidos: a-z, 0-9 e _)
  5. Tipo de dispositivo: Você precisa selecionar o tipo do dispositivo. Para esse caso eu selecionei NodeMCU-32s , mas acredito que a opção Generic ESP32 (WROVER Module) deva funcionar da mesma maneira.
  6. Wifi: Em seguida você precisa definir a rede da sua wifi, a qual o dispositivo irá se conectar. Coloque o SSID e a senha da rede.
    Ainda nessa etapa, possui um campo chamado “Access Password”, essa informação serve para caso você desejar inserir uma senha para realizar as atualizações do seu ESP após configurado. Eu sinceramente não recomendo, pois toda vez que você modificar as configurações do seu ESP, ou atualizar o firmware, sempre terá que digitar essa senha, e fica chato. De qualquer maneira, você pode alterar todas essas configurações posteriormente, mesmo depois de o dispositivo estiver instalado e configurado.
  7. Submeter: Pronto, seu dispositivo está “configurado”. Basta submeter.
  8. Compilar
    Após adicionado o dispositivo, o sistema vai solicitar para selecionar uma opção no canto superior direito da tela, para realizar o upload via USB. Para esse artigo, não vamos utilizar essa alternativa, eu nunca fiz dessa maneira, então não tenho como passar mais detalhes.
    Compile: O que vamos fazer é compilar o arquivo .bin do dispositivo criado para realizar o flash no seu ESP. Com o dispositivo adicionado, nos 3 “pontinhos” image que fica mais a direita. Clique para mostrar as opções disponíveis, e em seguida clique em “ Compile “. Irá iniciar o processo de compilação, e pode demorar um pouco (alguns minutos).
    image
  9. Download Binary: Após o sistema realizar a compilação do arquivo .bin com a mensagem “ INFO Successfully compiled program “, basta realizar download para um local em seu computador. Esse arquivo irá servir para realizar o flash no seu dispositivo ESP.
    image
    Irá gerar um arquivo .bin, e nesse nosso exemplo será esp_escritorio.bin . Se não gerar um arquivo .bin ( Se gerar um arquivo txt por exemplo ), cancele e atualize a página do ESPHome pressionando Ctrl+F5, em seguida execute o processo “4. Compile” novamente.

Flash – Dispositivo ESP

Agora que configuramos o dispositivo no ESPHome, vamos aplicar o flash no dispositivo ESP.
Abaixo já vou deixar o link oficial que explica como realizar esse processo para quem quiser consultar o documento oficial.
esphomeflasher link: https://github.com/esphome/esphome-flasher

Iniciando o processo – esphomeflasher

  1. Para iniciar o flash, você precisa conectar seu dispositivo ESP em seu computador através da porta USB. No caso da placa ESP32 a qual estamos utilizando, é alimentada por um microUSB, basta conectar um cabo microUSB -> USB em seu computador.
  2. Agora é preciso baixar o aplicativo “esphomeflasher”, vamos baixar o arquivo “.exe” que serve para o sistema operacional Windows ( ESPHome-Flasher-windows-x64.exe ), se você estiver utilizando outro SO, baixe arquivo conforme sua necessidade.
    Acesse o endereço https://github.com/esphome/esphome-flasher/releases e baixe o arquivo mais atual.
  3. Após baixar o arquivo, basta clicar duas vezes para abrir ( No windows, pode mostrar um alerta informando que o arquivo não é confiável, ignore e execute o arquivo ).
    Irá mostrar a seguinte tela:
  4. Na primeira opção “ Serial port “, você seleciona a porta em que seu dispositivo ESP esteá conectado. Se você não tem certeza, desconecte e conecte novamente para identificar a porta correta. No campo “ Firmware “, selecione o arquivo “.bin” que você compilou e baixou para seu computador. Após isso, basta clicar em Flash ESP e aguardar o flash concluir.
  5. Após concluído, você deve manter seu ESP ligado em ambiente que você desejar. Você pode desconectar do seu computador e ligar em uma tomada por um carregador de celular por exemplo.

Alterando seu dispositivo ESP no ESPHome

Tudo configurado, mas como eu digo para meu ESP funcionar como um HUB para dispositivos bluetooth?

Agora você deve voltar a tela do seu ESPHome dentro do seu Home Assistant e editar o dispositivo “esp_escritorio”.
image
Irá abrir um arquivo YAML, nesse caso “esp_escritorio.yaml”. e você deve inserir o seguinte código dentro desse arquivo para que seu ESP comece a scannear os seus dispositivos bluetooth.

esp32_ble_tracker:
  scan_interval: 60s

Observe que o tempo de intervalo você pode definir como desejar, colocamos aqui 1 minuto (60 segundos).

O resultado final deve ser algo semelhante a imagem abaixo:

Basta salvar, e depois realizar o Upload. Com isso vai atualizar seu dispositivo através do wifi. Aguarde o upload finalizar com a mensagem de “SUCCESS”.
image
Após atualizar, você irá perceber que no log do seu dispositivo, o seu ESP já vai mostrar os dispositivos bluetooth’s que ele consegue identificar. Exemplo:
image

Você pode visualizar o log sempre que quiser, basta acessar o menu ESP Home e clicar em SHOW LOGS no dispositivo que você desejar.

Integrando o seu dispositivo bluetooth com seu ESPHome e Home Assistant

Após scanear seus dispositivos bluetooth, vamos para a última etapa, que nada mais é que integrar seu dispositivo bluetooth com o seu ESP. Para você poder adicionar, é necessario ter o MAC do seus dispositivo, como você viu no último item, você pode obter o mac pelo log do seu ESP. Após ter o MAC em mãos, você deve adicionar o seguinte código:

binary_sensor:
   - platform: ble_presence
     mac_address: XX:XX:XX:XX:XX
     name: "Celular Douglas - Ble"

sensor:
- platform: ble_rssi
mac_address: XX:XX:XX:XX:XX
name: “Sinal BLE - Celular Douglas”

Basta salvar, e em seguida realizar o upload para atualizar seu ESP. Após o upload realizado, se seu HA estiver configurado para descobrir novos dispositivos, seu HA já irá mostrar uma nova notificação informando que encontrou dois novos dispositivos, e já estará disponível para você utilizar dentro do seu HA, com suas automações, notificações, etc.

Você pode visualizar seus novos dispositivos também em “Configurações – Integrações”.

Outros Exemplos – Interruptor Zemismart

Até o momento eu apenas fiz esse configuração e com um dispositivo interruptor da marca Zemismart . E fiz o mesmo processo, porém ao invés de scanear dispositivos bluetooth, eu configurei switch, o status do led, e sensores com sinal do wifi e tempo de utilização, através dos GPIO do dispositivo Zemismart, que nada mais que uma placa ESP também. O Exemplo do interruptor com um botão (gang) ficou da seguinte maneira:

esphome:
    name: zemismart_cozinha
    platform: ESP8266
    board: esp01_1m

wifi:
    ssid: "SeuSSID"
    password: "SuaSenhaWifi"

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

binary_sensor:
    - platform: gpio
      pin:
         number: GPIO0
         mode: INPUT
         inverted: True
      name: "Botao"
      on_press:
         - switch.toggle: load1
  
switch:
    - platform: gpio
      name: "Luz Frente"
      pin: GPIO12
      id: load1

status_led:
    pin:
       number: GPIO2
       inverted: yes

sensor:
    - platform: wifi_signal
      name: "Cozinha WiFi sinal"
      update_interval: 60s

    - platform: uptime
      name: "Cozinha uptime"

image

Esse é o interruptor que apliquei o flash ESPHome, abri ele e conectei via USB no meu PC para aplicar o flash

Xiaomi MiFlora BLE Sensor

Eu também comprei o dispositivo Xiaomi MiFlora, porém comprei agora e deve chegar entre 40 e 60 dias. Mas para quem quser configurar para que o dispositivo MiFlora conecte-se com um HUB através de um ESP, basta pegar o MAC do MiFlora e seguir os passos da página abaixo:

Esses são apenas alguns exemplos. Existem diversos na página do ESPHome, você pode acessar e verificar as diversas possibilidades que o ESPHome oferece, e que vem aumentando a cada dia.

Como falei no início do artigo, eu estou começando a utilizar agora o ESPHome, esse artigo pode ter diversas melhorias, e todo o crédito vai para o “ nelson_silvafilho “, quem tiver interesse de contribuir, basta falar comigo para adicionar as informações no artigo, ou com o remontti para ter acesso a página de administrador e poder editar e adicionar novos artigos.

Estrutura dentro do seu HA

Você deve perceber, que após tudo configurado, dentro do seu HA foi criada uma pasta esphome. Dentro dessa pasta estão todas as configurações dos seus dispositivos adicionado, a qual pode editar com seu editor de texto, inclusive colocar um arquivo secrets.yaml para suas senhas, etc.
image

3 Curtidas

Douglas, teria como atualizar as imagens deste tutorial, elas não estão sendo carregadas.

Também to precisando @douglas

Adicionado. Obrigado por avisar.

1 Curtida

Adicionado Armando, pode conferir, por favor.

Muito Obrigado Douglas.

Bacana, fiz com um nodemcu e um módulo relé 4 canais, tudo perfeito.
Douglas, teria como integrar isso com comando de voz (Google Home Mini), uma vez que o mesmo já esta no HA ?

1 Curtida

A interação é com o google assistant, se for para controlar por comando de voz você precisa integrar seu HA com o assistant da google.

Douglas, consegui por comando de voz, porém o Nabu Casa é pago, teste de apenas 30 dias, mas tá valendo.

Tem como fazer o ble tracker pelo nodemcu esp8266 ou só pelo esp32?

1 Curtida

@elias, como ficou teu código?

Tenho uma bomba submersa do tipo sapo em um poço artesiano. Na minha configuração, tenho interesse de colocar um sensor HC-SR04 pra medir o nível desse reservatório (do qual não possuo controle de reposição) e informá-lo em meu HA. Esse mesmo registro do nível impedirá que a relé da bomba submersa seja ativada se o nível for perigoso para a bomba (nível inferior do poço). Meu ESP32 terá um botão físico para ativar o relé da bomba. Pergunta: como faço o controle desse botão físico ligado no ESP32?

Código quase todo escrito; estou montando os componentes para testar e ajustar o código. Assim que der, vou criar um tópico.