A voir
 

Script Google, Géolocalisation, et Eedomus

 
I_WAS_HERE
I_WAS_HERE
I_WAS_HERE

 
Présentation
 

Catégorie:
 
Prix:
 
Durée:
 
Mise en place
 
 
 
 
 


 
Utilisation
 
 
 
 
 


 
Utilité
 
 
 
 
 


 
Cout
 
 
 
 
 


 
Note Globale
 
 
 
 
 


Note des Lecteurs
1 Nombre de notes

 

Pour


Fonctionne parfaitement, pas besoin d'hébergement extérieur, gratuit

Contre


Posséder un compte Google Drive ?


Posté le3 décembre 2012 par

 
Tutorial Complet
 
 

Je vous ai déjà parlé à plusieurs reprises de la géolocalisation, notamment sur l’eedomus, qui intègre un type de device lié à ce domaine.

Aujourd’hui je reviens sur le sujet pour vous proposer un script que j’utilise depuis plusieurs jours sans problème. Il s’agissait à l’origine d’un script PHP, que je pensais vous mettre à disposition, mais Pierre a eu la gentillesse de me le convertir en script Google, ce qui permettra à n’importe qui de l’utiliser.

 

I. Configuration sur l’eedomus

 

Il va d’abord falloir créer un device pour la géolocalisation. Pour cela on va dans la configuration, et on ajoute un autre périphérique, puis « Traceur GPS »:

 

 

Ensuite, on le configure. On lui donne un nom, et on met un numéro de mobile « bidon » pour valider la configuration (ce numéro est normalement le numéro de traceur qui est censé envoyer les informations, mais qui n’aura aucune utilité dans notre cas):

 

 

On relève bien le code API, qui nous servira plus tard.

On crée ensuite un second device « Etat », qui contiendra la distance entre nous et la maison:

 

 

Pareil, relevez son ID. C’est le device le plus important, qui permettra de déclencher des scénarios. Le device tracker sert juste à suivre sa position sur une carte, on peut s’en passer si on veut.

C’est fini pour la partie eedomus.

 

II. Géolocalisation sur Smartphone

 

Pour la géolocalisation, nous allons utiliser le service Latitude de Google, et l‘application iPhone du même nom (gratuite). Sur Android, il me semble que l’application est intégrée.

Ce service de Google permet de se situer entre amis, pour se retrouver, etc… Comme tous les services Google, il dispose d’une API et de fonctions très sympas, souvent très utiles en domotique :p

Il faut donc commencer par vous créer un compte gratuit sur Google Latitude. Une fois que c’est fait, il faut se rendre dans les paramètres de l’application (via la petite roue crantée à droite). Tout en bas, on peut trouver un lien « Informations destinées aux développeurs »:

 

 

Cliquez dessus, vous obtiendrez un écran avec trois liens:

 

 

Dans les trois liens, vous pourrez voir un paramètre user=NUMERO. Relevez ce numéro, qui sera utilisé plus tard.

Maintenant il n’y a plus qu’à installer Latitude sur l’iPhone. Il suffit de la télécharger, de la lancer, et d’entrer les identifiants de son compte Google créé précédemment. Tournant ensuite en tache de fond, elle va régulièrement mettre à jour votre position GPS sur votre compte Google Latitude. Cela a bien sûr un petit impact sur votre batterie, mais assez négligeable, le GPS ne fonctionnant pas tout le temps, et les coordonnées n’étant envoyées que lorsqu’il y a un mouvement. Pour ma part je tiens sans problème 3 jours avec une utilisation normale.

Voilà: nous avons donc un téléphone qui remonte notre position GPS régulièrement sur notre compte Google.

 

III. Envoi des infos à l’eedomus

 

Il n’y a plus qu’à faire en sorte d’envoyer ces coordonnées à l’eedomus.

Pour cela, nous utilisons un script Google. Il faut ou d’abord posséder un compte Google Drive. Ensuite, faites « Créer / Plus / Script »:

 

 

Copiez y ensuite ce code (dispo aussi en téléchargement ici):

 

function Latitude()
{

// Paramètres eedomus
var api_user = ‘xxxxx‘; // api_user eedomus
var api_secret = ‘xxxxxx‘; // api_secret eedomus
var id_device = ‘1234‘; // Device traceur GPS créé sur eedomus
var id_distance = ‘1235‘; // Device servant à stocker la distance entre moi et la maison

// Paramètres géographiques
var id_user = ‘-45469696‘; // id user de Google Latitude
var lat_maison = 40.606769; // Latitude de la maison
var long_maison = 1.167042; // 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);

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
}

 

Il suffit de compléter les 7 premières lignes avec vos informations personnelles. L’API_USER et l’API_SECRET sont les codes API demandés à l’eedomus dans votre compte:

 

 

Vous les recevez par email.

L’ID_DEVICE est l’ID du traceur GPS, et l’id_distance l’id de l’état créé  créé au tout début sur l’eedomus.

Votre ID_USER est le numéro relevé dans les liens Google précédemment (ne pas oublier le « – » qu’il peut parfois y avoir devant l’ID donné par Google).

Enfin, indiquez les coordonnées GPS de votre maison. On peut les obtenir facilement sur Google Maps avec un clic droit, « afficher plus d’infos »

 

 

Exécutez une première fois le script manuellement, il risque de vous demander des autorisations. Donnez les lui.

Il n’y a plus qu’à faire en sorte que ce script se lance régulièrement pour mettre à jour les informations sur l’eedomus. Pour cela, créez un déclencheur en cliquant sur l’icone en forme d’horloge:

 

 

Et configurez un minuteur, à l’intervalle que vous souhaitez:

 

 

Voilà, c’est fini !

 

IV. Utilisation

 

Le script va ainsi tourner automatiquement toutes les minutes pour vérifier votre position. Si la position date de moins de 10min, le script va mettre à jour votre position sur l’eedomus, et calculer la distance qui vous sépare de votre maison pour ensuite mettre l’eedomus à jour. Cela évite de faire trop de requêtes pour rien à la box, on ne lui notifie que les changements.

Le module tracker présentera votre position et vos déplacements:

 

 

Les lignes rouges indiquent les déplacements entre chaque point.

Et via la loupe, vous avez accès à l’historique des déplacements:

 

 

Ce qui est le plus intéressant, c’est le device qui contient la distance entre nous et la maison:

 

 

Ce device va pouvoir être utilisé pour les scénarios. Exemple d’un scénario qui m’ouvre automatiquement mon portail quand j’arrive à moins de 5km:

 

 

J’utilise ici une marge de 5km, car en voiture, le temps que les infos se mettent à jour, les kilomètres défilent vite :p

On peut aussi déclencher des scénarios au contraire quand on part. J’ai le même script qui tourne pour ma femme: si notre position à tous les deux dépasse les 10km, l’eedomus active l’alarme et nous envoie un message Push pour nous prévenir.

Le Karotz nous souhaite même la bienvenue lorsque nous rentrons (avec l’état de chaque personne, il sait qui arrive, il suffit de mettre une petite temporisation pour nous laisser le temps d’entrer à la maison :p).

Pour que cela fonctionne en permanence, il suffit d’avoir l’application Latitude qui tourne en tache de fond sur votre téléphone, rien de plus :D

Bien sûr, c’est un exemple que je donne ici avec l’eedomus, mais le script pourrait être très facilement adapté pour la Vera, par exemple. L’avantage ici est qu’on n’a pas besoin d’un hébergement extérieur pour le script, et que la box n’est pas surchargée en requêtes, puisqu’on ne met à jour que si la position date de moins de 10min.Après différents essais avec la géolocalisation, c’est à ce jour la solution qui me convient le mieux !

Vous aimez ? Partagez le ! Share on FacebookShare on Google+Tweet about this on TwitterPin on PinterestShare on RedditShare on TumblrShare on LinkedInBuffer this pageFlattr the authorEmail this to someone







  

x
Abonnement Newsletter
  • Dernières actualités
  • Tests produits
  • Bons plans

Entrez votre email pour ne rien rater !