blues a écrit:Beau travail.
Par contre pour que cela soit efficace il faudrait faire des requêtes régulières et surtout fréquentes. Pour ne pas attendre devant le portail pendant 15min avant qu’il s’ouvre
Je pense que pour améliorer le tout, il faudrait mettre en cache les dernières valeurs et notifier les positions et états sur la box uniquement en cas de changement.
Au pire, forcer un update toutes les 1/2 h pour se rassurer et vérifier que la moulinette tourne toujours (affichage de la dernière mise à jour dans l’interface).
<?php
header('Content-Type: text/plain');
echo "Parametres : En cours ...\n";
$api_user = "******";
$api_secret = "**************";
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";
// Calcul de la distance de la maison
$LAT_MAISON = 49.000083;
$LONG_MAISON = 2.485940;
$LAT_TRAVAIL = 48.852550;
$LONG_TRAVAIL = 2.417911;
$PERIPHDIST_ID="****";
$a = 3.1415926535 / 180;
$lat1 = $LAT_MAISON * $a;
$lat2 = $coord[1] * $a;
$lon1 = $LONG_MAISON * $a;
$lon2 = $coord[0] * $a;
$t1 = sin($lat1) * sin($lat2);
$t2 = cos($lat1) * cos($lat2);
$t3 = cos($lon1 - $lon2);
$t4 = $t2 * $t3;
$t5 = $t1 + $t4;
$rad_dist = atan(-$t5/sqrt(-$t5 * $t5 +1)) + 2 * atan(1);
$distance_maison = ($rad_dist * 3437.74677 * 1.1508) * 1.6093470878864446;
//Calcul de la distance du travail
$lat1 = $LAT_TRAVAIL * $a;
$lon1 = $LONG_TRAVAIL * $a;
$t1 = sin($lat1) * sin($lat2);
$t2 = cos($lat1) * cos($lat2);
$t3 = cos($lon1 - $lon2);
$t4 = $t2 * $t3;
$t5 = $t1 + $t4;
$rad_dist = atan(-$t5/sqrt(-$t5 * $t5 +1)) + 2 * atan(1);
$distance_travail = ($rad_dist * 3437.74677 * 1.1508) * 1.6093470878864446;
if ($distance_maison < 0.500)
{
$etat = 0;
}else{
if ($distance_travail < 0.500)
{
$etat = 1;
}
else
{
$etat = 2;
}
}
// 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";
//Envoi de l'etat de sa position
echo "Envoi position : 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=".$etat."&periph_id=".$PERIPHDIST_ID);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
echo "Position envoye : OK.\n";
?>
dès que j'active le wifi de mon tél, environ 10 seconde après, l'eedomus a reçu la requête http
Utilisateurs parcourant ce forum : Google [Bot] et 86 invité(s)