Script Google, Géolocalisation, et Eedomus

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”:

 

2012 02 24 100809

 

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):

 

2012 02 24 101021

 

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:

 

distance

 

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”:

 

A lire également:
Mise à jour de la box eedomus: support des radars de présence ZigBee, et nouveaux périphériques Zwave !

2012 02 24 102138

 

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

 

2012 02 24 102231

 

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”:

 

Drive

 

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
}

 

A lire également:
Mise à jour de la box eedomus: compteur d’impulsion Zigbee Zipulses, périphériques Schneider Electrique Wiser, thermostat Airzone, etc.

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:

 

2012 02 24 103524

 

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”

 

carte

 

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:

 

horloge

 

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

 

declencheur

 

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:

 

carte eedomus

 

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

A lire également:
Mise à jour de la box eedomus: les périphériques Wifi Shelly deviennent compatibles localement !

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

 

2012 02 24 104817

 

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

 

distance 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:

 

regle1

 

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 !

Pour information, cet article peut contenir des liens affiliés, sans aucun impact sur ce que vous gagnez vous même ou le prix que vous pouvez payer pour le produit. Passer par ce lien vous permet de me remercier pour le travail effectué sur le blog chaque jour, et d'aider à couvrir les dépenses du site (hébergement, frais de port pour les concours, etc.). Ca ne vous coute rien, mais ca m'aide beaucoup ! Merci donc à ceux qui joueront le jeu !

Inscrivez vous à notre newsletter !

Ne ratez plus aucun article, test de produit ou guide, grâce à un mail dans votre boite chaque vendredi !

1 commentaire
  1. Bonjour,
    Le service Latitude est remplacé par un service intégré à Google+.
    Savez-vous comment récupérer le user ?
    Merci

Laisser un commentaire

Maison et Domotique
Logo
Register New Account
Enregistrez vous, et stockez vos articles préférés sur votre compte pour les retrouver n'importe où, n'importe quand !
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare