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:
- se connecter sur la console d’admin de la Freebox en renseignant votre login/mot de passe
- Aller dans “Ma Freebox” puis “Configurer mon routeur Freebox”
- 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
- 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
- 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.
- renseigner les 2 valeurs possibles suivantes:
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”
- Le paramétrer de la manière suivante
- Lui créer la macro “En Cours dans 10s”
- Lui créer la macro “Non demandée dans 10s”
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”
- créer la règle “Reconnaissance présence”
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”.
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.
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!
[…] 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. […]
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.
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.
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” ?
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.
Merci, je vais faire le test ce soir.
[…] 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. […]
Excellent tuto.
Merci Hervé.
Je t’en prie Domotics.
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 ! 😉
Bonjour,
La Zibase ne permet pas de faire des PING. Il lui faut donc le support d’un script extérieur comme présenté il y a 2 ans. Cette solution fonctionne toujours très bien.
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 ?
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 😉
Génial! Merci pour ce tuto
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
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
[…] Détection de présence nominative: http://www.abavala.com/detection-de-presence-nominative-avec-la-box-eedomus/ […]
Excellent tuto, il fonctionne très bien pour moi avec IPhone et la famille Android
Merci