Conversando com o Arduino usando Telegram e JavaScript

Como usar a API do Telegram e o Johnny-Five para interagir com seu Arduino.

Rafael Specht da Silva
IO Publishing
2 min readNov 30, 2015

--

Em meus experimentos com a tal “internet das coisas” sempre acabei limitado à rede wi-fi de onde eu estava, até que eu vi este belo módulo para lidar com bots do Telegram em Node.js e agora posso me comunicar de qualquer lugar que tenha internet usando o app.

Um breve diálogo com o bot :)

Quando fiz uma palestra no Nodebots Day em Porto Alegre demonstrei como criar um servidor e associar rotas específicas a sensores/motores/leds. Isso permite que, ao digitar uma url num browser qualquer (não importa se é notebook, tablet, smartphone, etc), eu me comunique com o Arduino. Logo, algo como

http://192.168.0.3/servo/angle/90

seta o ângulo do servo para a posição de 90 graus. Ou

http://192.168.0.3/buzzer/300

toca a frequência de 300 hertz no buzzer por um tempo pré-determinado no código.

O código desse exemplo está aqui.

Isso é bem útil, mas eu ainda sentia a necessidade de saber o status de um sensor mesmo estando realmente longe dele. Existem alguns serviços e plataformas que resolvem esse problema, mas alguns precisam de hardware especial e eu não queria comprar nada. Eis que numa JavaScript Weekly eu vi o módulo citado acima e: *plim*. Temos uma interface muito simples!

Eu criei um repositório no Github chamado Johnny-Telegram (porque criatividade é mesmo meu forte) com alguns exemplos.

No primeiro caso vamos controlar um led. O código que deve ser rodado para controlar o Arduino é o seguinte:

E assim podemos enviar um comando pelo telegram

chamando o método ‘blink’ com o parâmetro 500. A resposta deve ser

E agora podemos chamar os métodos que a API do Johnny Five expõe!

No segundo exemplo, adicionaremos um sensor de proximidade:

Já que estamos chamando o método ‘setValue’ sempre que temos dados vindos do sensor, podemos acessar o valor atual com um comando no telegram:

E teremos a resposta:

Agora podemos enviar comandos e receber dados!

Mas talvez você queira receber uma mensagem se a distância estiver acima ou abaixo de um valor específico. Daí basta usar ‘majorthan’ ou ‘minorthan’:

Esse comando adiciona um gatilho chamado “40cm” que checa se o valor do sensor é maior que 40 a cada 0.5 minutos. A resposta que confirma se foi bem-sucedido é:

Caso o valor se encaixe nas condições, uma mensagem é enviada:

Novamente, existem inúmeras outras formas de fazer essa comunicação, mas um módulo em Node para um app que eu uso todo dia me motivou a criar esse repositório! E por mais que pareça bizarro usar JavaScript para isso, lembre-se que até a IBM acha razoável!

--

--

Rafael Specht da Silva
IO Publishing

Web developer, gif sommelier, once called “weird webby wizard”