Détection de présence nominative avec la box Eedomus7 minute(s) de lecture

Il y a maintenant près de 2 ans je vous avais présenté une manière de déterminer qui était présent à la maison.  Cette méthode toute simple consistait à affecter une adresse IP fixe aux smartphones des personnes habitant à la maison et de faire en sorte que la Zibase puisse récupérer cette information.  Cette fonctionne fonctionne très bien mais nécessite de faire appel à des scripts PHP qu’il faut héberger chez soi. Depuis quelques mois, la box Eedomus permet de faire cela sans utiliser de scripts PHP externes.  Voici comment faire.

Présentation

Pour savoir si une machine est présente sur un réseau informatique il y a une manière simple de le savoir c’est d’utiliser la commande PING en appelant l’appareil avec son adresse IP. Cela correspond à lancer à haute voix un “ordinateur n° 15 es-tu là?” et de patienter pour recevoir la réponse de cet appareil qui dirait : “oui je suis là”! si l’appareil en question ne répond pas, on considérera qu’il n’y est pas. Cela dit cela ne permet pas de savoir si l’appareil est absent du réseau ou s’il y est physiquement branché mais qu’il est tout simplement éteint.

En informatique, la commande PING est utilisée en connaissant l’adresse IP de la machine à contacter. La commande PING indique la durée nécessaire pour la joindre.  Si cette durée est trop longue la machine sera considérée comme non présente dans le réseau informatique.

Cette fonctionnalité bien pratique est disponible en standard sur la box Eedomus via la Eedomus Toolbox.  Et comme les smartphones peuvent se connecter en Wi-Fi au même réseau que votre centrale domotique Eedomus  via votre box Internet, cela permet de détecter si votre smartphone est présent sur le réseau informatique domestique et de considérer par extension que son propriétaire est également à la maison.

Pré-requis

Pour faire un PING il faut tout d’abord connaitre l’adresse IP de votre smartphone. Cette adresse IP doit qui plus est être invariable dans le temps.  Pour permettre cela, vous pouvez tout simplement vous connecter à l’interface de gestion de votre box ADSL et renseigner le forçage de l’attribution de l’adresse IP par votre box à votre Smartphone en fonction de l’adresse MAC de ce dernier.  Cette étape n’est pas facile à illustrer car elle dépend de votre box ADSL et du type de smartphone que vous possédez. iOS : L’adresse MAC de l’iPhone 3GS de Mme se trouve dans :

  • Réglages/Général/Informations -> adresse wi-fi.

Android: L’adresse MAC de mon Nexus 5 se trouve dans :

  • Paramètres/A propos du téléphone/Etat -> Adresse MAC Wi-Fi

Pour permettre à votre box Internet d’affecter toujours la même adresse IP à votre smartphone lorsque ce dernier souhaite se connecter à votre réseau via le Wi-Fi il faut vous rendre sur la console d’administration de votre box et de renseigner l’adresse MAC et de lui affecter l’adresse IP souhaitée. Pour la Freebox:

  • Aller dans “Ma Freebox” puis “Configurer mon routeur Freebox”

eedomus-ping-freebox-param

  • dans la rubrique “Redirections / Baux DHCP” vous trouverez une sous rubrique “Baux DHCP permanents”
  • renseigner alors l’adresse IP que vous souhaitez attribuer à votre smartphone et son adresse MAC

eedomus-ping-freebox-param-ip

  • Sauvegarder les paramètres
  • redémarrer votre Freebox pour que les paramètres prennent effet

Mise en place de la détection nominative

Dans la console d’administration de la box Eedomus il faut maintenant créer un périphérique qui aura la charge de vous indiquer si votre smartphone est connecté à votre réseau c’est à dire si vous êtes présent dans votre logement. Ce périphérique est un capteur HTTP.  Il faudra créer un capteur HTTP par Smartphone à identifier.

  • créer un périphérique de type capteur HTTP

eedomus-capteur-http

  • Paramétrer ce capteur de la manière suivante:

URL de la requête : http://localhost/tools/?action=ping&url=192.168.0.111 Chemin XPath : /eedomus/result Dans l’URL, la valeur 192.168.0.111 est l’adresse IP de votre smartphone.  Elle doit être adaptée si vous utilisez une autre valeur. La fréquence de la requête est affectée à la valeur 60.  C’est a dire que le capteur sera mis à jour automatiquement toutes les 60 minutes.  Mais ne vous en faites pas, on pourra mettre à jour ce capteur également à la demande.

eedomus-http-param-capteur

  • renseigner les 2 valeurs possibles suivantes:

eedomus-http-capteur-valeur

Mise à jour de la détection de présence nominative

Afin de mettre à jour cette donnée de détection de présence nominative dès que l’on ouvre la porte d’entrée par exemple, on va faire appel à un périphérique “Etat”. Il aura la charge de piloter la mise à jour de la détection de présence tout en s’assurant que le smartphone a s’est bien connecté au réseau Wi-Fi.  Pour forcer une smartphone à se connecter au réseau Wi-Fi, il “suffit” de le réveiller et qu’il sorte de son état de veille. Cela peut se faire par un simple envoi de notification par exemple.  Cette étape est nécessaire pour les appareils sous iOS et on pourrait s’en dispenser pour des appareils Android.

  • créer une périphérique “Etat”

eedomus-etat-maj

  • Le paramétrer de la manière suivante

eedomus-etat-maj-param eedomus-etat-maj-valeurs

  • Lui créer la macro “En Cours dans 10s”

eedomus-etat-maj-macro_en_cours

  • Lui créer la macro “Non demandée dans 10s”

eedomus-etat-maj-macro_non-demandee Le but de cette mise en place est de faire la demande de détection en mettant le périphérique à l’état “Demandé”.  Il patientera 10s avant de prendre l’état “En Cours”. La demande de PING sera faite à cet instant et on patientera 10s que la requête aboutisse en positionnant ensuite le statut à “Non demandé”.  Cette cinématique est gérée par les 2 règles suivantes qu’il faut maintenant créer.

  • créer la règle “Reconnaissance présence Lancement” 

eedomus-ping-regle-reconnaissance-presence-lance

  • créer la règle “Reconnaissance présence”

eedomus-ping-regle-reconnaissance-presence

Utilisation

Si l’on a envie maintenant de savoir qui est à la maison lorsque la porte d’entrée s’ouvre par exemple.  Si vous avez bien suivi le tutoriel, vous aurez remarqué que nous avons paramétré le composant HTTP pour qu’il se mette à jour toutes les heures (60 minutes exactement).  On aurait pu d’ailleurs mettre toutes les 1/2 heures ou moins encore mais cela aurait surchargé sans nécessité la détection de présence par la box eedomus. L’idéal aurait été qu’il n’y ait pas de fréquence définie et que la mise à jour se fasse uniquement à la demande.  Pour l’instant une fréquence de mise à jour est une donnée nécessaire… Pour l’instant…

Déclencher la demande de reconnaissance est maintenant simple.  Il “suffit” de créer une règle qui lancera une notification et qui positionnera le statut de l’état à “Demandé”. Les règles créées précédemment s’occuperont de la temporisation nécessaire à la réception de la notification par le smartphone à son éventuelle reconnexion au réseau Wi-Fi et au PING à proprement parler. La règle suivante est lancée suite à un événement “ouverture de porte d’entrée”.

eedomus-ping-regle-declenchement La règle permet d’identifier alors la personne qui est présente lorsque l’on arrive ou l’on part.  Si la détection n’identifie personne, il y a peut être un visiteur indésirable….

Conclusion

Cette méthode à l’avantage d’être compatible avec tous les smartphones.  Aucune application tierce n’est nécessaire. Le fonctionnement par défaut des téléphones qui se connectent au réseau Wi-Fi connu de manière automatique est un avantage que l’on exploite ici.  Son entrée sur le réseau se faisant de manière transparente cela ne nécessite aucune manip d’aucune sorte de la part du propriétaire du smartphone.  Il suffit juste de faire sortir le smartphone en lui envoyant une notification.

Autre avantage et non des moindres, la méthode ne consomme pas la batteries des smartphones.  Comme le GPS du téléphone n’est pas utilisé pour le faire détecter par la box, il n’y a pas des surconsommation.  C’est un peu le souci des solutions basées sur la géolocalisation des smartphones.  Ave cette méthode il s’agit en quelque sorte d’une géolocalisation passive.

eedomus-ping-resultat Vous l’aurez compris, en fonction du modèle de smartphone que vous possédez, un “réveil” forcé peut être requis pour qu’il se connecte à réseau Wi-Fi de votre réseau domestique.  Une contrainte à prendre en compte est donc d’identifier un événement permettant de déclencher l’envoi de la notification qui fera sortir votre téléphone de sa léthargie. Si vous êtes équipés d’un téléphone Android, vous avez de la chance. Cette étape n’est pas forcément nécessaire!

18 Comments

  1. Cédric said:

    Et avec ton Nexus, tu es obligé de le réveiller aussi pour vérifier ? Ou il est toujours joignable ? C’est un problème en effet avec les iPhones.

    27 février 2014
    Reply
    • Avatar photo Hervé said:

      Bonjour Cédric,
      Comme il y a un iPhone à la maison le Nexus est traité de la même manière. Je sais d’après l’historique du capteur HTTP consultable que le Nexus reste actif par la suite sans se déconnecter. Par contre est-ce que c’est la notification qui réveille le Nexus ou est-ce lui qui se connecte TOUT LE TEMPS tout seul au réseau je n’ai pas assez de cas. A priori il capter le réseau seul. Le premier qui est certain en informe l’autre.

      27 février 2014
      Reply
  2. Nico33 said:

    Excellent tuto que je viens de mettre en oeuvre.
    J’ai une question, la macro qui attend 10 secondes avant de lancer la détection n’est là que pour les iPhones ?
    Etant équipé que d’Androids, je peux me passer de cette attente de 10 secondes avant de passer en “en cours” ?

    27 février 2014
    Reply
    • Avatar photo Hervé said:

      Bonjour Nico33,
      La macro sert à cela. A priori sous Android tu ne devrais pas en avoir besoin. Comme on n’est jamais certain à 100% à cause des surcouche à Android des fabricants de portables, j’ai préféré proposer une utilisation qui marchera pour tous. Si ton téléphone n’en a pas besoin tu peux bien sûr sauter cette étape.

      27 février 2014
      Reply
      • Nico33 said:

        Merci, je vais faire le test ce soir.

        27 février 2014
        Reply
  3. […] Il y a maintenant près de 2 ans je vous avais présenté une manière de déterminer qui était présent à la maison. Cette méthode toute simple consistait à affecter une adresse IP fixe aux smartphones des personnes habitant à la maison et de faire en sorte que la Zibase puisse récupérer cette information. Cette fonctionne fonctionne très bien mais nécessite de faire appel à des scripts PHP qu'il faut héberger chez soi. Depuis quelques mois, la box Eedomus permet de faire cela sans utiliser de scripts PHP externes. Voici comment faire.  […]

    27 février 2014
    Reply
  4. Domotics said:

    Excellent tuto.
    Merci Hervé.

    27 février 2014
    Reply
    • Avatar photo Hervé said:

      Je t’en prie Domotics.

      28 février 2014
      Reply
  5. Khondji said:

    Bonjour !
    Félicitations pour se tuto !
    Selon vous, est-ce que ce tuto pourrait être transposable sur une ZiBase ?
    Je me doute de la réponse mais j’aime mieux demander aux “experts” !
    Bonne journée ! 😉

    1 mars 2014
    Reply
  6. Orel' said:

    Bonjour,

    Malheureusement, un problème persiste me concernant..
    L’iphone déconnecte automatiquement le wifi quand il rentre en veille pour préserver la batterie..

    Donc, a la demande de mise a jour avec l’iphone en veille, celui-ci retourne l’état d’absence.. je suis le seul à avoir se problème ?

    3 mars 2014
    Reply
  7. Orel' said:

    mes excuses, j’avais oublier d’activer les notifications pour faire sortir l’iphone de la veille
    .. d’ou l’interet de l’article d’ailleurs.. autant pour moi..
    bonne soirée 😉

    3 mars 2014
    Reply
  8. Anne-Marie said:

    Génial! Merci pour ce tuto

    13 avril 2014
    Reply
  9. mika said:

    Bonsoir.
    J’ai un iphone. Je peux faire une notification toutes les 15 minutes sur le téléphone. mais c’est désagnéable, il sonne tout le temps. Avez vous une solution pour le réveiller mais sans sonnerie?
    merci a vous

    4 juillet 2014
    Reply
  10. JL V said:

    Bonjour,

    j’ai essayé d’implémenter ce système, mais j’au un pb avec la requête PING, j’obtiens actuellement le message d’erreur suivant :

    protocol http not supported or disabled in libcurl

    sauriez vous comment traiter ce probléme ?

    Bien cordialement

    15 janvier 2016
    Reply
  11. Calva said:

    Excellent tuto, il fonctionne très bien pour moi avec IPhone et la famille Android
    Merci

    1 septembre 2018
    Reply

Laisser un commentaire

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

Prouvez que vous êtes humain: * Time limit is exhausted. Please reload CAPTCHA.