IoT — Automação Residencial com Chatbots (na prática)

Automação Residencial já foi considerado luxo. Somente pessoas com alto poder aquisitivo tinha acesso a esse tipo de conforto. Tal assunto inclusive foi tema da minha monografia para a conclusão do curso de Engenharia de Computação em 2008 — Automação Residencial usando microcontroladores e tecnologias de estado da arte em programação voltada para à internet. O mesmo tinha como finalidade pesquisar, simular e implementar uma solução de baixo custo, usando microcontrolador 8051, o que possibilitava ser controlado através de interfaces móveis ou fixas, como por exemplo, um PC ou um celular com WAP (old).
De 2008 a 2017 tivemos um grande avanço tecnológico, temos agora em nosso alcance uma gama de possibilidades práticas e econômicas para viabilizar tal automação. Sendo assim, resolvi publicar diversos artigos com o intuito de mostrar algumas possibilidades com a utilização dos conceitos de IoT integrado com chatbots. Então, vamos começar!
O que é IoT e Chatbots?
A Internet das Coisas (do inglês, Internet of Things) é uma revolução tecnológica a fim de conectar dispositivos eletrônicos utilizados no dia-a-dia (como aparelhos eletrodomésticos, eletroportáteis, máquinas industriais, meios de transporte etc.) à Internet, cujo desenvolvimento depende da inovação técnica dinâmica em campos tão importantes como os sensores wireless, a inteligência artificial e a nanotecnologia. — Wikipédia
O Chatbot é um programa de computador que tenta simular um ser humano na conversação com as pessoas. O objetivo é responder as perguntas de tal forma que as pessoas tenham a impressão de estar conversando com outra pessoa e não com um programa de computador. Após o envio de perguntas em linguagem natural, o programa consulta uma base de conhecimento e em seguida fornece uma resposta que tenta imitar o comportamento humano. — Wikipédia
Se você ficou com dúvida sobre chatbot não se preocupe, nosso amigo Caio Calado definiu muito bem O que é um chatbot? em seu artigo.
O que vamos fazer?
Este primeiro artigo tem como objetivo demonstrar o passo a passo da possibilidade de controlar o acionamento de uma lâmpada através de um chatbot. Além disso, iremos integra-lo com o Google Home simulando uma verdadeira automação residencial via controle de voz.
O que vamos precisar?
Nosso projeto será dividido em 3 partes:
1ª Parte: IoT (Internet das Coisas)
Para o acionamento da lâmpada utilizaremos:
- 1 Arduino Uno
- 1 Ethernet Shield W5100
- 1 Lâmpada
- 1 Relê 5V
2ª Parte: Chatbot
O bot será construído utilizando a plataforma do Google API.ai.
Veja uma breve introdução da plataforma por Bruno Brandes ou assistam o hangout da comunidade BotCaverna (Telegram) no qual participei juntamente com o Jackson F. de A. M. e o Rian Nascimento para entender mais sobre API.ai.
3ª Parte: Google Home
A integração com o Google Home será feito através do API.ai com o Google Actions
Mão na Massa — 1ª Parte: IoT (Internet das Coisas)
Para modelar o circuito eletrônico com Arduino utilizaremos o Fritzing, uma ferramenta open source disponível para Windows, Linux e MAC OS.

Seguindo o protótipo, o circuito real fica semelhante a imagem abaixo:
** Dica: Faça todas as conexões antes de ligar a lâmpada na tomada.**

Cuidado! Alta Tensão! Se você não souber trabalhar com corrente elétrica NÃO FAÇA, é perigoso tomar choque!!!
Nesse ponto será necessário fazer upload do sketch (código) no Arduino. Se nunca trabalhou com o Arduino, siga os passos abaixo:
- Baixe a IDE;
- Conecte o Arduino na porta USB utilizando seu cabo;
- Abra uma NOVA sketch;
- Cole o código lamp.ino na IDE;
- Clique no botão VERIFICAR (1);
- Clique no botão CARREGAR (2);
- Após o carregamento seu Arduino estará pronto.

Em caso de dúvidas, recomendo ler o manual no site oficial ou deixar um comentário para que possa ajudá-lo.
Podemos perceber pelo código acima que o Arduino é responsável por enviar comandos para alteração de estado do relê, que por sua vez controla o acionamento da lâmpada. Em suma, o relê abre e fecha o circuito para que a lâmpada possa ser ligada ou desligada. Todo esse processo é feito através de uma simples chamada via browser.
O entendimento dessa primeira parte pode ser vista no vídeo a seguir:
Mão na Massa — 2ª Parte: Chatbot
Utilizando a plataforma API.ai iremos criar um agente (assistente virtual) com algumas intents simulando a funcionalidade de acionamento da lâmpada. — Faça o download do agente e importe para o API.ai. 😉
A ideia é que nosso assistente virtual tenha a capacidade de verificar o estado da lâmpada (ligado / desligado) e que possa manipular esses estados (ligando / desligando).

Na opção fulfillment do API.ai habilitaremos o webhook para o endpoint através do link em https, gerado pelo serviço do ngrok que tem a capacidade de criar um túnel seguro com um servidor local (localhost).
O endpoint contém um arquivo em PHP, que de forma bem simples irá realizar as alterações de estado da lâmpada.
Com o API.ai devidamente configurado e o Arduino ligado vamos testar a integração de ambos.
Mão na Massa — 3ª Parte: Google Home
Finalizando o artigo, esta última parte tem como objetivo integrar nosso bot com o Google Home através da plataforma Google Actions.
Uma observação a ser feita é que recentemente a API do Google Actions foi atualizada para versão 2. Sendo assim, foi necessário realizar alguns ajustes em nosso arquivo PHP do endpoint, para que seu retorno seja compatível com a mesma. Veja aqui o arquivo alterado.
Após realizar os ajustes no arquivo do endpoint, dentro do API.ai iremos clicar em Integration e ativar a opção Actions on Google em settings:

Com as configurações realizadas, iremos clicar no botão TEST e consequentemente em VIEW para que o simulador do Google Home seja aberto.
Por fim, com o simulador aberto faz se necessário requisitar seu bot para o assistente através do comando "Talk to my test app". Feito isso o mesmo está habilitado para executar suas ações como mostra o vídeo abaixo:
Bom, espero que tenham gostado. Em breve disponibilizarei outros artigos utilizando IoT com sensores que podemos facilmente consumir seus dados, tais como: temperatura, umidade, presença, distância, além de poder solicitar e receber imagens de câmeras através do chatbot.
Gostaria de agradecer a todos que diretamente ou indiretamente contribuíram com este artigo. Em especial para os feras Ricardo Blumer Grobel, Caio Calado, Jackson F. de A. M. e Rian Nascimento.
Dúvidas?! Estou à disposição!

