Manual
do
Maker
.
com
Se você é do tipo nerd sedentário, acho que esse artigo pode lhe ser um recurso adicional para não ter que tirar o notebook da barriga enquanto passa o dia na cama. Mas para os moderados, fazer uma casa inteligente com Alexa e atuadores da AFEletronica lhe trará à mão benefícios da vida moderna, relatando status de lâmpadas e acionando-as quando desejado; ligando cafeteiras, controlando a TV, abrindo portões, cortinas e janelas ou outros feitos que sua mente possa imaginar.
Não é uma novidade, isso com certeza. Desde novembro de 2014, qualquer pessoa pode ter um assistente virtual da Amazon, chamada "Alexa". Para interagir com esse assistente virtual podemos utilizar (por exemplo) o dispositivo Echo Dot. Através do dispositivo, podemos fazer pesquisas, buscar por notícias, fazer contas, criar alarmes e o mais interessante, monitorar e atuar no ambiente doméstico, controlando todos os dispositivos possíveis de uma ou mais formas: quando utilizando dispositivos que tenham gerenciamento em nuvem, através de skills; quando utilizando dispositivos onde você quer ter absoluto controle (sendo como maker ou distribuidor de soluções), através do protocolo WeMo, com a biblioteca fauxmo. Desse modo, um serviço é aberto dentro da sua própria rede, cujo serviço pode então ser encontrado pelo Echo Dot dizendo: "Alexa, descobrir dispositivos".
Além da lista de dispositivos que estão no aplicativo para smartphone, também podemos adicionar nossos próprios, como ESP8266 e ESP32. Pois é, o Arduino está ficando cada vez mais longe do mundo atual, onde IoT é o destaque.
A AFEletronica tem uma linha enorme de hardwares dos mais diversos tipos; CLP, placas de controle de portaria, placas para agronegócio, diversos tipos de placas com LoRa, e em comum todas elas têm relés (ao menos um). Utilizando as placas da AFEletronica para essa solução de casa inteligente com Alexa, uma biblioteca lhe dará toda a comodidade necessária para interfacear com os dispositivos de uma forma padrão, sem precisar criar um código para cada coisa, facilitando assim implementações sem estresse.
É um pouco assustador saber que tem um dispositivo pronto para responder ao comando de voz. Isso significa que ele está sempre escutando o ambiente, sem dúvidas. Mas enquanto não houver um gatilho ("alexa", "amazon", "echo"), não haverá transação. No momento em que damos um comando, dispositivos que contêm o chamado "skill" na Amazon, farão a transação online. Quando utilizamos o fauxmo, apenas a conversão da voz é feita fora da sua rede, passando por um canal criptografado com SSL (usando HTTPS), de modo que não haverá risco de interceptação da comunicação.
Tudo tem contrapartida. É o caso de uma criança de 6 anos usando o Alexa para "trapacear" na lição de casa. Teve também o lado bom, do sujeito que foi preso após a Alexa chamar a polícia por estar agredindo sua esposa.
Se o assistente for chamado e não receber comando por 16 segundos, ele volta a aguardar por um novo gatilho, sem riscos de transmitir escuta do ambiente o tempo inteiro. Além disso, acessando o site do Alexa podemos ver o histórico de comandos disparados, caso queira monitorar para ver se tudo anda como esperado, até que o assistente de voz conquiste sua confiança.
Lá pra 2015 já haviam feito uma engenharia reversa no protocolo WeMo suportado pelo assistente Alexa. Usando-o como ponto de partida, podemos fazer diversas integrações interessantes, como implementar MQTT e assim bastará um dispositivo concentrador ou um broker para controlar todos os demais integrantes da rede.
Das bibliotecas para assistentes, me parece que a ESPurna para o assistente da Google é o mais simples de interagir. De qualquer modo, a fauxmoESP é a mais difundida para o Alexa, onde nem tantos conceitos são necessários para implementação.
Temos três dependências importantes a considerar; o ESPAsyncTCP e também o ESPAsyncUDP, além da ESPAsyncWebServer.
Quando solicitada a descoberta de dispositivos (seja pelo app ou dizendo "Alexa, descobrir dispositivos"), um broadcast é enviado em uma porta UDP, onde haverá uma resposta para o solicitante e então as coisas começam acontecer. O problema é que aqui não funcionou nada de primeira. Em dado momento, decidi passar um scanner no ESP8266 pra ver se o serviço estava sendo disponibilizado ou não:
Já havia procurado por portas TCP também. Estava procurando por qualquer sinal de comunicação, como uma sonda procurando por vida em Marte.
Na imagem de destaque está o dispositivo da Amazon, o Echo Dot de terceira geração, onde utiliza-se a porta 80 UDP para o serviço de comunicação, contra a 1901 das versões anteriores. Independente da porta que o Echo Dot venha a buscar o serviço, expus a porta 80. Tive que esgotar as possibilidades, utilizando outra ferramenta: a tshark. Assim como o nmap, hping, tcpdump, dig, nslookup, whois e outras, essas ferramentas estão disponíveis no repositório do Linux, bastando utilizar o gerenciador de pacotes sudo apt-get install nome-do-pacote. Mas espero sinceramente que você não tenha que dispensar as mais de 18 horas que dediquei a descobrir o problema. Adquira os módulos com a AFEletronica e seja feliz!
Gostaria de ter um dispositivo cabeado para interceptar a comunicação na tentativa de pegar qualquer pacote contendo uma transação XML, mas não havia meios.
Pra resumir, após diversos procedimentos, acabei instalando um emulador no Raspberry Pi pra poder entender o que estava acontecendo. Se precisar fazê-lo:
python3 -m pip install fauxmo
#Copie o config-sample.json para config.json
fauxmo -c config.json -vvv
Deixei o arquivo config.json padrão, mas se desejar adaptá-lo, essa é a documentação do fauxmo.
O comando anterior deve dar uma saída similar a essa:
Daí pude ver que havia a necessidade de uma resposta a uma consulta que parte do Echo Dot. Foi necessário implementar um código relacionado no ESP8266 e por fim, consegui colocá-lo para funcionar, restando as demais configurações, agora apenas no firmware. Ufa.
Esse modelo de terceira geração pode ser comprada diretamente da Amazon (clique na imagem abaixo, sou afiliado e ganho uns trocos, se resolver comprar).
É incontestavelmente barato, de extrema qualidade e fácil de configurar, pode pegar sem medo e comece a deixar sua casa inteligente, com Alexa e os módulos atuadores da AFEletronica.
Os módulos da AFEletronica, diretamente com o fabricante. Os hardwares da AFEletronica são nacionais, produzidos por eles e com qualidade para indústria. Tanto que a Peugeot é um dos clientes. Por isso, não espere preço de Xing-Ling porque é hardware feito para durar e implementar com segurança. E se comparado com hardwares que possuem skills, o preço ainda é muito inferior, ou seja, é a melhor opção para fazer sua casa inteligente com Alexa.
Estou desenvolvendo uma biblioteca de alto nível para fazer as interações. Há uma possibilidade de a interface de configuração do dispositivo ser em um servidor web no próprio ESP, portanto não deixe da acompanhar os artigos e evoluções relacionados. Acredite, serão muitos!
O vídeo estará disponível em nosso canal DobitaobyteBrasil no Youtube, tão logo eu possa editá-lo. Será apenas uma apresentação da prova de conceito, mas não deixa de ser agradável. Se não é inscrito ainda, inscreva-se, clique no sininho para receber notificações e deixe seu like. Aproveite também o curso de Raspberry Pi que disponibilizei de forma gratuita, cujas aulas vem sendo publicadas diariamente.
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.