Weekend Project 1 – Raspberry Pi et Whatsapp

J’ai remarqué que le dernier article que j’ai posté à propos du reverse de whatsapp a été beaucoup apprécié, alors dans la même série sur cette application populaire, je propose aujourd’hui un mode opératoire, simplifié, pour vous inspirer à concevoir des projets électroniques qui tirent parti de la versalitilé du populaire « whatsapp ».

Raspberry Pi est une carte qui facilite le développement de projets éléctroniques « DIY ». Dans le cadre de notre projet par exemple, il serait possible de l’utiliser dans la domotique avec des capteurs (image, température, humidité, détecteur d’incendie, détecteur d’intrusion ..) et grâce au mode opératoire qui suit, la configurer pour vous prévenir de tout événement via Whatsapp.
Une recherche rapide sur internet vous donnera des idées de projets à réaliser via raspberry.
Nous n’allons pas réinventer la roue, mais utiliser une bibliothèque Python très puissante, et simple d’utilisation : Yowsup pour réaliser l’interfacage avec les plateformes de Whatsapp.
Pour notre projet donc vous aurez besoin de :

  • Une carte Raspberry Pi (modèle B+ et supérieur) (un budget de 500DH en moyenne pour une raspberry pi B+ Recherche AVITO)
  • RASPBIAN (le port debian linux officiel pour les cartes Raspberry) installé sur une micro SD à utiliser avec notre Raspberry.
  • Un numéro de téléphone mobile de test (une carte prépayée fera très bien l’affaire)
  • une connection internet ! et un petit café.

Je suppose pour la suite que vous êtes familiers avec l’univers unix/linux sinon, nous pourrons en discuter dans les commentaires si vous avez besoin d’éclaircissements pour les différentes étapes.

Etape 1 : Installation des prérequis

Mise à jour des packets sur raspbian :

sudo apt-get update
sudo apt-get upgrade

Mise à jour du firmware

sudo rpi-update

Installation des prérequis python de compilation de yowsup :

sudo apt-get install python-dateutil
sudo apt-get install python-setuptools
sudo apt-get install python-dev
sudo apt-get install libevent-dev
sudo apt-get install ncurses-dev

Téléchargement des sources de yowsup sur Github :

git clone git://github.com/tgalal/yowsup.git

Aller au dossier yowsup :

cd yowsup

installer yowsup à travers le setup python :

sudo python setup.py install

Etape 2 : Activation du compte Whatsapp

Whatsapp utilise un processus d’activation ou d’authentification des numéros de téléphones mobiles à la première utilisation de l’application. Ceci permet notamment d’identifier le compte et de le lier au compte whatsapp généré. J’ai eu l’occasion d’étudier ce processus et je vais l’expliquer dans un article plus tard afin que tout le monde puisse comprendre les échanges et la génération de clé utile à la connection. Mais pour les besoins de ce mode opératoire, nous allons simplifier et utiliser notre SIM de test afin de l’activer pour notre projet.
Yowsup comprend un outil en ligne de commande appelé « yowsup-cli ». Il permet entre autres, l’enregistrement et les fonctionnalité d’un client command line.
L’enregistrement WhatsApp se déroule en deux parties. D’abord vous allez demander un « registration code ». Ensuite vous finalisez l’enregistrement en utilisant ce code.
Demandez un code avec la commande suivante :

python yowsup-cli registration --requestcode sms --phone 2126xxxxxxxx --cc 212 --mcc 604 --mnc 02

Vous aurez compris que :
2126xxxxxxxx : est à remplacer par votre numéro de test mobile.
cc est le country code (ici 212 pour le maroc)
mcc est le Mobile Country Code (inwi comme exemple : 604. Liste des mcc ici )
mnc est le Mobile Network Code (inwi comme exemple : 02)
 
Vous devriez ensuite recevoir sur votre numéro de test un code d’activation whatsapp sous la forme xxx-xxx.
La deuxième étape est d’envoyer la commande suivante en remplacant xxx-xxx avec le code que vous avez recu par sms :

python yowsup-cli registration --register xxx-xxx --phone 212xxxxxxxxxx --cc 212

Si tout se passe bien, voici ce que vous allez avoir comme réponse :

status: ok
  kind: free
  pw: xxxxxxxxxxxxxxxxxx=
  price: € 0,89
  price_expiration: 1416553637
  currency: EUR
  cost: 0.89
  expiration: 1445241022
  login: 212xxxxxxxxxxx
  type: existing

Attention :  
Nous avons volontairement choisi de faire la manipulation avec un numéro de test pour ne pas impacter votre propre numéro. Whatsapp enregistre chaque numéro avec un seul compte et un seul device, il est donc impératif de ne pas utiliser un numéro sur lequel vous utilisez déjà whatsapp.
Sur les tests que j’ai effectué, j’ai plusieurs fois bloqué des numéros de test à cause des manipulations de yowsup, alors évitez de multiplier les tentatives d’enregistrement.
Nous allons utiliser donc la valeur « pw » retournée par l’enregistrement (en gras sur la capture), pour la prochaine étape d’envoi de message, cette valeur est reconnaissable par le « = » à la fin.

Etape 3 : Envoi d’un message

Nous allons créer un fichier de configuration pour enregistrer les paramètres de yowsup à utiliser pour l’envoi de message

sudo nano /home/pi/yowsup/config

Avec le contenu suivant

## Fichier de config yowsup ##
  cc=212
  phone=2126xxxxxxxx
  password=xxxxxxxxxxxxxxx=

On peut à présent tester avec l’application demo de yowsup dans le dossier suivant /home/pi/yowsup/yowsup/demos
Aller au dossier yowsup :

cd /home/pi/yowsup

Démarrer yowsup cli en mode demo avec la commande suivante

yowsup-cli demos --yowsup --config config

Vous allez avoir la ligne de commande yowsup
« /help » vous donnera l’ensemble des commandes disponibles en mode CLI de yowsup :
utilisez « /L » en premier pour le login whatsapp ensuite la commande suivante pour l’envoi de message !

/message send 2126yyyyyyyy "Voici un message depuis la raspberry pi"

Replacer le « 2126yyyyyyyy » par votre destinataire.
Et voilà ! message envoyé et recu par votre destinataire.
Cette petite démo vous permet à présent d’envoyer des messages depuis un command line linux. Dans notre exemple nous le faisons depuis le raspbian de la Raspberry PI. moyennant du scripting il est possible d’appeler cette commande de yowsup depuis vos applications et de pouvoir faire l’envoi. Il est aussi possible de recevoir des messages et de les interpréter pour pouvoir faire des instructions ou actions sur votre machine. Votre imaginaire est votre meilleur partenaire, après google, pour créer toute sorte de projet sur cette base.
Je vous remercie et j’espère vous avoir donné envie de jouer avec la Raspberry ! Je souhaite remercier mon ami Elouam Youssef (), pour m’avoir soufflé le nom de la bibliothèque et m’avoir aidé sur mes tests.
A très bientot.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *