function Latitude() { // Paramètres eedomus var api_user = 'xxxx'; // api_user eedomus var api_secret = 'xxxx'; // api_secret eedomus var id_device = 'xxxx'; // Device traceur GPS créé sur eedomus var id_distance = 'xxx'; // Device servant à stocker la distance entre moi et la maison // Paramètres géographiques var id_user = 'xxxx'; // id user de Google Latitude var lat_maison = 'xx.xxx'; // Latitude de la maison var long_maison = 'xx.xxxxx'; // Longitude de la maison // On récupère la position sur Google Latitude var json = UrlFetchApp.fetch("https://latitude.google.com/latitude/apps/badge/api?user=" + id_user + "&type=json"); var data = json.getContentText(); data = Utilities.jsonParse(data); if (data.features[0] != undefined) // On vérifie si une position géographique est retourné { var longitude = data.features[0].geometry.coordinates[0]; var latitude = data.features[0].geometry.coordinates[1]; var position = data.features[0].properties.reverseGeocode; var timestamp = data.features[0].properties.timeStamp; var DateMin = new Date(); DateMin.setTime(DateMin.getTime() - (10*60*1000)) // on retire 10 min à la date & heure actuelle var Datetimestamp = new Date(timestamp * 1000); if (Datetimestamp >= DateMin) // Si le timestamp de google latitude date de moins de 10 minutes alors on fait la suite (pour éviter d'envoyer des données sur l'API si aucun changement de coordonnées GPS) { // On met à jour la position géographique sur eedomus timestamp = Utilities.formatDate(new Date(timestamp*1000), "GMT+1", "yyyy-MM-dd HH:mm:ss") var adresse = "http://api.eedomus.com/set?action=periph.value&api_user=" + api_user + "&api_secret=" + api_secret + "&periph_id=" + id_device + "&value=" + latitude + "," + longitude + "&value_date=" + timestamp; adresse = adresse.replace(" ", "%20") var envoi = UrlFetchApp.fetch(adresse); // Conversion des coordonnées en ° vers des Radians var lat1 = deg2rad(lat_maison); var long1 = deg2rad(long_maison); var lat2 = deg2rad(latitude); var long2 = deg2rad(longitude); // Calcul var dp = distance(lat1,long1,lat2,long2); var dpr = Math.round(dp * 1000) / 1000; // Math.round arrondi à l'entier le plus proche // On met à jour sur eedomus la distance entre moi et la maison adresse = "http://api.eedomus.com/set?action=periph.value&api_user=" + api_user + "&api_secret=" + api_secret + "&periph_id=" + id_distance + "&value=" + dpr + "&value_date=" + timestamp; adresse = adresse.replace(" ", "%20") envoi = UrlFetchApp.fetch(adresse); } } } function deg2rad(deg) { return deg*(Math.PI/180); } function distance(lat_a, lon_a, lat_b, lon_b) { var t1 = Math.sin(lat_a) * Math.sin(lat_b); var t2 = Math.cos(lat_a) * Math.cos(lat_b); var t3 = Math.cos(lon_a - lon_b); var t4 = t2 * t3; var t5 = t1 + t4; var rad_dist = Math.atan(-t5/Math.sqrt(-t5 * t5 +1)) + 2 * Math.atan(1); return (rad_dist * 3437.74677 * 1.1508) * 1.6093470878864446 }