Zibase et Géolocalisation

Encouragé par Pascal, c’est non sans une certaine appréhension (et un peu de fierté :-) ) que je vous présente mon 1er tuto ou coment envoyer à votre zibase la distance qui vous sépare de votre domicile.

Elle servira à déclencher des scénarios (par exemple ouvrir le portail lorsque j’arrive à 2 km de ma maison, allumer le chauffage lorsque je suis à moins de 50 km, activer l’alarme lorsque je suis à plus d’1 km).

Mais je vous présenterai cela dans un second tuto.

Pour écrire ce scénario, je me suis largement inspiré des articles de Vincent Paulet (“ZIPABOX, Latitude et géolocalisation 2.1”) et de Cédric de Maison et Domotique (“script google geolocalisation et eedomus”), merci à eux.

 

1. Ingrédients

  • 1 Zibase

  • 1 Smartphone avec l’application latitude de google (application disponible sous Android, IPhone, blackberry) : infos ICI

  • 1 compte google


2. Création de la sonde “Distance Dom” sur la zibase

Nous allons créer une sonde qui collectera la distance qui vous sépare de votre domicile.

Pour cela se connecter sur le configurateur de zibase.net (ou zibase-club.net).

 connexion

Passer en mode expert

expert

Cliquer sur périphérique

peripheriques

 

Puis créer un sonde comme ci-dessous

sonde

 

Vous pouvez mettre l’identifiant radio que vous voulez à condition qu’il commence par OS et qu’il n’utilise pas un identifiant déjà paramétré dans la liste de vos périphériques.

 

3. Passons à google

3.1 Informations nécessaires

  • Login Zibase = c’est le login que vous utilisez pour vous connecter à zibase.net (ou zibase-club.net )

  • Password = le password allant avec le login

  • Les coordonnées GPS de votre domicile (latitude et longitude) petite aide par ici

  • Identifiant Radio de votre sonde (sans ”OS”): dans mon exemple 6000

  • Id_user de Google latitude (je vous explique comment on le trouve juste après)

 

 

3.2 Activation de Google latitude

Rq : c’est un copier/coller du tuto de Vincent Paulet pour cette partie

Activation Google Latitude

Cliquez sur le lien : http://latitude.google.com

et passez aux paramètres de l’application :

Cliquez sur : « Activer et afficher les informations de localisation les plus précises disponibles » et appuyer sur « Enregistrer” .

Normalement cette fenêtre s’affiche.

Regardez bien dans le code qui est affiché, votre Latitude User ID s’y trouve!!

<!– Google Public Location Badge –>

<iframe src= »http://latitude.google.com/latitude/apps/badge/api?user=-XXXXXXXXXX

Récupérez le et coller le dans le script, en face de Id_user.

Info importante pour que ça marche : Il faut absolument laisser sur

« Activer et afficher les informations de localisation les plus précises disponibles » pour que ça marche et enregistrer ensuite.

Si vous ne diffusez pas ce code, votre position restera privée, c’est uniquement à partir du moment ou vous diffusez ce google ID, à vos amis par exemple, que votre position sera connu du public.

 

3.3 Script google

Rq: copier/coller du tuto de Cédric Loqueneu pour cette partie (sauf le script repris de jujujames avec un petit complément par mes soins :-) )

Nous allons maintenant utiliser un script google qui va collecter votre position (envoyée par votre smartphone), calculer la distance qui vous sépare de votre domicile et envoyer cette information à votre zibase.

Il vous faut un compte Google et avoir activé l’application « DRIVE ». Car nous allons utiliser un Google script pour envoyer les infos à la Zibase

Activez l’application. Une fois fois activée, on accède à l’application et on clique sur « créer ».

Si c’est votre première fois, vous devez cliquer sur « connecter plus d’applications », et connecter l’application « Script in Google Drive ».

Une fois tout cela fait, il vous suffit de copier le script ci-dessous et de le coller

function Latitude()
{
// Paramètres géographiques
var id_user = ‘-xxxxxxx'; // id user de Google Latitude (/!\ avec le signe -)
var lat_maison = ‘xxxxxx'; // Latitude de la maison
var long_maison = ‘xxxxxxx'; // Longitude de la maison
var login_zibase = ‘xxxxxx'; // Login de votre Zibase
var password_zibase =’xxxxxx'; // Password de votre Zibase
var id_sonde = ‘xxxxxx'; // Identifiant de votre sonde sans “OS”
var plateforme_zibase = ‘zibase.net‘ // A remplacer par zibase-club.net si c’est votre plateforme
 
// 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)
 {
   // 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
   dpr=dpr*10; // On multiple par dix car la zibase attend une valeur au centieme
   // On met à jour sur zibase la distance entre moi et la maison
   envoi = UrlFetchApp.fetch(« http:// »+plateforme_zibase+ « /m/zapi_remote_zibase_set.php?login= »+login_zibase + « &password= »+ password_zibase + « &action=rowzibasecommand&param1=6&param2= »+ id_sonde + « &param3= »+dpr+ « &param4=17″);
 }
}
}
 
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
}

 

Remplacer les “xxxxx” par vos valeurs (cf. chapitre 3.1 )

 

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 la zibase. Pour cela, créez un déclencheur en cliquant sur l’icône en forme d’horloge:

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

 

4.  Configuration du mobile

Maintenant il ne vous reste plus qu’a télécharger l’application LATITUDE (gratuite) dispo

IOS, ANDROID , BlackBerry … (infos ICI)

Connectez vous avec votre compte Google et vous voilà parti !!!

5. Utilisation dans la Zibase.

Maintenant aller dans le pcpad de zibase ou sur l’application zibase sur votre smartphone et vous avez pu d’or et déjà vous apercevoir que votre sonde “Distance dom” s’est mis à jour et affiche désormais votre distance vous séparant votre domicile. (je suis à 199,7 Km de mon domicile).


 

Vos commentaires pour améliorer, corriger sont les bienvenus.

 

Author: Richard

Je me suis lancé en avril 2012 dans la domotique avec une Zibase. Depuis j'ai plusieurs box domotique, zipabox, Home Center 2 de Fibaro et Domoticz sur Raspberry. J'écris quelques articles pour partager mon expérience.

Share This Post On