17 de maio de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Como usar ESP8266 com Alexa (sem fauxmo)

esp8266 com alexa

Já escrevi sobre como usar ESP8266 com Alexa usando as placas da AFEletronica, agora vou começar uma série utilizando outro recurso, de algumas maneiras diferentes. Vamos abrir essa série com o mais fácil e rápido, hum?

Quais placas são suportadas?

Qualquer ESP8266 deve funcionar. Alguns não tem porta USB, dependendo de um adaptador. Alguns adaptadores não fornecem corrente o suficiente, mas esses FTDIs com tensão seletiva via jumper são bons o suficiente. A propósito, recomendo a leitura desse artigo sobre gravadores, do Laboratório Maker 09.

Requisitos adicionais

Não tem requisitos adicionais. Nem haverá programação nesse primeiro artigo, pois vamos usar um dos firmwares prontos. Não gosto de escrever sobre firmwares prontos, mas foi o MicroPython compilado que me permitiu dedicar mais tempo às implementações do que à preparação. Por essa razão olhei com bons olhos para um firmware que não é novidade, mas que não é “tão” conhecido – o Tasmota. Se manja dos “ingrêis”, pode pular esse artigo e ir direto para a documentação do projeto.

Download do firmware

O download do firmware para usar o ESP8266 com Alexa pode ser baixado no repositório. Existem diversas versões relacionadas a recursos e também versões com mudança de idioma. Baixe a versão BR.

Flasher para o firmware

Temos várias opções, algumas multiplataformas. Dessa vez me interessou utilizar a ferramenta Tasmotizer. Para Windows, pegue-o nesse link.

Para instalar o Tasmotizer no Linux, usamos o pip:

pip3 install --upgrade pip wheel
pip3 install tasmotizer
#se obtiver erro ao executar, instale a dependência:
sudo apt-get install python3-pyqt5.qtserialport

Broker MQTT

Parafraseando a documentação, o Tasmota foi projetado para controle e comunicação via MQTT. Um broker MQTT é uma boa pedida para gerar dashboards e alarmes do seu ESP8266 com Alexa. Se deseja configurar seu próprio broker, recomendo Esse artigo sobre broker MQTT no Raspberry, mas serve para qualquer Linux.

Gravar o firmware Tasmota

Hora de por a mão na massa. O backend do Tasmotizer é o esptool. Isto é, ele é um front-end, como uma série de programas em Linux, o que permite trabalhar tanto por linha de comando como por interface gráfica. No caso, o Tasmotizer é um facilitador do uso do esptool, com alguns recursos adicionais.

Pelo que vi (e ainda não testei), o Tasmotizer é capaz de baixar a última versão estável e fazer o flashing. Nesse primeiro momento gravei o firmware que baixei. O processo é simples e a interface é limpa:

Apenas indiquei o firmware e cliquei em “Tasmotize!”. Ao término do processo é solicitado o reinício do dispositivo:

ESP8266 com Alexa - tasmotizer

Desconecte o ESP8266 e reconecte.

Configuração inicial

Antes de seguirmos com a configuração do ESP8266 com Alexa, saiba que podemos enviar as configurações pela GUI da aplicação. Aqui estou seguindo fielmente o processo linear da documentação para a prova de conceito, daí evoluímos nos próximos artigos relacionados.

O WiFi manager só fica ativo por 3 minutos. Se por alguma razão passar do tempo limite para iniciar o processo, basta reconectar o ESP8266.

O modo AP tem o IP padrão 192.168.4.1, que deverá ser acesso por um browser após termos nos conectado ao dispositivo pela rede AP. Ele deverá aparecer como “Tasmota_xxxxxx…”.

Configure a rede WiFi à qual o dispositivo deverá se conectar.

ESP8266 com Alexa

Aí temos um ponto crucial pra muita gente; depois que o dispositivo estiver conectado à sua rede WiFi, como saber qual o IP? Bem, a forma mais simples é abrir a interface do roteador e olhar a lista de IPs atribuídos aos dispositivos. Eu optei por renomear o host para tasmota01, facilitando sua identificação, ainda mais após adicionar vários dispositivos.

Outra opção é através de um scanner, seja o nmap, Wireshark, scanner em shell script ou um scanner de portas feito com Arduino ou um scanner de portas feito com ESP32. Opções não faltam. Descobriu o IP que seu ESP8266 pegou? Então abra um browser e digite o endereço correspondente. Deve abrir uma tela semelhante a essa:

ESP8266 com Alexa

Em configuração > configurar outras opções escolha Belkin WeMo para dispositivo com 1 relé e Hue Bridge com dispositivo para mais relés. Escolha um nome amigável para chamar. Não é necessário instalar nenhum aplicativo no smartphone para fazer o reconhecimento, basta aguardar que o dispositivo reinicie após aplicar as configurações e dizer:

“Alexa, descobrir dispositivos”.

Aí está seu ESP8266 com Alexa! Mas ainda falta configurar os GPIO, afinal, ligar e desligar o quê? Por padrão já temos esse primeiro GPIO configurado (que aparece como “OFF”). Configurei com o nome “tasmota”, então ao dizer: “Alexa, ligar tasmota” – o dispositivo é ligado e a string passa de OFF pra ON.

Clicando em Configurar Módulo, ajuste o GPIO de acordo. Eu configurei o D5/GPIO14 para esse módulo de teste.

Já coloquei também em meu broker MQTT e vi alguns tópicos que o dispositivo publica por padrão. Se eu me animar, teremos um belo dashboard com essas informações!

Assim como no fauxmo, o número máximo de dispositivos descobertos pela Alexa será 4. Assim que eu conseguir fazer o vídeo veremos mais detalhes, então partimos para outro artigo da série. Aproveite para ir se inscrevendo no canal Dobitaobyte no Youtube para não perder nada!