| Index de l'article |
|---|
| Géolocalisez vos proches sur l'eedomus |
| Configuration Latitude |
| Configuration eeDomus |
| Script Php |
| Dans l'eeDomus |
| En conclusion |
| Toutes les pages |
Comment récupérer la position
Google Latitude propose une url pour télécharger les informations de position (coordonnées, ville, etc).
Si vous avez votre UserId, en tapant l'url suivante vous obtiendrez l'information:
http://www.google.com/latitude/apps/badge/api?user=votre-userid8&type=json
L'url vous renverra une information de ce type:
{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [ma longitude, ma latitude]},
"properties": {
"id": "mon userid latitude",
"accuracyInMeters": 1869,
"timeStamp": 1330254523,
"reverseGeocode": "Blagnac, France",
"photoUrl": "http://www.google.com/latitude/apps/badge/api?type=photo&photo=yrKBuTUBAAA.CAf6OpTELUrnR200epjFHQ.BPlEkmVG_z6TXxqcvQD_FQ",
"photoWidth": 96,
"photoHeight": 96,
"placardUrl": "http://www.google.com/latitude/apps/badge/api?type=photo_placard&photo=yrKBuTUBAAA.CAf6OpTELUrnR200epjFHQ.BPlEkmVG_z6TXxqcvQD_FQ&moving=false&stale=true&lod=1&format=png",
"placardWidth": 56,
"placardHeight": 59
}
}
]
}
Il s'agit d'un format JSON qui est directement utilisable dans la plupart des langages Php, Javascript. Je vous explique plus bas comme le lire avec l'eeDomus.
Comment charger l'eeDomus
Pour charger l'eeDomus, il faut utiliser son API. L'aide eeDomus est très bien faite. Je ne vais pas vous expliquer comment faire, car j'ai déjà décrit celà dans plusieurs de mes articles précédents. Je vous propose de vous y reporter si vous avez des difficultés.
Dans le script que je vous propose, j'utilise cette url de l'API eeDomus:
http://api.eedomus.com/set?action=periph.value&api_user=votre_api_user&api_secret=votre_api_secret&value=lat,lon&periph_id=votre_periphId
Les informations en rouge doivent être remplacées pour que la coordonnée soit bien chargée.
Un script Php pour automatiser le transfert
Finalement, j'ai tout mis dans un script Php. La première partie vérifie vos paramètres. La seconde partie lit vos coordonnées Google Latitude et la dernière partie charge l'eeDomus.
Avant d'utiliser ce script, n'oubliez pas de changer les valeurs en rouge par vos propres paramètres. Ensuite, il vous faudra installer ce script sur une machine (PC, serveur, etc) avec Php. Ce script devra être appelé régulièrement afin que l'eeDomus ait l'information la plus fraiche possible.
<?php
// -
// Domotics
// DHAS-getposition v1
// 24 Feb 2012
// -
// Changes
// v1.0 - get json from latitude and push it to eedomus
// -
header('Content-Type: text/plain');
echo "Parametres : En cours ...\n";
$api_user = "mon api user eedomus";
$api_secret = "mon api secret eedomus";
if ($api_user == "") {
echo 'API_USER attendu ...\n';
exit('API_USER attendu ...');
}
if ($api_secret == "") {
echo 'API_SECRET attendu ...\n';
exit('API_SECRET attendu ...');
}
if ( is_numeric( $argv[1] ) )
$userId = $argv[1];
else {
echo 'Param 1 non valide ... UserId attendu ( Rappel : php dhas-position-latitude2eedomus.php UserId PeripId )\n';
exit('Param 1 non valide ... UserId attendu');
}
if ( is_numeric( $argv[2] ) )
$periphId = $argv[2];
else {
echo 'Param 2 non valide ... PeriphId attendu ( Rappel : php dhas-position-latitude2eedomus.php UserId PeripId )\n';
exit('Param 2 non valide ... PeriphId attendu');
}
echo "Parametres : OK.\n";
// Telechargement de la position
echo "Position : En cours ...\n";
$url = 'http://www.google.com/latitude/apps/badge/api?user='.$userId.'&type=json';
$content = file_get_contents( $url );
$json = json_decode( $content );
$coord = $json--->features[0]->geometry->coordinates;
$timeStamp = $json->features[0]->properties->timeStamp;
if ( ! $coord ) {
echo 'Utilisateur inconnu dans Google Latitude ...\n';
exit('Utilisateur inconnu dans Google Latitude ...');
}
$date = date( 'd/m/Y H:i:s', $timeStamp );
$lat = $coord[1];
$lon = $coord[0];
echo "Derniere position = ".$date." : ".$lat." x ".$lon." \n";
echo "Position : OK.\n";
// Chargement de la position das l'eedomus
echo "Chargement eeDomus : En cours ...\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.eedomus.com/set?action=periph.value&api_user=".$api_user."&api_secret=".$api_secret."&value=".$lat.",".$lon."&periph_id=".$periphId);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
echo "Chargement eeDomus : OK.\n";
?>
J'ai installé ce script sur mon PC linux. Pour l'exécuter régulièrement, j'ai placé l'appel dans la crontab de la machine. J'utilise la crontab suivante:
*/5 * * * * /usr/bin/php /home/domotics/scripts/dhas-position-latitude2eedomus.php monuseridlatitude 4309 >> /home/domotics/log/dhas-position-latitude2eedomus.log 2>> /home/domotics/log/dhas-position-latitude2eedomus.log
La crontab s'active toutes les 5 minutes. Il ne faut pas oublier de changer les deux valeurs en rouges:
- monuseridlatitude à remplacer par votre UserId Google Latitude (voir au début de l'article)
- 4309 à remplacer par votre Code API de votre périphérique eeDomus
C'est terminé, tout est en place. Regardons ce que ça donne ...

















