Intel Edison com WhatsApp

Intel Edison com WhatsApp

Recentemente tivemos o Intel IoT RoadShow 2015 em São Paulo, onde participei juntamente com os membros Igor Borges, Pedro Bertoleti e Fabio Souza no projeto MonitorAKI. Neste projeto utilizamos conceitos de Visão Computacional, Internet das Coisas com ThingSpeak, comunicação com Twitter e até mesmo envio de mensagens via... WhatsApp!

 

Este último detalhe chamou bastante a atenção, e muitos me pediram para logo publicar o passo-a-passo de tal façanha. Assim, resolvi fazer este tutorial orientando os procedimentos necessários para instalar a aplicação Yowsup, escrita em Python e responsável por comunicar a Intel Edison com WhatsApp.

 

Observem que todo este guia se baseia em uma Intel Edison com ambiente Linux Yocto, o "tradicional", por assim dizer.

 

Como eu fiz bastante coisa, resolvi recomeçar do zero, ou seja, regravei o firmware da minha Intel Edison, correspondente à versão Yocto 2.1 desenvolvida pela Intel, e que pode ser baixada no link em destaque.

 

Para ver detalhes e demais informações sobre como proceder com a gravação do sistema, siga os passos mostrados nesta página de suporte da Intel (informações em inglês).

 

Intel Edison pronta? Imagem Yocto gravada? Drivers carregados no Windows?

 

 

Criação do ambiente na Intel Edison com WhatsApp

 

O principal detalhe de todos é colocar a Intel Edison na rede Wi-Fi, o que pode ser feito com o seguinte comando no console, com atenção para as instruções destacadas pelo guia de configuração do comando:

 

Depois, é preciso fazer a atualização dos pacotes e atualização geral do sistema por meio dos seguintes comandos:

 

Pronto? Ainda não. Como vamos precisar de alguns pacotes extras, contamos com a boa sorte de termos repositórios adicionais, os quais possuem uma grande quantidade de pacotes em sua base.

 

Para isso, acessamos o arquivo /etc/opkg/base-feeds.conf para inserir os repositórios adicionais por meio do seguinte comando: 

 

Ao ter o arquivo aberto em sua tela de console, adicione as seguintes linhas, que correspondem aos repositórios adicionais:

 

Usando o editor vi, lembre-se que para sair do modo de edição é preciso pressionar a tecla ESC e depois o comando :wq para salvar o arquivo e sair.

 

Feito isso, novamente faça a atualização da listagem de pacotes por meio do comando:

 

É possível instalar o Yowsup de 2 formas:

 

1) Fazer download dos fontes por meio do repositório GitHub e instalar o programa com suas dependências e estrutura por meio do seguinte comando, realizado no diretório do repositório baixado:

 

2) Instalar o utilitário Python pip e realizar o download do yowsup.

 

Eu realizei no Intel IoT Roadshow 2015 a opção 1, mas ao tirar um tempo para refazer os passos necessários, vi que o Yowsup já está devidamente alocado na base de pacotes do Python pip. Dessa forma, recomendo fortemente que você, leitor, vá pelo caminho da opção 2.

 

Se você quiser se aventurar pela opção 1, certamente irá se deparar com problemas de dependências, pacotes faltando, e uma infinidade de surpresas mais 🙂

 

Afinal de contas, o que é esse tal de pip? Ele é um sistema de administração/gestão de pacotes Python! Sua usabilidade e funcionalidade é bem semelhante ao que você tem quando usa apt-get em sistemas Debian, ou o opkg no Linux da Intel Edison.

 

Falei, falei, falei. Vamos instalar o pip? Isso é possível por meio do seguinte comando:

 

Intel Edison configurada, pacotes atualizados, pip instalado. Só falta uma coisa então para começar a diversão: Yowsup. Este pacote Python pode ser instalado pelo seguinte comando, usando agora o recém-instalado pip: 

 

Este comando agora demora. O pip irá baixar todas as dependências, construir os pacotes necessários, dentre outras muitas coisas mais. Tenha uma boa dose de paciência, vá tomar um café, ver uns vídeos engraçados no Youtube 😉

 

Finalizado o processo de download, instalação e configuração (automática - ainda bem), precisamos entender alguns conceitos para usar o WhatsApp.

 

O sistema do WhatsApp é todo via WebServices, ou seja, não faz uso de ligações ou mensagens SMS (a princípio...), usa pura e simplesmente a Internet. Mas a título de criar uma chave de registro única e vinculada a um número de telefone celular válido, o sistema do WhatsApp envia uma mensagem com um código de cadastro para o número de telefone a ser utilizado no serviço.

 

E para entender essa numeração, vamos lidar com os seguintes conceitos:

  • CC - Country Code: Código da nação, ou seja, código usado para discar para Brasil, Estados Unidos, etc...;
  • MCC - Mobile Country Code: Código de 3 dígitos que referencia a nação;
  • MNC - Mobile Network Code: Código usado pela operadora de telefonia no país, ou seja, é um código associado à Claro, Vivo, TIM, etc.

 

Para ver mais detalhes sobre esses conceitos, além de ver a listagem do Brasil e das operadoras presentes no Brasil (inclusive a que você certamente está usando), veja esta página na Wikipedia. Desta página eu tirei os códigos usados neste exemplo. E funcionaram 🙂

 

De modo a usar bem o Yowsup2, é bom criar um arquivo de configuração com os dados de códigos, chaves, etc. No meu caso eu criei um arquivo chamado whatsapp.config por meio do seguinte comando, usando o editor vi:

 

Com o editor aberto, coloque o seguinte conteúdo no arquivo, tendo por base e referência códigos de telefonia para o seu número de celular. No exemplo eu usei meus dados, e mascarei meu número pessoal de celular.

 

 

Salve o arquivo pressionando a tecla ESC e digitando :wq para salvar e sair do vi.

 

Observação importante: No próximo passo iremos requisitar aos serviços do WhatsApp um código de verificação. É necessário que você esteja usando um aparelho celular para poder receber este código. Todavia, se o WhatsApp estiver em execução no aparelho, o mesmo poderá pegar o código automaticamente.

 

Assim, desative os recursos de Wi-Fi e 3G/4G do celular que você estiver usando com o número a ser trabalhado!

 

Vamos requisitar um código de verificiação aos serviços do WhatsApp, de modo a fazer com que o WhatsApp ache que a nossa Intel Edison é um celular: 

 

No comando passado acima, usamos o yowsup-cli, que é um utilitário em linha de comando da aplicação yowsup. Neste utilitário, temos algumas funções bem interessantes, tais como a registration, que dispara as chamadas necessárias para requisitar o código. Juntamente com essa função, é preciso passar o arquivo de configuração, por meio dos parâmetros -c whatsapp.config e depois dizer que queremos um código via SMS com os parâmetros --requestcode sms. Dê ENTER para disparar o comando. Veja na Figura 1 o resultado do processo na Intel Edison utilizada.

 

intel edison com whatsapp: autenticação
Figura 1 - Requisição de código de autenticação no serviço WhatsApp.

 

Dado o comando, logo seu celular irá receber um SMS com código, tal como mostrado na Figura 2.

 

intel edison com whatsapp: código autenticação sms
Figura 2 - Recebimento do código de autenticação via SMS do WhatsApp

 

Recebido o código, é hora de fazer o registro com o sistema. Com base no código que eu recebi, procedi com o seguinte comando: 

 

Feito isso... O WhatsApp agora enxerga a sua Intel Edison como correspondente ao número de celular utilizado! Caso você tenha WhastApp no celular "cobaia", você bem provavelmente irá receber uma mensagem do WhatsApp indicando que o serviço foi desabilitado. Não o reabilite, caso contrário você terá que proceder novamente com o processo de autenticação na Edison!

 

Após você ter dado o comando citado para registrar o sistema com o código enviado por SMS, aparecerá uma mensagem em sua tela de console bem parecida com a que é mostrada na Figura 3. Apenas escondi o meu número de celular, e destaquei o campo que deve ser copiado nesta mensagem de resposta.

 

intel edison com whatsapp: registro
Figura 3 - Registro no serviço WhatsApp com obtenção do password de acesso.

 

Nesta resposta, copie o código indicado pelo campo pw, que corresponde à sua chave de acesso ao sistema, e cole no arquivo whatsapp.config que criamos previamente, em sequência ao campo "password=", de tal modo que agora o seu arquivo whatsapp.config fique da seguinte forma, com base no meu: 

 

Curiosamente, seu login é seu número de celular, no formato 551699xxxxxxx, indicado no campo phone, como por exemplo para um número no Brasil (55), do Interior de São Paulo (DDD 16).

 

Muito trabalho até agora. Vamos mandar uma mensagem? Veja o comando usado para enviar mensagem abaixo, e como ficou a operação do programa no console na Figura 4. 

 

intel edison com whatsapp: envio de mensagem
Figura 4 - Enviando mensagem via WhatsApp na Intel Edison

 

Pronto! Agora sua Intel Edison é capaz de enviar mensagems via WhatsApp. Veja o resultado na Figura 5!

 

intel edison com whatsapp: mensagem recebida
Figura 5 - WhatsApp recebeu mensagem enviada pela Intel Edison.

 

Por enquanto, ainda não há bem um mecanismo para receber mensagens usando o yowsup-cli, que é esse utilitário em linha de comando que foi usado. Mas o Yowsup fornece toda uma API para ter acesso a envio e recebimento de mensagens, enviar conteúdo multimídia, dentre outras coisas mais.

 

Todavia, é possível você utilizar o yowsup-cli dentro de uma aplicação Python, por exemplo. Veja o seguinte trecho de código Python para ter uma noção:

 

 

 

Ficou interessado sobre como chamar comandos de console em Python? Dê uma lida na documentação e exemplos da biblioteca Subprocess!

 

Assim sendo, temos infinitas possibilidades para se trabalhar com um sistema embarcado integrado à internet e com comunicação via WhatsApp, tais como:

  • Alarmes;
  • Monitoramento de Sensores;
  • Notificação de Eventos;
  • Dentre outros!

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

André Curvello
Graduado em Engenharia de Computação com ênfase em Sistemas Embarcados pela USP, campus São Carlos, possui MBA em gestão de TI pela UNIFRAN e Mestrado em Ciências pela EESC-USP. Atua como Analista de Tecnologia para Sistemas Embarcados na Padtec S/A, sendo também professor de pós-graduação e instrutor de cursos na área de sistemas embarcados. Como hobby, gosta de programar tudo que pode ser programado, escovando bits sempre ao lado de um bom café. Gosta de compartilhar seu conhecimento por meio de palestras, e publicando artigos como colaborador dos sites Embarcados e FilipeFlop.

9
Deixe um comentário

avatar
 
9 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
Fellipe SoaresAkanksha Dixithenrique branco dutraHaroldo AmaralAndre Tenorio Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Joseildo Silva
Visitante
Joseildo Silva

Olá André, sobre o erro de old_version tem alguma solução? mudei a versão no arquivo env_s40 o erro da versão é corrigido porem dá um erro de bad_token, Obrigado!

Joseildo Silva
Visitante
Joseildo Silva

Estou com o mesmo problema!

Fellipe Soares
Membro
Fellipe Soares

Amigo, e sobre a questão do bloqueio? Vi pela net, que se usar qualquer tipo de script, o Whatsapp bloqueia o numero... é verdade?

Akanksha Dixit
Visitante
Akanksha Dixit

I tried the above steps but after receiving the sms , i try to send a msg on whatapp using command : yowsup-cli demos -s 551699xxxxxxx "Intel Edison mandando mensagem via WhatsApp no Embarcados" -c whatsapp.config

But it says :

ImportError: No module named axolotl_curve25519

Kindly tell what is the problem ..even tried downloading this package using:
pip install axolotl_curve25519

but it says :

rootEdison Oliveiraedison81:~# pip install axolotl_curve25519Downloading/unpacking axolotl-curve25519
Could not find any downloads that satisfy the requirement axolotl-curve25519
No distributions at all found for axolotl-curve25519

henrique branco dutra
Visitante
henrique branco dutra

Olá André, estou tentando implementar este mesmo tutorial em um ambiente linux rodando Ubuntu 14.04 server, porem não consigo registrar meu numero, quando executo o o comando: "yowsup-cli registration -c whats.config --requestcode sms" recebo a seguinte mensagem: "INFO:yowsup.common.http.warequest:{"status":"fail","reason":"old_version"}
".
andei procurando na internet uma possível solução mas não encontrei nada que ajudasse, voce consegue me da uma luz sobre este problema?
abraço

trackback
Intel Edison com WhatsApp - Tutorial

[…] Post de minha autoria, originalmente publicado no Embarcados. […]

trackback
Intel Edison com WhatsApp - Peguei do

[…] “Recentemente tivemos o Intel IoT RoadShow 2015 em São Paulo, onde participei juntamente com os membros Igor Borges, Pedro Bertoleti e Fabio Souza no projeto MonitorAKI. Neste projeto utilizamos conceitos de Visão Computacional, Internet das Coisas com ThingSpeak, comunicação com Twitter e até mesmo envio de mensagens via… WhatsApp!” [referência: embarcados.com.br] […]

Haroldo Amaral
Membro
Haroldo Amaral

Show de Bola André!
Preciso de uma Edison para brincar também.

Andre Tenorio
Membro
Andre Tenorio

Ótimo meu doutor!