DomotiqueTutoriaux

Tuto : Centre de gestion de présence dans la domotique Jeedom

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.

55 Comments

  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. 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

  8. 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 😉

  9. 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 !

  10. 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

  11. 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?

  12. Bonjour,

    Merci pour ce tuto, je débute avec jeedom suite à l’acquisition d’un raspberry et se tuto ma bien aider a comprendre quelque bases pour Jeedom. Y a certaine partie ou j’ai eu un peu plus de mal et d’autre que je ne peux encore mettre en place notamment la parti IFTTT car mon jeedom n’est pas ouvert à l’extérieur pour le moment.

    Encore merci pour le partage !

  13. Bonjour,

    Effectivement un excellent tuto facile à comprendre.
    Juste une question: tu as utilisé le widget maps-mob avec le plugin Geoloc Ios, où peut-on le trouver ?
    Merci d’avance

  14. Salut, j’ai voulu créer un centre de présence avec des smartphone Samsung, pour cela j’ai d’abord utilisé le plugin géolocalisation.
    Avec celui-ci aucun problème tout fonctionne parfaitement.
    Seulement, ayant besoin du plugin localisation & trajet pour d’autre tache, j’aimerai uniformiser mon utilisation et ne plus utiliser géolocalisation histoire de ne pas avoir plusieurs plugin qui ont la même fonction.
    Seulement avec ce dernier, je n’arrive plus a avoir une vue aussi complète qu avant en cliquant sur détail. En effet, je n’ai plus de notion de de distance ni de temps de trajet, de plus les cartes sont bien plus petite maintenant.
    As-tu déjà essayé ce plugin pour la gestion de présence?
    Dois-je du coup rester sur géolocalisation si je veux avoir les données les plus complètes?
    Merci d’avance de prendre le temps de m aider ^^

  15. salut!
    je débute avec Jeedom et le tuto que tu propose est juste super !
    Cela dit je bloque dès le début.
    Le script refuse de s’exécuter j’ai fait un nano isConnected.sh puis j’ai collé le code du script. Ensuite j’ai fait un CHMOD 777 du fichier mais rien à faire si je l’exécute j’ai la roue cranté qui tourne en rond sans jamais répondre… je doit quitter jeedom et réouvrir puis si je fait tester… rien… Merci de ton aide !!

  16. ok en essayant de debugguer je pense que cela viens simplement de mon mode de fonctionnement. Le Script cherche une adresse mac en faisant un arp scan or j’ai du nat entre mon install mode docker de syno et mon réseau sur lequel se trouve mes smartphones est-ce une erreur de penser comme cela ?
    Sinon je débute complet et je ne trouve même pas où il faut aller pour créer le centre gestion de présence…. ooops

  17. Bonsoir Julien,

    merci pou ton tuto et tous les tuto que tu fais qui pour moi qui débute sous Jeedom m’aide vraiment.
    Par contre dans le cas présent je bloque au niveau des 2 créations IFTTT que je n’arrive pas a reproduire, sais tu ou je peux trouvé un peu d’aide sur le déroulé complet ?

    Merci d’avance

  18. Le tuto nest plus à jour tu utilise l’app « localisation » dans le +this et dans le that tu utilise weebhooks en lieu et place de maker.
    Ensuite tu fait comme dans le tuto en créant 2 applet 1 pour la sortie qui enverra à Jeedom la valeur 0 et 1 pour l’entrée dans la zone qui enverra à Jeedom la valeur 1.
    La phylosophie Jeedom est compliqué à prendre en main au début une fois compris c’est relativement simple 😉

  19. salut julien, te serait-il possible de détailler la mise en place de la vue avancée avec les différentes positions ?
    Je débute je commence à me débrouiller mais ne connais pas encore toutes les ficelles.
    Merci @ toi 😉

  20. Salut !

    A tout hasard, Geoloc_ios fonctionne toujours chez toi ?

    Depuis 2 jours j’ai une erreur dans les logs:

    * Hostname was NOT found in DNS cache
    * Could not resolve host: fmipmobile.icloud.com
    * Closing connection 0

    Et ceci en boucle ….

    Merci d’avance.

  21. Bonjour,
    J’ai bien suivi ton tuto bien détaillé.
    Par contre uns fois tout configuré dans le pugin IFTTT comme tu as fait, sur mon dashboard je ne récupère pas les infos du plugin script pour le WIFI ou les infos du plugin geoloc_ios pour la positions GPS alors que ces infos sont bien mis à jour dans leur plugin respectif.
    As tu une idée ?
    Merci

  22. Merci Stéphane pour ton aide concernant IFTTT effectivement j’ai réussi a créer les deux applets, je vais pouvoir continuer le tuto en espérant ne pas être confronté à un autre problème, lool.
    Bonne soirée

Laisser un commentaire