Localisation avec eedomus (part.1) : côté smartphone

Introduction

Localization_widget_eedomusLa box eedomus propose une fonction assez rare de suivi de position. Cette fonction peut paraître anecdotique dans une utilisation domotique. Mais si on rajoute la possibilité de l’eedomus à déclencher des actions suivant cette position, cela ouvre la porte à de multiples possibilités d’automatisation.

Cette première partie se focalisera sur le côté smartphone, ou comment mettre à jour votre position dans l’eedomus de manière transparente.
Un second article s’intéressera à la partie eedomus avec un exemple parlant (dans tous les sens du terme).

Références

J’ai bien sûr été fouiller sur internet, dans les blogs à la recherche d’informations. La pêche a été bonne.

Tout d’abord la documentation en ligne eedomus est bien faite, c’est donc le point de départ.
Cette documentation renvoit à deux applications sur smartphone : OpenGPS pour Iphone, et Sésame pour Android. Je n’ai pas testé ces applications.

Une nouvelle application gratuite vient par ailleurs de sortir sur android également : eebud. Elle est prometteuse mais en phase alpha, elle ne correspond pas totalement à mon besoin également. Vous pourrez trouver des infos sur cette application sur le forum  eedomus.

Enfin  un article d’Antor m’a beaucoup aidé également : Désactivation de l’alarme avec Tasker. Sa solution est également basée sur l’utilisation de Tasker sur Android. Néanmoins, il n’utilise pas la fonction de géolocalisation de l’eedomus en tant que tel.

L’objectif

L’objectif du côté smartphone est d’avoir une solution totalement transparente pour l’utilisateur et qui met à jour régulièrement ma position sur l’eedomus.

Je veux remplir les exigences suivantes :

  • la fonction est active que ce soit mobile allumé ou éteint
  • une surconsommation sur la batterie du mobile indiscernable : pour la fonction décrite ,compter moins de 4% de la consommation totale
  • une solution souple : si mes besoins évoluent ( plus de précision, localisation uniquement à certains moment ou certains endroits, …) je peux adapter la configuration
  • je n’ai pas besoin d’une très grande précision : la localisation par les antennes du réseau cellulaire, sans démarrage de la puce GPS interne, me suffit. Cela fournit une précision d’une centaine de mètres en général, avec épisodiquement des écarts importants ( > 400 m )
    Par contre si mon application de navigation sur smartphone est en fonctionnement, autant envoyer des coordonnées précises, ainsi que la vitesse, en utilisant la puce GPS du mobile.
  • certaines zones géographiques particulières doivent être détectées rapidement (maison, travail)
  • ne pas renvoyer la localisation si elle n’a pas changée : limitation du trafic de données et réduction de la consommation
  • traitement spécifique lorsque le smartphone et connecté à mon réseau wifi : la mise à jour se fait directement en local sur l’eedomus, et c’est la position précise de ma maison qui est envoyée

Configuration de l’eedomus

Avant toute chose il faut un périphérique Localisation qui puisse être mis à jour du côté de l’eedomus. Cela se fait à partir du panneau de configuration :

Utiliser la fonction d’ajout
d’un périphérique

Sélectionner Autre type
de périphérique

Tout en bas, sélectionner
le tracker de position
loceedomus1_eedomusadddevice
loceedomus1_eedomusaddother loceedomus1_eedomusaddtracker

Une fois le périphérique créé, il est nécessaire de noter le code API de celui-ci. Il sera utilisé pour sa mise à jour :

loceedomus1_eedomusapicode

Configuration d’Android

C’est l’application Tasker sur Android qui sera paramétrée et utilisée côté smartphone. Cette application peut automatiser de nombreuses tâches sur votre smartphone et dialoguer avec l’extérieur.

Certains mobiles comme mon Sony ont des fonctions d’optimisation de l’autonomie de batterie (mode Stamina). Il convient de permettre à Tasker de se lancer régulièrement lorsque le smartphone est éteint si ce mode optimisé est activé (je vous le conseille !). Sur Sony cela se passe dans les paramètres de Gestion de l’alimentation :

  • sélectionner l’option STAMINA ( sans toucher au sélecteur ON/OFF bleu)
    loceedomus1_stamina1
  • Rajouter le logiciel Tasker dans la liste des Exceptions
    loceedomus1_stamina2

Il est par ailleurs fortement recommandé de garder le wifi constamment activé, les points d’accès Wifi environnants étant également pris en compte pour la localisation sans activation du GPS.

Programmation de tasker

Import des configurations proposées

Je vous livre les différentes configuration sous forme de fichiers xml. Vous pouvez importer directement ces fichiers xml dans votre mobile :

  • dézipper les fichiers fournis ci-dessous
  • copier le fichier xml sur votre mobile, de préférence dans le répertoire /sdcard/Tasker/tasks/
  • importer la tâche avec un appui long sur l’onglet Task
    loceedomus1_taskerimport

Variables Tasker

loceedomus1_taskervars

Ce chapitre est à titre d’information : les variables seront créées automatiquement par les tâches.

Deux variables globales seront utilisées : %LOCALISATION contenant la dernière valeur envoyée à l’eedomus et %LOCALISATION_OLD contenant la valeur précédente. La comparaison des deux valeurs permet de déterminer si une nouvelle position est à envoyer à l’eedomus.

loceedomus1_taskertasks

Tâches Tasker

Deux tâches sont nécessaires.

Tâche Do Nothing

Elle ne fait vraiment rien, elle contient donc simplement une action Stop.
loceedomus1_taskertasknothingJe vous fournis tout de même le fichier xml :

XML programmation tâche Do nothing

Tâche Localisation eedomus

C’est la tâche qui sera appelée régulièrement par les différents profils et qui mettra à jour la position dans l’eedomus. Voici le fichier de configuration que vous pouvez importer :

XML Programmation tâche Localisation Eedomus

Cependant j’ai rendu ce fichier générique, il faut donc adapter la tâche à votre configuration :

  • soit modifier directement le fichier xml et remplacer tous les « xxx » par les valeurs correctes
  • soit importer le fichier dans tasker et modifier ensuite la configuration.

loceedomus1_taskertasklocalisation

Voici le fonctionnement de ce script :

  1. Mise à jour variable %LOCALISATION_OLD.
    Aucune adaptation à réaliser.
  2. Initialisation variable %LOCALISATION.
    Aucune adaptation à réaliser.
  3. Calcul de la vitesse en km/h ( par défaut %LOCSPD est en m/s). Attention cette vitesse n’est valide que si le GPS du mobile est actif.
    Aucune adaptation à réaliser.
  4. Si le Profil Waze est actif : utilisation de la position précise donnée par le GPS (%LOC) et de la vitesse calculée précédemment.
    Le profil Waze détecte le fonctionnement de mon application de navigation GPS.  Modifier le nom du profil si nécessaire.
  5. Si je suis connecté à mon réseau wifi personnel : utilisation d’une localisation précise de ma maison écrite dans le script et d’une vitesse nulle.
    %WIFII contient l’ensemble des informations sur la connection WIFI.
    Je recherche pour ma part l’adresse IP (IP fixe obligatoire dans ce cas) dans cette variable. Cette adresse doit être modifiée, ou remplacée par le nom (SSID) de votre point d’accès wifi.
    La localisation précise de votre habitation est également à intégrer à cette étape.
  6. Si les étapes 4 et 5 n’ont pas fait de mise à jour de la variable %LOCALISATION : utilisation de la position par rapport au réseau cellulaire (%LOCN) et d’une vitesse nulle.
    La vitesse n’est pas utilisable dans ce cas. La position est calculée en fonction des émetteurs et des points d’accès wifi environnants. Aucune adaptation à faire.
  7. Si la nouvelle localisation est identique à celle précédemment envoyée à l’eedomus, on stoppe la tâche.
    Aucune adaptation à faire.
  8. loceedomus1_taskerhttpgetSi je suis connecté à mon réseau Wifi personnel, mise à jour de la nouvelle position directement sur la box eedomus.
    Différentes adaptations sont à réaliser à cette étape :
    – adresse IP locale de la box eedomus (adresse IP fixe obligatoire).
    – condition sur %WIFII (voir point (5.) ).
    – periph_ID à configurer avec le code API vu au chapitre Configuration de l’eedomus.
    – api_user : nom utilisateur de l’interface API qui vous a été communiqué.
    – api_secret : code secret de l’interface API qui vous a été communiqué.
  9. Si je ne suis pas connecté à mon réseau wifi personnel, mise à jour de la position sur https://api.eedomus.com.
    Même paramètres à changer qu’au point (8.) sauf adresse IP locale.
  10. Traitement des erreurs de mise à jour http ou https.
    Si le code de retour n’est pas 200, il y a eu un problème. La variable %LOCALISATION est mise à 0 pour forcer une mise à jour la prochaine fois

Profils Tasker

loceedomus1_taskerprofilsCes profils seront à adapter à votre besoin. J’ai 3 types de profils différents.

Profils conditionnés à une Application (Waze)

Ce profil sert à détecter le fonctionnement de mon navigateur GPS. L’état de ce profil est testé par le tâche décrite ci-dessus.
Le profil est conditionné à l’App Waze dans mon cas. Une tâche étant obligatoire dans tout profil Waze, c’est donc la tâche qui ne fait rien (Do Nothing) qui est appelée.

Profils répétitifs (From ..)

Ce profil est lancé régulièrement tous les x minutes. J’ai 2 profils :

  • le premier est conditionné à l’utilisation de l’application de navigation. Il s’active toutes les 2 minutes à toute heure de la journée et démarre la mise à jour de la localisation
  • le second est inconditionnel.  Il s’active toutes les 30 minutes entre 6h00 et 22h00 et démarre la mise à jour de la localisation

Profils Géographiques (Home, Work)

loceedomus1_profilelocationA chaque réveil Tasker vérifie la position. Si on rentre (ou sort) d’une position géographique particulière les actions correspondantes sont lancées immédiatement. La tâches à l’entrée et à la sortie de la zone sont identique dans mon cas : mettre à jour la position dans l’eedomus. Ces profils permettent une mise à jour très rapide de la position dans les zones importantes.

La configuration de la zone géographique sous Tasker est simple puisque graphique. Par ailleurs la localisation actuelle peut être utilisée en utilisant l’icône cible dans la barre supérieure.
La méthode de détermination de la position peut être choisie en bas de l’écran : GPS ou Réseau cellulaire. La méthode par réseau mobile est peu précise mais très peu consommatrice, c’est celle que j’utilise. Le rayon géographique de détection doit être suffisamment large pour intégrer l’erreur de positionnement de cette méthode, mais aussi la période d’inactivité de Tasker. Dans mon cas, Tasker s’active toutes les 2 minutes, ce qui fait un déplacement de 1km à 30km/h. Un rayon de 500 m est donc vraiment un minimum si il s’agit d’une zone de passage.

Configuration de Tasker

Les paramètres généraux de Tasker sont également à vérifier.

loceedomus1_taskerconf1

loceedomus1_taskerconf2C’est en particulier tous les paramètre de temps de réveil qui sont à mettre à jour si nécessaire. Les vérifications des différentes règles qui seront programmées par la suite sont en effet effectuées par tasker à intervalle régulier, mobile allumé ou mobile éteinte. Si ce temps est court, l’autonomie de la batterie risque d’en souffrir. Si ce temps est trop long, Tasker mettra du temps à réagir.
J’ai pour ma part pris un temps de réaction maximal de 2 minutes (donc temps moyen de 1 minute), que ce soit mobile éteint ou allumé. Cela donne la configuration de droite. Les paramètres essentiels sont :

  • Paramètres lorsque le mobile est allumé ( Display On Monitoring )
    Les valeurs par défaut de cette section sont adaptés à cette utilisation.

    • Wifi Scan Seconds : le temps entre chaque vérification de l’état du wifi
    • GPS Check Seconds : le temps entre chaque vérification de la position GPS
    • Network Location Check Seconds : le temps entre chaque vérification de la position par utilisation des cellules réseau
  • Paramètre s lorsque le mobile est inutilisé ( Display Off Monitoring )
    Les valeurs par défaut ne sont pas adaptées. A changer.

    • All Check seconds : le temps entre chaque réveil du mobile par Tasker pour vérifier toutes les règles. Dans ce cas d’utilisation c’est le temps minimum qu’il y aura entre chaque mise à jour de la position
    • Timeout Seconds : Le temps maximum pendant lequel le mobile sera gardé allumé pour effectuer toutes les mises à jour. J’ai réduit ce temps de façon limiter la consommation
  • Paramètres Généraux ( General Monitoring  )
    • Wifi Minimum Timeout Seconds : Le temps minimum qui sera utilisé pour vérifier le statut du wifi. Au plus ce temps est important, au plus le nombre de réseaux wifi détectés sera important. J’ai réduit de façon importante cette valeur pour réduire la consommation.

 

Update 2014-06-16 : Correction Lien vers XML Tasker Localisation

Vincent Recipon

Propriétaire de ce blog. Owner of this blog.

Vous aimerez aussi...

12 réponses

  1. Aurel dit :

    Pareil pour moi, impossible de les importer, les fichiers sont encore valables ?

    Car tasker veut un fichier *.prf.xml

  2. Orel dit :

    Bonjour,

    Venant de basculer d’iphone à Galaxy S6, j’ai suivi votre tuto, débutant sur tasker et n’étant pas encore sortit de chez moi, je ne sais pas encore si cela fonctionne.. je vous tiendrai au courant.

    Par contre, je pense que votre solution a beaucoup évoluée, pourriez vous partager vos nouveautés ? J’ai surtout dans l’idée d’économiser au maximum la batterie du téléphone sans pour autant négliger la precision lorsque j’arrive à mon domicile pour l’execution de regles.

    Merci par avance

  3. Concernant l’usage de la batterie ci-joint la réponse que j’ai mise sur le forum eedomus: http://forum.eedomus.com/viewtopic.php?f=13&t=1771&p=17819#p17819

  4. J’ai essayé eebud mais ça ne fonctionnait pas sur mon téléphone.
    J’ai essayé les script sur la version démo de Tasker mais il trouvait des erreurs dans les scripts.
    Du coup j’ai fait ma propre application Android pour envoyer la position GPS au traceur GPS de la box eedomus: eedomus locator
    https://play.google.com/store/apps/details?id=com.guyo.test1

    • Merci pour l’appli, je vais essayer cela de ce pas. Quel est l’impact de l’application sur l’autonomie du téléphone ? Utilises-tu le gps pour la localisation ?
      De mon côté mes scripts Tasker ont beaucoup évolués, il serait franchement temps que je remette à jour mon post 🙁

  5. Merci de votre réponse , les fichiers sont bien dezippé, je navigue sans problème dans arborescence de mon smartphone mais les fichiers n’apparaissent pas la ou je les place, je vois bien le dossier que j’ai ajouté mais il est vide,j’ai essayé plusieurs emplacement sans succés. pour infos tasker est installé sous android 2.3

    • Mea Culpa, le nom du fichier doit se terminer par « .tsk.xml ». J’avais enlevé le « .tsk » par erreur. Je refais une petite archive .zip avec le fichier nommé correctement. Le fichier doit donc s’appeler « localisationeedomus.tsk.xml »

  6. Bonjour,merci pour ce tuto il m’est impossible d’importer les fichiers xml dans tasker il ne voit rien dans le dossier en question même si je les change de place.
    d’avance merci pour votre réponse

    • Étonnant que le fichier ne soit pas vu, le filtre sur tasker est simplement sur l’extension du fichier. Le fichier XML a bien été dezippé dans un répertoire sur la carte SD ? Il vaut mieux également essayer de faire l’import dans tasker avec smartphone déconnecté du PC (pas de pb de carte SD non montée). Sinon essayer peut être de le mettre dans un répertoire mieux connu de la carte SD pour être sûr d’être au bon endroit, style répertoire DCIM. Es-tu capable de naviguer dans l’arborescence du smartphone avec Tasker ?

  7. ma pomme / pikat dit :

    Très intéressant merci ….

  1. mercredi 25 juin 2014

    […] avons vu dans le premier article comment remonter sa position géographique à la box eedomus depuis un téléphone android. Nous […]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.