Manual

do

Maker

.

com

Casa inteligente com Alexa e atuadores AFEletronica

Casa inteligente com Alexa e atuadores AFEletronica

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.

O que é Alexa

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".

Que dispositivos podem ser controlados com Alexa?

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.

Por que usar atuadores da AFEletronica?

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.

Segurança e privacidade

É 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.

alexa-cards.webp

Emular um dispositivo WeMo com ESP8266

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.

A biblioteca fauxmoESP

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:

scan_esp8266-nmap.webp

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:

fauxmo-debug.jpg

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.

Onde comprar o Echo Dot?

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).

echo_dot.jpg

É 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.

Onde comprar módulos para usar com Alexa?

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.

Projetos com Alexa da AFEletronica

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!

Vídeo

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.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.