Faire remonter la taille d’un individu dans Google Analytics

Un grand merci à la communauté http://stackoverflow.com/ ainsi qu’à Jean-Baptiste à qui je dédie cet article, certes très expérimental mais qui me donne déjà plein d’idées, bonne lecture 🙂

Je pense que la plupart d’entre vous ont entendu parler des objets connectés mais se sentent encore peu concernés. Le but de cet article est de faire prendre conscience que les objets connectés vont probablement dégommés tout sur leur passage et que l’on va connaitre un nouvel ouragan tel le début des années 2000. Dans cet article l’idée est de vous montrer qu’il est simple de pouvoir remonter la taille d’un individu dans Google Analytics. Quel est l’intéret d’une telle fonction? pour le moment je n’en vois pas, on peut éventuellement imaginer cela pour un magasin de chaussures avec des gros clichés de type(si individu grand alors fait clignoter les étagères qui comportent des grandes pointures). En fait j’avais plutôt imaginé ce cas pour calculer les entrées dans un magasin physique afin de pouvoir les comparer aux visites d’un site internet, et à partir de là j’ai pensé que la taille pouvait être une information additionnelle simple à récupérer.

Un article simple à comprendre et à mettre en application

Je sais que la mise en application est simple car j’ai réussi à la faire et que vous allez voir le code est facile à comprendre. Cependant cet article nécessite des compétences dans les domaines suivants:
– Arduino;
– Google Analytics;
– Python;
pas de stress si vous n’êtes pas expert dans ces domaines je vais faire le nécessaire pour démocratiser tout cela(dixit celui qui n’y connait rien non plus).

Premier mécanisme: Arduino

Tout va partir d’une carte Arduino, et oui naturellement pour pouvoir passer du physique au réel il va vous falloir acheter du matériel, du bon vieux hardware. Vous pouvez trouver de l’Arduino un peu partout, y compris des bonnes affaires sur le bon coin, idem vous pouvez trouver des modèles simplifiés tels que Thingz, Littlebits… dans mon cas de figure pour cet exemple j’ai directement acheté un kit entier sur Amazon pour un peu moins de 50€(dont une soixantaine de leds dont je ne sais pas quoi faire) qui comprend plus de 250 pièces. Pour la réalisation du tutoriel vous n’aurez besoin que de 8 composants:
– cable usb
– carte Arduino (dans mon cas une Arduino Uno)
– 4 cables
– une breadboard
– le composant HC-SR04
Le composant HC-SR04 est un émetteur d’ultrason dès qu’il rencontre un obstacle le son lui revient et il peut ainsi déterminer la distance à laquelle il a rencontré l’objet et dans notre cas va nous aider à déterminer la taille de l’individu.
Pour information j’ai mis toutes les informations qui vous intéresse sur le petit site suivant: http://carte-arduino.blogspot.fr/

Quelques explications sur le code?

 

int trig = 10; // en gros on déclare le composant
int echo = 11;
long echo_read;
long cm;

void setup()
{
pinMode(trig, OUTPUT); // definition du pin trig ( pin 10 ) en OUTPUT = sortie : émetteur
digitalWrite(trig, LOW);
pinMode(echo, INPUT); // definition du pin echo ( pin 11 ) en INPUT = entrée : recepteur
Serial.begin(9600); // definition du Moniteur serie avec un taux de rafraichissement de 9600 bauds
}

void loop()
{
digitalWrite(trig, HIGH);
delayMicroseconds(10); // Stoppe le programme pendant 10 microsecondes .
digitalWrite(trig, LOW);
echo_read = pulseIn(echo, HIGH); /* Lit la durée de l’impulsion niveau HAUT appliquée sur la broche echo qui est configurée en ENTREE.
L’instruction pulseIn() attend que la broche passe à HAUT, commence alors le chronométrage, attend que la broche repasse au niveau BAS et stoppe alors le chronométrage.
L’instruction renvoie la durée de l’impulsion en microsecondes ( 1 millions de microsecondes par secondes). L’instruction s’arrête et renvoie 0 si aucune impulsion n’est survenue dans un temps spécifié.
*/

cm = echo_read / 58; // Calcul la distance en cm cf le site http://www.micropik.com/PDF/HCSR04.pdf
if (cm < 106)
{
Serial.print(206-cm); //Affiche la taille de l’individu, chez moi l’appareil est à 2 mètres 6

Serial.print(‘\n’);
}
delay(1000); // Stoppe le programme pendant 1000 microsecondes sois 1 seconde.
}

En gros avec ce programme Arduino votre émetteur va réagir et envoyer la taille de l’individu lorsqu’il franchi une porte, il n’y a plus qu’à etre un peu bricoleur chez vous et le mettre au dessus d’une porte.

Résultat:

moniteur-serie

Deuxième et troisième mécanisme: le script Python et Google Analytics

Dans mon cas de figure je n’ai pas d’émetteur wifi, ni bluetooth sur ma Arduino du coup je passe via le cable usb et mon ordinateur pour envoyer des requetes, mon script Python va donc avoir la forme suivante:

import serial, requests
arduino = serial.Serial(‘/dev/ttyACM0’, 9600)
while True:
data = arduino.readline()
print data
r = requests.get(‘http://www.google-analytics.com/collect?v=1&tid=UA-33333333-1&cid=666666666&t=event&ec=Entree-magasin&ea=passage&el=’+str(data)+’&ev=’+str(data)+”)
print r

Ici la première ligne sert à indiquer les fonctions qu’on va appeler, serial permet d’écouter le port série de notre Arduino et donc de récupérer les datas qui en sortent, requests permet d’envoyer des requetes http.
La deuxième ligne on lui indique sur quel port se trouve notre Arduino.
La troisième dit que si il entend des choses alors il enclenche la ligne 4.
La ligne 4 définie que ce qui sort de la Arduino c’est notre variable.
La ligne 5 a pas vraiment d’intéret c’est plus pour vérifier sur votre ordinateur que ça marche.
La ligne 6 sert à envoyer notre requete à Google Analytics, si vous avez lu mon pseudo article sur le Measurement Protocol alors je pense que vous avez déjà tout compris.
La ligne 7 a le meme role que 5 c’est juste pour me rassurer.

Le résultat(en mode crade)

Screenshot 2015-07-28 at 17.01.58

 

Comme vous pouvez le constater j’ai choisi de faire remonter cela en tant qu’événement alors que la logique voudrait que la taille d’un individu soit une dimension personnalisée et le nombre de passages en magasin une dimension personnalisée. Mais bon vous etes grands vous saurez faire les modifications nécessaires.

Confidentialité des Données Mentions Légales CGV