Faire remonter les visites physiques de votre boutique dans Google Analytics

mais_mais_c_est_de_la_merde_le_pere_noel_est_une_ordureCertains d’entre vous ont pu le découvrir dans l’article suivant : faire remonter les entrées et sorties d’une boutique physique avec Arduino il est assez simple de pouvoir faire remonter cette donnée et pour un coût assez faible. Cependant il est encore plus intéressant de pouvoir faire remonter cette information dans Google Analytics afin de pouvoir par la suite faire un comparatif entre le nombre de visites en boutique et celles sur le site et donc de décider si il faut fermer boutique ou pas :P.

A noter que je ne considère pas personnellement cette technique comme ultime et espère vous montrer dans les prochains jours un meilleur tuto, d’où l’image en médaillon. Rassurez-vous, ce tuto a toute de même de la valeur et peut vous être utile. Un meilleur tuto est disponible ici : http://nicomiceli.com/tracking-your-home-with-google-analytics/ merci Sylvain Peyronnet pour le lien 🙂

Importer les données d’un objet connecté dans Google Analytics

Pour importer les données de notre objet connecté dans Google Analytics il faut utiliser une requête http. Bon si vous êtes comme moi il est possible que cela ne vous parle pas trop, du coup pour résumer il va vous falloir un ordinateur qui va écouter ce qui se dit sur votre carte Arduino et si il y a de la data alors l’envoyer via un script. Dans notre cas nous utiliserons le script Python ci-dessous (ce qui naturellement nécessite d’avoir Python sur votre ordinateur) :

import serial, requests, uuid
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-35798126-1&cid=35386492&t=pageview&dp=%2Fmagasin&cm3='+str(data)+'')
	print r

http://www.google-analytics.com/collect?v=1&tid=UA-35798126-1&cid=65348492&t=pageview&dp=%2Fmagasin&cm3=notre-variable

A noter que j’ai modifié le script Arduino en conséquence afin qu’il n’imprime la donnée que lorsqu’elle est mise à jour. Vous pouvez le consulter le copier/coller ci-dessous :

#define trigPin1 2 //définition du 1er capteur on branche la borne trigger sur le pin 2 de la carte Arduino
#define echoPin1 3 //définition du 1er capteur on branche la borne echo sur le pin 3 de la carte Arduino
#define trigPin2 4 //définition du 2ème capteur on branche la borne trigger sur le pin 4 de la carte Arduino
#define echoPin2 5 //définition du 2ème capteur on branche la borne echo sur le pin 5 de la carte Arduino

void setup() {
Serial.begin (9600); // on va utiliser notre ordinateur afin de lire ce que dit la carte Arduino
pinMode(trigPin1, OUTPUT); // on active la borne trigger du capteur 1
pinMode(echoPin1, INPUT); // on active la borne echo du capteur 1
pinMode(trigPin2, OUTPUT); // on active la borne trigger du capteur 2
pinMode(echoPin2, INPUT); // on active la borne echo du capteur 2
Serial.println("0"); // cette ligne est inutile c'est juste pour faire beau
}
unsigned int visitor = 0; // de base il y a personne dans notre magasin et visitor ne peut prendre une valeur negative
void loop() {
long duration1, distance1; // ici on défini deux variables qui correspondent a la distance de l'obstacle
long duration2, distance2; // ici on défini deux variables qui correspondent a la distance de l'obstacle
digitalWrite(trigPin1, HIGH);
delayMicroseconds(2); // test
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
delayMicroseconds(10); // test
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 / 58; // ici exprimee en cm cf : http://www.micropik.com/PDF/HCSR04.pdf
// Serial.print("Capteur 1: ");
// Serial.println(distance1); // si besoin pour deboguer
delay(1000);

digitalWrite(trigPin2, HIGH);
delayMicroseconds(2); // test
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
delayMicroseconds(10); // test
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = duration2 / 58; // ici exprimee en cm cf : http://www.micropik.com/PDF/HCSR04.pdf
// Serial.print("Capteur 2: ");
// Serial.println(distance2); // si besoin pour deboguer
delay(1000);

if(distance1 < 100 && distance2 > 100) { // si le capteur 1 réagit en premier
visitor = visitor + 1; // ALORS on ajoute +1 a la variable visitor
Serial.println(visitor); // en gros on souhaite imprimer le nb de visiteurs que si il y a du changement
}
if(distance1 > 100 && distance2 < 100) { // si le capteur 2 réagit en second
visitor = visitor - 1; // ALORS on enleve 1 a la variable visitor
Serial.println(visitor); // en gros on souhaite imprimer le nb de visiteurs que si il y a du changement
}
}

 

Comme vous pouvez le constater, dans le script Python nous allons utiliser la requête Google Analytics suivante : http://www.google-analytics.com/collect?v=1&tid=UA-35798126-1&cid=65348492&t=pageview&dp=%2Fmagasin&cm3=notre-variable qui va injecter une page vue virtuelle dans Google Analytics mais également une statistique personnalisée que nous avons créée dans Google Analytics :

Screenshot 2015-12-23 at 17.50.01

Avec un objectif assez clair qui va être d’obtenir la chose suivante dans Google Analytics :

Screenshot 2015-12-23 at 17.52.10

Comme vous avez pu le découvrir ci-dessus, rien d’exceptionnel, tout tient dans la requête :

http://www.google-analytics.com/collect?v=1&tid=UA-35798126-1&cid=65348492&t=pageview&dp=%2Fmagasin&cm3=notre-variable

où cm3 correspond dans mon cas à la custom metric qui a pour index 3 (en gros la troisième statistique personnalisée que j’ai créée).

Une fois le matériel mis en place vous devriez obtenir quelque chose comme cela :

20151223_184124

Et une fois le script exécuté vous aurez quelque chose qui ressemblera à :

remontee-donnees

200 indiquant bien que la requête a été exécutée correctement. Dans mon cas de figure vous remarquerez que mon script Arduino n’est pas encore parfait, en effet si le capteur enregistre une valeur négative (dans mon cas une sortie) alors qu’il est à 0 il renverra la valeur 6535 et naturellement cela va se voir dans les statistiques GA :

Screenshot 2015-12-23 at 19.12.04

Le constat de l’objet connecté créé

Comme vous avez pu le constater l’objet connecté précédent est dépendant d’un ordinateur, un 11 pouces (dans mon cas) certes mais encombrant tout de même, ce qui fait que cette configuration n’est pas l’idéal pour une boutique physique, surtout que si c’est pour tirer du câble cela ne va pas être très esthétique. C’est pourquoi je vous conseille de partir plutôt sur un Raspberry Pi ce qui vous permettra d’avoir un prototype plus “portable” et discret.

Conclusion

Et voilà vous savez désormais comment faire remonter facilement le trafic physique d’une boutique dans votre compte Google Analytics. En toute honnêteté je ne pense pas que ce soit d’une grande utilité “businessement” parlant. Je vais donc faire le nécessaire pour vous montrer une autre méthode plus utile dans un autre tutoriel.

Confidentialité des Données Mentions Légales