Comment suivre un paquet avec un YoctoHub-GSM

Comment suivre un paquet avec un YoctoHub-GSM

Photo: carpostal.chLa Poste Suisse est réputée pour son efficacité dans le traitement des envois à l'intérieur du pays: les colis prioritaires sont livrés dans n'importe quelle ville ou village en Suisse le lendemain du jour d'expédition, même dans les vallées reculées. Nous avons donc décidé de faire cette semaine une petite expérience pour voir comment ce service fonctionne, en suivant un colis à l'aide d'un YoctoHub-GSM-2G.



Santa Maria Val MünsterNous avons envoyé un colis de Cartigny, où se trouve Yoctopuce, à destination de Santa Maria Val Münstair, un village pittoresque tout au fond des Grisons. Notre paquet a donc eu l'occasion de traverser intégralement la Suisse d'Ouest en Est. Dans le paquet, nous avons mis simplement un YoctoHub-GSM-2G, alimenté par 4 piles NiMH. Nous avons intentionnellement évité d'utiliser une batterie au Lithium pour éviter les risques de feu.

Nous n'avons pas utilisé de Yocto-GPS, car celui-ci n'aurait probablement servi à rien: les signaux GPS sont très faibles, et n'auraient eu quasiment aucune chance d'arriver à l'intérieur des véhicules et bâtiments où transiterait notre colis. La couverture GSM en revanche est meilleure, et même s'il y avait un risque qu'une partie du voyage se fasse dans un fourgon métallique où les signaux ne passeraient pas, nous pouvions espérer récupérer la trace de notre paquet de temps à autre.


  
Le paquet magique contient juste 4 piles et un YoctoHub-GSM-2G


En effet, chaque station de base GSM possède un identifiant unique, qui est transmis aux téléphones cellulaires qui s'y connectent. Sur le YoctoHub-GSM-2G, cet identifiant peut être obtenu par la fonction get_cellIdentifier. Cet identifiant est formé de 4 nombres: le code pays (MCC), le code du réseau (MNC), le code du lieu (LAC) et le numéro d'antenne (Cell ID). En recherchant cette combinaison de nombres dans une base de données d'antenne, on peut en général retrouver où elle se trouve et donc déterminer la zone approximative où se trouve le téléphone.

Le YoctoHub-GSM-2G est configuré pour se réveiller toutes les 5 minutes et faire un Callback HTTP sur notre site web pour y poster les identifiants de l'antenne GSM à laquelle il est connecté. Si aucune connexion n'est possible, il se rendort automatiquement après 2 minutes, pour économiser les batteries.

Ceci n'est pas un paquet ordinaire...
Ceci n'est pas un paquet ordinaire...


Sur le serveur, un petit script PHP enregistre pour chaque callback HTTP reçu une ligne dans un fichier texte avec l'heure, les identifiants de l'antenne et la qualité de la réception GSM:


include("yocto_api.php");
include("yocto_cellular.php");
include("yocto_realtimeclock.php");
include("yocto_wakeupmonitor.php");

// API init in HTTP callback  mode
if (yRegisterHub("callback",$errmsg)!=YAPI_SUCCESS) die($errmsg);

// Load current time from device (RTC)
$rtc = yFirstRealTimeClock();
$now = $rtc->get_unixTime();
$date = $rtc->get_dateTime();

// Load current cell identifier and link quality
$gsm = yFirstCellular();
$cell = $gsm->get_cellIdentifier();
$link = $gsm->get_linkQuality();

// Append information to a simple text file
file_put_contents('tracker.txt', "$now,$date,$cell,$link%\n", FILE_APPEND);

// Send the device to sleep in 3 seconds
$monitor = yFirstWakeUpMonitor();
$monitor->sleep(3);
 



Il ne restait qu'à écrire un petit bout de programme qui relit ce fichier et convertit les identifiants d'antennes GSM en coordonnées géographique pour savoir ce qui est arrivé à notre paquet. Pour cela, il existe deux services: OpenCellID.org, un projet Open Source, et l'API de géolocalisation Google, car comme vous vous en doutez probablement, Google dispose d'une jolie collection de données liant les identifiants de cellule leur position. Nous avons décidé de faire nos tests en utilisant la base de donnée de OpenCellID, qui peut être facilement téléchargée au format CSV pour utilisation hors ligne. On peut ainsi directement générer en PHP un ficher décrivant la route au format KML, c'est-à-dire une liste de points GPS au format XML. Ce fichier KML peut être importé dans la plupart des applications de cartographies, comme Google Earth, ou ci-dessous le système de cartographie interactif de la confédération Suisse. Vous pouvez zoomer avec la souris et cliquer sur les points pour avoir l'heure et la force du signal:



Conclusion


L'expérience a parfaitement fonctionné. On peut constater que pour arriver le lendemain matin à 8h à destination, notre paquet a voyagé presque sans interruption durant toute la nuit. Comme il n'y a pas de tunnel d'Ouest en Est dans les Alpes, il a du les contourner par le Nord. D'après le tracé, l'essentiel du trajet a été fait sur l'autoroute et non en train (dommage...). Et cette petite expérience démontre aussi au passage que même lorsque vous désactivez le GPS sur votre smartphone, votre opérateur téléphonique et votre téléphone savent quand-même assez bien où vous êtes...

Edit: le paquet nous est revenu quelque jours plus tard. Ses 4 petites batteries AA lui ont permis de nous tenir informé de sa position toutes les 5 minutes quasiment sans interruption pendant 3 jours et demi !

Commenter aucun commentaire
Retour au blog












Yoctopuce, get your stuff connected.