DomotiqueTutoriaux

Tuto : Centre de gestion de présence

Bonjour à tous,

 

Suite à la publication de mon auto d’intégration du NUT Mini, j’ai reçu pas mal de demandes en commentaires et messages privés concernant mon virtuel de gestion de présence. Alors voila c’est gratis, c’est pour vous.

 

Le Centre de Gestion de Présence

Le principe de ce centre de gestion est de regrouper l’intégralité des indicateurs de présence et de consolider le tout en une seule information : est ce que la personne est présente ou pas.

Avant de rentrer dans le détail de ce virtuel Centre de gestion de présence, nous allons voir les différentes méthodes qui me permettent d’alimenter ce centre

 

La détection de présence de votre iPhone/Smartphone sur le réseau

C’est un des grands classique, si il y a bien un objet qui reste en permanence avec vous c’est votre smartphone.

Pour la détection de votre téléphone sur le réseau, on utilise la méthode Ping qui peut se faire sur l’adresse IP ou l’adresse MAC.

Le problème du ping sur l’IP, est que le téléphone en veille peux ne plus répondre, c’est d’ailleurs le cas de iPhone.

A la maison, nous sommes plutôt iPhone, et donc quand j’ai mis en place ma gestion de présence, j’avais cherché une méthode fiable de ping.

Vous aurez besoin pour cela du plugin Script qui se trouve sur le Market :

Nous allons donc créer un script « iPhone Wifi », et se script s’actualisera toutes les 10 minutes = */10 * * * *

 

J’utilise le script isConnected.sh qui permet de soit effectuer une vérification sur l’adresse IP soit sur l’adresse MAC :

Attention à bien mettre le type info Binaire.

 

Pour l’utiliser avec un iPhone, vous devez donc indiquer que vous souhaitez interroger votre téléphone grâce à son adresse mac :

isConnected.sh mac ab:ab:ab:ab:ab:ab

l’adresse mac de votre iPhone pouvant se trouver dans Réglages>Général>Informations>Adresse Wi-Fi

 

En préparant ce tutoriel, je me suis rendu compte que le script isConnected n’est plus disponible sur le market des scripts. La méthode officiel est maintenant de passé par le plugin Network. Mais n’ayant pas encore eu le temps de tester la méthode avec un iPhone, je vous remet le script qui était sur le market .

#/bin/bash

# This file is part of Jeedom.
#
# Jeedom is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Jeedom is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Jeedom. If not, see <http://www.gnu.org/licenses/>.

#Script shell permettant de savoir si une adresse mac ou ip est présente sur le réseaux
# Necessite arp-scan
# $1  : mac ou ip
# $2  : adresse
# Il faut ajouter les droits à apache (www-data) d'éxécuter la commande arp-scan
# Dans un terminal :
# sudo apt-get install arp-scan fping #installation du paquet permetant de scanner le réseaux et du paquet pour faire un ping rapide
# sudo visudo -s
# Ajouter la ligne :
# www-data ALL=NOPASSWD: /usr/bin/arp-scan
if [ "$1" = "mac" ]; then
        sudo /usr/bin/arp-scan -l -g --retry=5 -T $2 -t 800 | grep -i $2 | wc -l
elif [ "$1" = "ip" ]; then
        /usr/bin/fping -c1 -t50  $2 2>&1 | grep "min/avg/max" | wc -l
fi

 

Attention à bien suivre les instructions :

# Il faut ajouter les droits à apache (www-data) d’éxécuter la commande arp-scan
# Dans un terminal :
# sudo apt-get install arp-scan fping #installation du paquet permetant de scanner le réseaux et du paquet pour faire un ping rapide
# sudo visudo -s
# Ajouter la ligne :
# www-data ALL=NOPASSWD: /usr/bin/arp-scan

 

La géolocalisation de votre iPhone

Autre méthode pour savoir si vous êtes chez vous (ou ailleurs), vous pouvez utilisez la géolocalisation de votre smartphone.

Pour un iPhone ou un Android, le principe est le même mais la méthode diffère. Nous traiterons ici de la geoloc d’iPhone.

Vous aurez besoin pour cela du plugin Geoloc iOS

Après l’installation du plugin, vous pourrez créer un équipement par appareil iOS. Vous aurez besoin de renseigner vos identifiants et mots de passe de iCloud et ensuite sélectionner l’appareil iOS à suivre.

La 1ere commande a créer est la position de votre iPhone (ici la commande 274), qui est une position dynamique.

La 2eme commande a créer est la position de votre maison (ici la commande 270), qui est une position fixe avec des coordonnées GPS. vous aurez besoin de google maps : https://www.coordonnees-gps.fr

Attention, les 2 coordonnées doivent être séparées par une virgule est sans espace.

Enfin, vous pourrez créer une commande de distance (ici la commande 275), qui calculera la distance entre 2 commandes de votre équipement.

C’est cette commande qui nous intéressera dans le centre de gestion de présence.

 

Comme vous pouvez le voir, j’ai aussi indiqué la position de mon travail…

 

La détection de présence via un traqueur Bluetooth

Pour cette partie je vous invite à relire mon tuto d’intégration du NUT Mini, http://www.ca-sert-a-quoi.com/domotique/tuto-integration-du-nut-mini-dans-jeedom-pour-gerer-votre-presence/

 

 

Utiliser IFTT pour gérer des zones de présence

IFTT est un service Web qui permet d’automatiser de très nombreuses actions courantes sur le web, en interconnectant près d’une trentaine de canaux sur le web.

L’interet est que votre smartphone ne soit plus passif (détecté par Jeedom) mais maintenant actif, c’est lui qui va indiquer sa présence dans une zone!

 

Vous aurez besoin du plugin IFTT pour cela

 

Et bien sur un compte IFTT en ligne…. http://ifttt.com/

Pour la mise en place ce plugin, j’ai suivi la doc en ligne qui est très bien faite : https://jeedom.github.io/documentation/plugins/ifttt/fr_FR/index.html

Je remets juste ici les grandes étapes :

Création de l’équipement IFTT :

 

Création des 2 recopies permettant de notifier Jeedom si on rentre dans une zone ou si on en sort.




 

J’utilise le même équipement Jeedom IFTT qui reçoit la valeur 1 ou la valeur 0 en fonction de si je suis dans la zone géographique de ma maison.

A l’arrivée dans mon village, cela me permet donc de « préparer » ma maison à mon arrivée.

 

 

La création du centre de gestion de présence

Ca y est, nous avons maintenant toutes les informations qui nous permettent de savoir ou nous sommes. Nous allons concentrer toutes ces informations dans un virtuel.

Voila ce que nous allons obtenir :

Et voici le détail :

 

Voici les commandes dans l’ordre :

Voici donc la commande qui donne l’indication si je suis à la maison ou pas, elle est de type binaire. j’utilise le OU logique pour que si au moins un de paramètres soit égal à 1.

#[Maison][Julien][wifi]# == 1 OU #[Maison][Julien][GPS]# == 1 OU #[Maison][Julien][NutJulien]# == 1

j’applique le widget Presence_Homme_2

 

Ensuite, nous avons la distance entre la maison et l’iPhone qui provient du plugin Geoloc iOS.

D’abord en km

Puis faire un test pour savoir si je me trouve à moins de 1km de la maison

Ici la présence du smartphone sur le réseau avec le script isConnected.sh

avec le widget qui va bien.

L’information de présence grâce à IFTT

Pour afficher la position de mon smartphone sur mon virtuel, je reprend la position du plugin Geoloc iOS

auquel j’applique le widget map

 

Petit bonus, j’ai inclus un bouton « Détail » qui me permet d’ouvrir une vue Jeedom dans une fenêtre modal.

 

Il faut pour cela le plugin Click Link que j’adore :

Créer une commande qui va ouvrir une fenêtre modale sur une vue

la vue comportant les informations que vous souhaitez afficher.


Voilà, j’espère que ce petit tutoriel sur mon centre de gestion de présence dans Jeedom vous a plu. N’hésitez pas à poser vos questions et remarques dans les commentaires.

Tags

Julien

Passionné depuis mon plus jeune âge par les nouvelles technologies et doublé d’un acheteur compulsif, j’ai toujours adoré les nouveaux produits HighTech. Je m’aperçois que les « gadgets » deviennent plutôt des outils du quotidien voire du futur, mais le regard de beaucoup de personnes n’évolue pas aussi vite que les technologies. Qui n’a jamais fait face à la fameuse question « Ça sert à quoi? » en montrant sa nouvelle acquisition à son entourage.

39 thoughts on “Tuto : Centre de gestion de présence”

  1. Bonjour Julien et bravo pour ton travail, tres efficace!!
    Naturellement, comme beaucoup je me demande comment faire le meme virtuel, pour android cette fois.

    Pour le moment, je me sers du plugin geoloc de jeedom, couplé avec un scenario tasker qui par appel d’url renvoie sa position par intervalle regulier.
    Mais je suis a l’ecoute de toute autre solution =)

    Merci pour ce partage, je me penche dessus ce weekend c’est certain 😉

    1. Salut Cédric,

      lors de ma tentative de switch android, j’ai simplement échanger le plugin geoloc iOS par le geoloc officiel.
      effectivement, il faut bien utilisé tasker.
      pas d’autres solutions à ma connaissance (mais je suis un noob en android) 🙂

      1. moi sur android j’utilise l’excellente application creer par un membre du forum jeebud.. ca fait le boulot.. et sans tasker..

        1. Sinon je conseille aussi le plug-in « Domo Widget » de Rémi Couturier, qui permet de se passer de Tasker (…et Autovoice pour ceux qui utilises les interactions via reconnaissance vocale).

  2. Salut. Intéressée par ton script mais impossible enregistrer :
    Error on shell exec, return value : 126. Details : Array ( [0] => sh: 1: /var/www/html/plugins/script/core/ressources/isConnected.sh: Permission denied ) ???

    Merci

    1. Bonjour Loup,
      Tu as une erreur de droits.
      Peux tu faire un « ls -ltr /var/www/html/plugins/script/core/ressources/isConnected.sh » et copier coller le resultat?
      Un petit chmod et tout ira mieux 😉

        1. C’est bien ce que je pensais 😉
          Jeedom n’a pas les droits sur le script, il n’y a que root. La marche a suivre est indiquee dans les commentaires en debut de script.

          Si tu ne maitrises pas vraiment les commandes unix, je peux te conseiller la commande magique (meme si je me ferai taper sur les doigts car cette commande dans les droits pour tout le monde sur le fichier, en lecture et en ecriture)

          chmod 777 /var/www/html/plugins/script/core/ressources/isConnected.sh
          –> donne les droits read, write, execute pour tout les users, groups.

          1. Salut. Oui je sais que l’on doit pas utilisé cette méthode.
            Je ne sais pas comment lui donné les droits, alors je dois abandonné ??
            C’est le problème le plus complexe de linux LES DROIT..
            Merci pour ton aide, 🙂
            Loup

          2. Je ne suis pas chez moi donc ce sera difficile de t’aider, mais assure toi de bien avoir suivi la marche a suivre comme indique dans les commentaires:

            sudo visudo -s
            Ajouter la ligne :
            www-data ALL=NOPASSWD: /usr/bin/arp-scan

            ********************
            *TRADUCTION*
            ********************
            le script execute une commande de scan a l’aide de sudo.
            Donc, dans la gestion des droits sudo, ajouter la ligne inidiquee permet de faire en sorte que le user www-data (apache, donc ton serveur web, donc jeedom) puisse bien executer grace a sudo la commande de scan.

            Quand tu l’a fait, cela a bien fonctionne? Tu n’as pas eu d’erreur?

  3. J’ai utiliser pendant 2 ans les plugin ping puis Network pour pinger mes smartphones Android. .. ça a marché super. Mais depuis la dernière mise à jour d’Android , Le wifi se met en veille même si on coche l’option « wifi actif en veille  » du coup ça fonctionne nettement moins bien … et je n’ai pas trouvé de solution ☹

  4. C’est mis en place, merci encore de ton partage c’est vraiment du super boulot !
    C’est fonctionnel chez moi avec android et Tasker pour mettre a jour les infos des virtuels.

    Je me permet de partager le lien de ton article sur mon site, si tu veux bien =)

    Cordialement
    Cedric

  5. Bonjour, et merci pour tout ça. J’y suis presque , par contre le nom « wifi » par exemple, ou « Nut » ne veut pas s’afficher au dessus de l’image du téléphone…bien que j’ai coché « afficher le nom »
    Une idée?

  6. bonjour,

    J’ai une petit question, tu sais me dire a quoi correspond les chiffres en dessous des km de dist maison et comment les faire apparaitre?

    Merci

    1. 2eme petite question : Comment as-tu réussi a faire la vue « LI Geoloc » et « Julien Geoloc » avec des iphone alors que le widget geoloc n’est utilisable que par android?

      1. Hello,

        j’utilise le widget Maps qui se trouve dans le market. j’applique ce widget sur la commande de position GPS qui m’ait fournit par le plugin Geoloc iOS

        1. Oui mais dans la vue tu as les trajets, iphone -> maison, iphone -> Travail, etc
          tu as reussi a tout mettre dans un widget et après tu intégeés ce widget dans la vue avec plusieurs destination, c’est cette etape sur laquelle je bloque car je n’arrive pas a integrer plusieurs trajet en un seul widget.
          Merci

          1. oups pardon je n’avais pas compris. en fait j’utilise effectivement le plugin Geoloc officiel pour cette partie. normalement il ne fonctionne que avec Android, mais une personne a mis sur l’Appstore, une app qui permet d’utiliser ce plugin. l’app s’appelle GeoJeeDom, tu renseignes ton adresse de Jeedom, l’identifiant de la commande du plugin Geoloc et l’app va remonter régulièrement la position.

  7. super merci bcp pour ces informations, et ce tuto car je cherchais un moyen de regrouper toutes mes détections dans un seul plugin 🙂

  8. Salut , petite question sur la fiabilité des nut et des présences. Pensent tu que le seulement nut sur un porte clé suffit pour une activation/désactivation de l’alarme (sans géolocalisation du tel et sans détection connexion wifi)?

    Merci beaucoup

    1. Hello, non je ne pense pas. Aucune méthode n’est fiable à 100%, c’est pour cela que je combine les 3 indicateurs pour déterminer ma présence. Et generalement, la présence est souvent détecter après désactivation de l’alarme

      1. Merci pour info, je débute avec jeedom, et je voulais quelque chose le plus waf possible pour que madame n’ai même pas à penser à désactiver l’alarme en rentrant. Vu que je compte mettre un écran tactile dans l’entrée de ma maison, je voudrais trouver un système ou l’on active ou désactive l’alarme de façon sécurisé.

        Pour info, Combien de temps environ les nuits sont reconnus dans le système ?

        Merci pour ta réponse rapide. Ton site est top au passage

  9. Hey, Merci beaucoup pour le tuto 😉

    En revanche petit soucis j’ai ce message d’erreur : Error on shell exec, return value : 127. Details : Array ( [0] => sh: 2: mac: not found )

    Une idée ?? pourtant l’adresse MAC est la bonne :/

    Merci 😉

  10. Salut !
    Merci pour le partage! Tout fonctionnement parfaitement chez moi!
    J’ai un seul petit soucis, comment paramétrer le virtuel pour que chaque info ne soit pas sur une nouvelle ligne ? (Distance, Wifi et Présence sur la meme ligne, la Map en dessous…). J’ai un retour a la ligne après chaque info virtuel, c’est vraiment laid !

    Merci d’avance

      1. Merci de ta réponse!

        Et non malheureusement, je ne comprends pas:
        – La tuile est large
        – Aucun retour à la ligne forcée sur aucune des commandes

        J’arrive vraiment pas a piger !

  11. Bonjour et merci pour ce super tuto. je galère un peu sur la partie du script isConnected.sh. Celui-ci ne me retourne aucune valeur…par contre si je l’exécute en ligne de commande il me retourne bien un 1 ou 0. Pour ce qui est des droits, il est en 777 et appartient à www-data. Ce qui est également bizarre c’est qu’avec le plugin Outils de développement, il apparait comme un fichier txt contrairement à mes autres scripts qui apparaissent bien en .sh… Aurait tu une idée ? Merci d’avance

  12. Bonjour Julien,
    Je viens de rajouter la partie iftt et je me pose une question :
    Est-ce qu’il faut rajouter la partie iftt = 1 dans la partie « a la maison » pour qu’il passe en présent une fois dans la zone?

Laisser un commentaire