{"id":52,"date":"2016-03-05T15:43:50","date_gmt":"2016-03-05T14:43:50","guid":{"rendered":"http:\/\/www.erroussafi.com\/blog\/?p=52"},"modified":"2020-05-18T01:19:50","modified_gmt":"2020-05-18T01:19:50","slug":"raspberry-whatsapp","status":"publish","type":"post","link":"https:\/\/www.erroussafi.com\/index.php\/2016\/03\/05\/raspberry-whatsapp\/","title":{"rendered":"Weekend Project 1 &#8211; Raspberry Pi et Whatsapp"},"content":{"rendered":"<p>J&#8217;ai remarqu\u00e9 que le dernier article que j&#8217;ai post\u00e9 \u00e0 propos du reverse de whatsapp a \u00e9t\u00e9 beaucoup appr\u00e9ci\u00e9, alors dans la m\u00eame s\u00e9rie sur cette application populaire, je propose aujourd&#8217;hui\u00a0un mode op\u00e9ratoire, simplifi\u00e9, pour vous inspirer \u00e0 concevoir\u00a0des projets \u00e9lectroniques qui tirent parti de la versalitil\u00e9 du populaire &#8220;whatsapp&#8221;.<br \/>\n<!--more--><br \/>\nRaspberry Pi est une carte qui facilite le d\u00e9veloppement de projets \u00e9l\u00e9ctroniques &#8220;DIY&#8221;.\u00a0Dans le cadre de notre projet par exemple, il serait possible de l&#8217;utiliser dans la domotique avec des capteurs (image, temp\u00e9rature, humidit\u00e9, d\u00e9tecteur d&#8217;incendie, d\u00e9tecteur d&#8217;intrusion ..) et gr\u00e2ce au mode op\u00e9ratoire qui suit, la configurer pour vous pr\u00e9venir de tout \u00e9v\u00e9nement via Whatsapp.<br \/>\nUne recherche rapide sur internet vous donnera des id\u00e9es de projets \u00e0 r\u00e9aliser via raspberry.<br \/>\nNous n&#8217;allons pas r\u00e9inventer la roue, mais utiliser une biblioth\u00e8que Python tr\u00e8s puissante, et simple d&#8217;utilisation : Yowsup pour r\u00e9aliser l&#8217;interfacage avec les plateformes de Whatsapp.<br \/>\nPour notre projet donc vous aurez besoin de :<\/p>\n<ul>\n<li>Une carte Raspberry Pi (mod\u00e8le B+ et sup\u00e9rieur) (un budget de 500DH en moyenne pour une raspberry pi B+\u00a0<a href=\"http:\/\/www.avito.ma\/fr\/maroc\/carte_raspberry--%C3%A0_vendre\">Recherche AVITO<\/a>)<\/li>\n<li>RASPBIAN (le port debian linux officiel pour les cartes Raspberry) install\u00e9 sur une micro SD \u00e0 utiliser avec notre Raspberry.<\/li>\n<li>Un num\u00e9ro de t\u00e9l\u00e9phone mobile de test (une carte pr\u00e9pay\u00e9e fera tr\u00e8s bien l&#8217;affaire)<\/li>\n<li>une connection internet ! et un petit caf\u00e9.<\/li>\n<\/ul>\n<p>Je suppose pour la suite que vous \u00eates familiers avec l&#8217;univers unix\/linux sinon, nous pourrons en discuter dans les commentaires si vous avez besoin d&#8217;\u00e9claircissements pour les diff\u00e9rentes \u00e9tapes.<\/p>\n<h3>Etape 1 : Installation des pr\u00e9requis<\/h3>\n<p>Mise \u00e0 jour des packets sur raspbian :<\/p>\n<pre>sudo apt-get update<\/pre>\n<pre>sudo apt-get upgrade<\/pre>\n<p>Mise \u00e0 jour du firmware<\/p>\n<pre>sudo rpi-update<\/pre>\n<p>Installation des pr\u00e9requis python de compilation de yowsup :<\/p>\n<pre>sudo apt-get install python-dateutil<\/pre>\n<pre>sudo apt-get install python-setuptools<\/pre>\n<pre>sudo apt-get install python-dev<\/pre>\n<pre>sudo apt-get install libevent-dev<\/pre>\n<pre>sudo apt-get install ncurses-dev<\/pre>\n<p>T\u00e9l\u00e9chargement des sources de yowsup sur Github :<\/p>\n<pre>git clone git:\/\/github.com\/tgalal\/yowsup.git<\/pre>\n<p>Aller au dossier yowsup :<\/p>\n<pre>cd yowsup<\/pre>\n<p>installer yowsup \u00e0 travers le setup python :<\/p>\n<pre>sudo python setup.py install<\/pre>\n<h3>Etape 2\u00a0:\u00a0Activation du compte Whatsapp<\/h3>\n<p>Whatsapp utilise un processus d&#8217;activation ou d&#8217;authentification des num\u00e9ros de t\u00e9l\u00e9phones mobiles \u00e0 la premi\u00e8re utilisation de l&#8217;application. Ceci permet notamment d&#8217;identifier le compte et de le lier au compte whatsapp g\u00e9n\u00e9r\u00e9.\u00a0J&#8217;ai eu l&#8217;occasion d&#8217;\u00e9tudier ce processus et je vais l&#8217;expliquer dans un article plus tard afin que tout le monde puisse comprendre les \u00e9changes et la g\u00e9n\u00e9ration de cl\u00e9 utile \u00e0 la connection. Mais pour les besoins de ce mode op\u00e9ratoire, nous allons simplifier et utiliser notre SIM de test afin de l&#8217;activer pour notre projet.<br \/>\nYowsup comprend un outil en ligne de commande appel\u00e9 &#8220;yowsup-cli&#8221;. Il permet entre autres, l&#8217;enregistrement et les fonctionnalit\u00e9 d&#8217;un client command line.<br \/>\nL&#8217;enregistrement WhatsApp se d\u00e9roule en deux parties. D&#8217;abord vous allez demander un &#8220;registration code&#8221;. Ensuite vous finalisez l&#8217;enregistrement en utilisant ce code.<br \/>\nDemandez un code avec la commande suivante :<\/p>\n<pre>python yowsup-cli registration --requestcode sms --phone 2126xxxxxxxx --cc 212 --mcc 604 --mnc 02<\/pre>\n<p>Vous aurez compris que :<br \/>\n2126xxxxxxxx : est \u00e0 remplacer par votre num\u00e9ro de test mobile.<br \/>\ncc est le country code (ici 212 pour le maroc)<br \/>\nmcc est le Mobile Country Code (inwi comme exemple : 604. Liste des mcc <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mobile_country_code\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>\u00a0)<br \/>\nmnc est le Mobile Network Code (inwi comme exemple : 02)<\/p>\n<p>Vous devriez ensuite recevoir sur votre num\u00e9ro de test un code d&#8217;activation whatsapp sous la forme xxx-xxx.<br \/>\nLa deuxi\u00e8me \u00e9tape est d&#8217;envoyer la commande suivante en remplacant xxx-xxx avec le code que vous avez recu par sms :<\/p>\n<pre>python yowsup-cli registration --register xxx-xxx --phone 212xxxxxxxxxx --cc 212<\/pre>\n<p>Si tout se passe bien, voici ce que vous allez avoir comme r\u00e9ponse :<\/p>\n<pre>status: ok\r\n  kind: free\r\n  pw: <strong>xxxxxxxxxxxxxxxxxx=<\/strong>\r\n  price: \u20ac 0,89\r\n  price_expiration: 1416553637\r\n  currency: EUR\r\n  cost: 0.89\r\n  expiration: 1445241022\r\n  login: 212xxxxxxxxxxx\r\n  type: existing<\/pre>\n<p><strong>Attention : \u00a0<\/strong><br \/>\nNous avons volontairement choisi de faire la manipulation avec un num\u00e9ro de test pour ne pas impacter votre propre num\u00e9ro. Whatsapp enregistre chaque num\u00e9ro avec un seul compte et un seul device, il est donc imp\u00e9ratif de ne pas utiliser un num\u00e9ro sur lequel vous utilisez d\u00e9j\u00e0 whatsapp.<br \/>\nSur les tests que j&#8217;ai effectu\u00e9, j&#8217;ai plusieurs fois bloqu\u00e9 des num\u00e9ros de test \u00e0 cause des manipulations de yowsup, alors \u00e9vitez de multiplier les tentatives d&#8217;enregistrement.<br \/>\nNous allons utiliser donc la valeur &#8220;pw&#8221; retourn\u00e9e par l&#8217;enregistrement (en gras sur la capture), pour la prochaine \u00e9tape d&#8217;envoi de message, cette valeur est reconnaissable par le &#8220;=&#8221; \u00e0 la fin.<\/p>\n<h3>Etape 3\u00a0:\u00a0Envoi d&#8217;un message<\/h3>\n<p>Nous allons cr\u00e9er un fichier de configuration pour enregistrer les param\u00e8tres de yowsup \u00e0 utiliser pour l&#8217;envoi de message<\/p>\n<pre>sudo nano \/home\/pi\/yowsup\/config<\/pre>\n<p>Avec le contenu suivant<\/p>\n<pre>## Fichier de config yowsup ##\r\n  cc=212\r\n  phone=2126xxxxxxxx\r\n  password=xxxxxxxxxxxxxxx=<\/pre>\n<p>On peut \u00e0 pr\u00e9sent tester avec l&#8217;application demo de yowsup dans le dossier suivant\u00a0\/home\/pi\/yowsup\/yowsup\/demos<br \/>\nAller au dossier yowsup :<\/p>\n<pre>cd \/home\/pi\/yowsup<\/pre>\n<p>D\u00e9marrer yowsup cli en mode demo avec la commande suivante<\/p>\n<pre>yowsup-cli demos --yowsup --config config<\/pre>\n<p>Vous allez avoir la ligne de commande yowsup<br \/>\n&#8220;\/help&#8221; vous donnera l&#8217;ensemble des commandes disponibles en mode CLI de yowsup :<br \/>\nutilisez &#8220;\/L&#8221; en premier pour le login whatsapp ensuite la commande suivante pour l&#8217;envoi de message !<\/p>\n<pre>\/message send 2126yyyyyyyy \"Voici un message depuis la raspberry pi\"<\/pre>\n<p>Replacer le &#8220;2126yyyyyyyy&#8221; par votre destinataire.<br \/>\nEt voil\u00e0 ! message envoy\u00e9 et recu par votre destinataire.<br \/>\nCette petite d\u00e9mo vous permet \u00e0 pr\u00e9sent d&#8217;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&#8217;appeler cette commande de yowsup depuis vos applications et de pouvoir faire l&#8217;envoi. Il est aussi possible de recevoir des messages et de les interpr\u00e9ter pour pouvoir faire des instructions ou actions sur votre machine. Votre imaginaire est votre meilleur partenaire, apr\u00e8s google, pour cr\u00e9er toute sorte de projet sur cette base.<br \/>\nJe vous remercie et j&#8217;esp\u00e8re vous avoir donn\u00e9 envie de jouer avec la Raspberry ! Je souhaite remercier mon ami Elouam Youssef (), pour m&#8217;avoir souffl\u00e9 le nom de la biblioth\u00e8que et m&#8217;avoir aid\u00e9 sur mes tests.<br \/>\nA tr\u00e8s bientot.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&#8217;ai remarqu\u00e9 que le dernier article que j&#8217;ai post\u00e9 \u00e0 propos du reverse de whatsapp a \u00e9t\u00e9 beaucoup appr\u00e9ci\u00e9, alors dans la m\u00eame s\u00e9rie sur cette application populaire, je propose aujourd&#8217;hui\u00a0un mode op\u00e9ratoire, simplifi\u00e9, pour vous inspirer \u00e0 concevoir\u00a0des projets \u00e9lectroniques qui tirent parti de la versalitil\u00e9 du populaire &#8220;whatsapp&#8221;.<\/p>\n","protected":false},"author":1,"featured_media":6812,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[9],"tags":[],"class_list":["post-52","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2016\/04\/Raspberry_pi_working-640x3531-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":0,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/52\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media\/6812"}],"wp:attachment":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/categories?post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/tags?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}