Controlando um Arduino com Watson Assistant

Neste artigo iremos ver como utilizar uma aplicação construída em React que permite o usuário controlar um Arduino a partir da interação com um chatbotbot.

Leonardo Souza
Bots Brasil
4 min readJun 4, 2019

--

Conectando o Arduino ao Nodejs

Para que possamos realizar a comunicação entre o Arduino e o bot devemos ter o node.js instalado no computador. A blibioteca utilizada para integrar nossos componentes é a Johnny-Five. Com esta biblioteca é possível declarar quais são os pinos que serão utilizados do arduino, se forem utilizados LEDs, sensores, motores e entre outros componentes. Os arquivos necessários para rodar a aplicação em node encontram-se na pasta ts-apistandart. Para fazer o server em node funcionar use os seguintes comandos:

Npm é um gerenciador de bibliotecas que permite instalar, desinstalar compilar e iniciar aplicações em node. Quando usamos o install dizemos ao node para instalar todas as depedências que estão cadastradas no arquivo package.json. O comando run compile faz com que o node faça a compilação dos arquivos. Já o start faz com que o server inicie. Com o Arduino conectado e o código StandartFirmata rodando nele, a mensagem no prompt será de que foi possível conectar ao Arduino e a porta que o server está rodando. Agora para acionar um dos LED’s do Arduino acesse no browser a url “localhost:3500/banheiro?turn=on”.

Aplicação em React

React é um Framework em javascript que permite realizar a criação de sites usando linguagem de programação JavaScript e tags em HTML.

A pasta chat-bot contem todos os arquivos que foram necessários para criar esta aplicação. Para subir o projeto, execute os comandos:

Depois de executar o npm start uma nova aba irá abrir em seu navegador com o seguinte link: “localhost:3000”, onde será possível visualizar e interagir com o chatbot, conforme imagem abaixo.

(aplicação do React rodando)

Para melhorar a parte visual deste projeto foi usado Bootstrap e Reactstrap. Já na parte de comunicação foi usado o Reduxo, que possibilita que as mensagens enviadas pelo usuário sejam enviadas a uma função do firebase que envia os dados a API do Watson Assistant e retorna a resposta do bot. O Redux também coleta esta mensagem e exibe na conversa. Quando o Redux recebe a mensagem do bot, é feita uma verificação para identificar a intenção e as entidades enviadas pelo bot. É nessa parte que a mágica acontece, dependendo da intenção e da entidade verificada é feita uma comparação usando if’s. Quando o bot identifica algum dos cômodos e qual aparelho é para acionar é executado um fetch na url do server em nodejs.

(verifica a entidade recebida pela resposta do watson)

Watson Assistant

Dentro da pasta assistant ancontra-se um arquivo em formato .json que contem uma skill do Assistant para você realizar o deploy na API do Watson Assistant da IBM, assim você terá um bot pra chamar de seu.

Firebase Functions

Como foi dito anteriormente existe uma função no firebase que permite receber a mensagem do usuário, enviar ao bot, que coleta a reposta e por último à envia para aplicação do React. A pasta functions contem todas os arquivos necessários para fazer esta aplicação. No arquivo SAMPLE.env é necessário colocar as credenciais da Skill do Watson. Vá em Skills e clique nos três pontos ao lado do nome da Skills, você irá precisar da Workspace ID, Username e Password. Depois altere o nome do arquivo para apenas “.env”. Para fazer o deploy desta aplicação é preciso ter no computador o firebase-tools, para instala-lo é preciso rodar o comando:

Vá até o https://console.firebase.google.com/ e crie um novo projeto. Altere para o plano Blaze. Agora na pasta raiz do projeto execute o comando.

Selecione a opção functions usando os cursores do teclado e a tecla space. Isso cria um arquivo .json que irá vincular ao seu projeto do firebase.

Para fazer o deploy use o comando:

ou

Isso irá retornar uma url da sua função, copie e cole na constante “url” do arquivo action/watson.js.

Agora o seu bot irá se comunicar com a sua função, isso permite que o fluxo seja alterado, crie novas intenções, entidades, novas repostas para o usuário e novos comandos a serem executados quando o bot envia a resposta que irá interagir com o seu chatbot.

Código do Github: https://github.com/leomozzer/ReactChatbot

--

--