Gestion de la présence

Rédaction : Janvier à Février 2020

Là encore, un très long article qui illustre tout l’intérêt d’une domotique. La présence ou la pierre angulaire pour de nombreux autres éléments domotiques : alarme, automatisation, chauffage etc.

Mes besoins :

  • déduire la présence ou non de quelqu’un “automatisable” : je ne gère que la présence des adultes pour l’heure et ce n’est pas prévu encore de gérer celle de mon fils ou de mon chat ou d’un poisson rouge ! Donc cela se limitera à mon épouse et moi-même…
  • déduire la présence des usages : depuis une trottinette et jusqu’à ma moto, les voitures. Tellement plus pratique pour gérer les éclairages et les automatisations souhaitées – portail, garage …
  • pouvoir forcer des absences : l’intérêt est de pouvoir gérer un oubli partiel pour forcer l’absence de quelqu’un. Ainsi, tout comportement lié à l’absence de quelqu’un peut être correctement traité : anticipation du chauffage sur présence ou mode absent pour le chauffage, gestion de l’eau chaude, gestion des éclairages, la détection de mouvement
  • ne pas avoir une présence / absence liée à un seul élément : indépendamment de mon expérience domotique, j’étais déjà utilisé d’outils d’automatisation tels que Tasker. Forcément, j’ai eu des loupés sur mes expériences et la première conclusion a été il faut plusieurs conditions pour savoir si quelqu’un est là … j’expliquerai mes choix plus bas.
  • après plusieurs essais, mon choix s’est porté sur une somme de plusieurs indicateurs :
    • Wifi téléphone : quoi de plus simple qu’un téléphone qui a son IP sur le Wifi de la maison … sauf quand vous l’oubliez !
    • Position GPS téléphone : l’intérêt est le partage de l’information pour la famille mais aussi de pouvoir déclencher des actions en fonction de la distance du domicile. Une alarme se coupera quand je serai réellement chez moi alors qu’un portail peut être ouvert quelques secondes avant que j’arrive …
    • Noisette Bluetooth : simple, peu coûteux (sauf en pile suivant la version) c’est tout l’intérêt d’une VM BLEA ou des antennes Raspberry … et là, la présence de mes clés qu’elles soient d’un véhicule ou du domicile n’est pas un mystère !

Cet article sera la base pour de nombreux articles déjà rédigés ou à venir : alarme, détection de mouvement, automatisation, confort et usages etc.

Pré-requis :

Si vous suivez cet article, il vous faudra :

  • PING ou NETWORKS pour avoir l’information de présence de votre téléphone,
  • BLEA pour remonter les informations des NUTs Bluetooth,
  • PING ou NETWORKS pour avoir l’information de présence de votre téléphone,
  • BLEA pour remonter les informations des NUTs Bluetooth,
  • SCRIPT pour forcer la géolocalisation,
  • GEOLOC pour remonter la position du téléphone Android,
  • iOS Cloud si vous avez une Iphone (son dual),
  • les habituels Widget en V3 et Virtuel pour présenter les informations,
  • j’utilise l’interrupteur ON/OFF en V3,
  • mes recommandations pour le design.

Partie Bluetooth

Comme expliqué précédemment, je m’appuie en partie sur du Bluetooth et le plugin BLEA. L’utilisation d’une clé longue portée (SENA) ou d’antennes Raspberry PI3 BLEA permet de quadriller une maison ou un appartement intelligemment. Il existe déjà un long article de mise en place d’antennes BLEA, je vous invite à le relire. En complément, j’ai fait le choix d’avoir une VM séparée (fort de quelques mauvaises expériences dans le passé) de Jeedom pour une clé longue portée qui me permet de garantir la lecture des devices Bluetooth. Là encore un article est déjà écrit à ce sujet, à relire donc !

Clé SENA SD1000

J’ai banni les NUTs mini dont la durée de vie des piles utilisées (CR2016) est très courte (< 3 mois). Les NUT 2 (prix en France entre 7 et 11€) ou NUT 3 (prix en France entre 12 et 17€) sont très intéressants. Privilégiez des piles de marque sur Internet car il est régulier lors de mes achats que les piles achetées soient à 15/20/30% de leur capacité… Je tourne entre 3 et 6 mois d’utilisation sur ces versions de NUT. Record une fois à 9 mois ! J’ai aussi banni tous les NUT équivalents. Fiabilité oblige…

L’intérêt de ces NUTs est leur faible encombrement. Cela permet d’indiquer aux antennes BLEA la présence de vos clés de voiture, maison etc.

Nut 2

Nut 3

Il vous suffit de scanner vos devices Bluetooth sur le plugin BLEA et ils vont apparaître.

Santé BLEA

Notez que la vue Réseau vous permet de positionner vos antennes au mieux et d’enregistrer leurs positions… mais aussi de savoir la dernière antenne qui a vu vos NUTs…

Il n’est pas nécessaire d’historiser beaucoup de choses… car le plugin ne remonte pas tout même si les champs sont présents. Par défaut, je remonte les informations sur toutes les antennes d’émission/réception. Je ne force aucun refresh et je ne garde pas la connexion pour ne pas vider les piles…

Configuration des paramètres d’un NUT

Il va exister autant de niveaux de réception que d’antennes. Idem pour l’indicateur de présence. Pour ma part, j’affiche les niveaux d’antenne, la présence globale (present) que j’historise avec 7 jours max.

Configuration des commandes d’un NUT

Notez aussi qu’il existe la possibilité de remonter le niveau de batterie des NUT mini ou NUT 3 en forçant une antenne à lire (ce qui la condamne). Je n’utilise pas cette possibilité, mais je vous la donne.

Comme d’habitude, je vous conseille de passer des virtuels pour mettre en forme ces données souvent trop nombreuses et illisibles et en plus cela permet de faire des widgets sympas (attention, je suis toujours en V3 !).

Par exemple, le NUT de madame brut me donne les 4 niveaux d’antennes et la présence. Le niveau d’antenne est très pratique pour faire une action spécifique (par exemple, récupérer le courrier à la boite aux lettres) :

NUT “brut”

Ce même NUT mis en forme par un virtuel qui me sert pour la gestion de présence :

NUT “mis en forme”
Commandes du NUT “mis en forme”

Voici la configuration :

  • J’utilise un interrupteur d’activation du NUT. Très pratique quand des clés sont perdues, prêtées par exemple ou pour interdire l’accès à la maison à quelqu’un par exemple. La commande Nut_off ou Nut_on passe l’information Activation_Nut à 0 ou 1 (binaire).
  • Cette autorisation permet grâce à l’opérateur binaire ET de valider ou non la présence du NUT. Si l’autorisation est à 0 alors quelque soit l’état du NUT, il sera vu comme absent.
  • Le niveau d’antenne est transmis par un max de tout le niveau d’antenne.
  • Je recopie l’état du NUT pour plus de lisibilité.
  • Enfin, je stocke l’état du changement de présence/absence du NUT qui est passé par scénario à une variable nommée SetStateEmilie.

Faites de même pour toutes vos noisettes : maison, voiture, moto, vélo, go !

Et on peut faire comme d’habitude des choses sympathiques :

NUT mis en forme pour les véhicules

Ou bien la gestion de toutes les clés :

La gestion des clés de chacun

Pour mettre en forme la présence/absence, je passe par un scénario qui se déclenche en provoqué sur l’information de présence du NUT mis en forme (pas le brut !) et met à jour la variable associée du virtuel vu plus haut, dans notre exemple :

#[Capteurs et Actionneurs][Nut Emilie (virtuel)][Présence]#
Scénario de présence/absence du NUT

Maintenant que nous avons un premier indicateur de présence, celui de vos clés de maison, de voiture ou autre… nous pouvons avancer à la seconde partie, celle du téléphone.

Partie téléphone – Wifi

En parallèle du plugin BLEA, j’utilise aussi le plugin Ping qui me permet d’avoir l’état de présence sur le Wifi d’un téléphone Android (valable ou un device iOS). Pour le coup, on fait simple ! Pour les téléphones, je regarde l’adresse MAC (pensez quand même à fixer votre IP dans le serveur DHCP de votre routeur ou box opérateur). L’adresse MAC se trouve dans les paramètres Système de votre téléphone Android ou iOS ou tout simplement dans le menu Wifi de votre routeur ou box s’il est connecté (ou dans la Offline List).

Un article sur le monitoring des équipements a déjà été rédigé, j’expliquais comme les suivre ou même faire un design sympa pour présenter ce type d’informations. Pour rappel, le plugin Ping vient d’un market alternatif. Le plugin Networks officiel fera le même travail.

Pour savoir si votre téléphone est bien présent, il suffit de rechercher sa présence en Wifi par exemple et d’identifier son adresse MAC. J’historise sa présence sur 7 jours au cas où. L’information de présence du téléphone est donnée par la commande “Etat”.

Adresse MAC pour la présence du téléphone en Wifi

Nous verrons ensuite que le Wifi permet de renforcer l’indication de la zone GPS (instable notamment quand nous sommes dans des murs). Pas de scénario associé sauf si vous avez envie de faire un virtuel pour cela… ?

Partie téléphone – GPS

La partie la plus lourde et souvent problématique car il faut savoir ce que l’on fait un minimum. Il existe des centaines de tutoriels sur le net, mais il ne faut pas oublier que pour Android, souvent le fabricant de téléphone bride le téléphone par un endormissement des applications pour économiser la batterie. Vous trouverez plusieurs solutions, je vous donne la mienne. Inutile de venir me demander d’autres solutions, j’ai éprouvé celle-ci après avoir testé les autres :

  • Android (retenue) : Macrodroid non rooté (ou rooté), plugin Geoloc.
  • iOS (non utilisée mais mis en place par mes soins et utilisé par des amis depuis plus d’un an sans souci particulier) : plugin iOS cloud. La mise en place côté iOS est très simple. Je vais commencer par elle.

Il en existe plusieurs qui reposent toute sur le push de la position par l’API. Même Domowidget le fait pour vous si vous voulez !

Cas Apple et iOS :

Installez le plugin iOS cloud et renseignez votre compte Apple (premier bouton du plugin) en créant un compte Icloud dédié. Pour le coup, c’est Apple qui aura ses informations, là où Android, on peut faire le choix de ne rien remonter chez Google… pas glop !

Configuration du compte iCloud

Vos devices Apple vont se créer automatiquement. Créez ensuite une position fixe (second bouton du plugin). Récupérez vos coordonnées GPS par Google Maps ou ailleurs… il vous suffit de faire glisser la carte et de double cliquer pour récupérer le point GPS souhaité dans la barre d’adresse ou “plus d’infos sur cet endroit”. Ici c’est un exemple, mais soyez PRÉCIS. Positionnez le point sur votre maison ou immeuble !

Exemple de coordonnées GPS à récupérer
Position fixe au format X.X,Y.Y

Il suffit alors de créer une distance en indiquant le device à rechercher par rapport à votre position fixe. Vous l’aurez compris, c’est la distance qui sépare votre téléphone de la maison. En dessous de cette distance vous êtes comme à la maison, en dehors … bein en dehors ! 280/300m est un bon chiffre après avoir fait des essais pour éviter les faux positifs.

Calcul de la distance Téléphone Apple – Maison

Vous aurez donc deux commandes : la présence du téléphone dans la zone de la maison et sa distance. Vous pouvez historiser ces grandeurs, les afficher etc. Voyez que le widget du téléphone ainsi créé contient une carte (il faut appliquer le widget MAPS à télécharger dans le market des widgets en V3), la batterie, vous pouvez envoyer un message, un son etc. A vous !

A cet instant, ainsi vous avez donc :

  • la présence du téléphone dans la zone de la maison,
  • la distance du téléphone de la maison
  • la présence du téléphone en wifi.

Cas Android :

Il est sûr que la méthode que je vais vous proposer est bien plus lourde à mettre en place qu’un device Apple. Là n’est pas le débat…

L’intérêt de cette méthode est que si vous n’utilisez pas la remontée d’informations de géolocalisation de Google, vous passez par du push API de Jeedom. Bien plus privé !

Commencez par installer le plugin Geoloc officiel de Jeedom. Ajoutez un device, par exemple un téléphone. Notez que dans le champ Commandes, le plugin vous donne l’adresse à pusher pour mettre à jour votre position dans Jeedom :

  • Domicile : voir plus haut pour récupérer vos coordonnées GPS.
  • l’ID 5045 désigne justement mon téléphone et sera à remplacer dans la ligne URL à copier que nous allons pusher pour le champ #ID_CMD#.
  • Les 3 autres champs sont des informations de trafic que vous pouvez utiliser pour connaître le temps du trajet, la distance à vol d’oiseau ou la distance entre le téléphone et la maison. Pour ma part, je m’appuie sur le plugin Waze et Localisation & Trajets.
Objet téléphone Android
 https://SOUSDOMAINE.DOMAINE.ovh:443/plugins/geoloc/core/api/jeeGeoloc.php?apikey=APIGEOLOC&id=#ID_CMD#&value=%LOCN

Faites de même pour les autres téléphones que vous souhaitez relier à votre Jeedom. Vous aurez donc à chaque fois un #ID_CMD# associé. On en reparle ensuite… Inutile de créer plusieurs fois le domicile, vous pouvez y faire référence. Autre idée, vous pouvez créer des zones de travail, école ou autre, si vous avez envie de savoir que la personne est arrivée à bon port.

Macrodroid est une application du type “tasker”. Il est gratuit jusqu’à 5 macros. Pour ma part, j’ai aidé le développeur à l’époque à mettre en place les zones de géorepérage, j’avais acheté l’application et forcé de constater que je m’en sers pour plein de choses donc j’ai acheté l’application : pilotage de la domotique depuis la tablette de la voiture, activation de la musique dès que j’allume mon casque audio, activation du Hotspot wifi si présence dans la voiture etc.

Il va falloir déjà bien configurer Macrodroid car souvent tous les problèmes partent de là. Pensez à autoriser l’utilisation des informations de type géolocalisation à Macrodroid…

Dans les paramètres, commencez par interdire à Android d’optimiser la batterie. Profitez-en pour cocher “Fonctionnalités Expérimentales (triggers adaptés pour la position)”. Pourquoi ? Car nous allons demander à Macrodroid d’envoyer sa position en sortie, entrée de zone ou toutes les 30 minutes. Si l’application est tuée, elle dormira et ne pourra faire cela. Rendez-vous dans Paramètres de Macrodroid / Ignorer les optimisations de batterie qui va vous renvoyer les paramètres Android.

Paramètres de Macrodroid
Ignorer l’optimisation de batterie pour Macrodroid

Ensuite, configurez dans “Options des Déclencheurs”, “Déclencheur par l’emplacement”, la fréquence de rafraîssement à 10 minutes. J’ai tenté plusieurs réglages, “10 minutes” semble le meilleur compromis “batterie/réveil pour la zone”. Plus vous réduisez, plus Macrodroid va “sonder” la position pour savoir s’il doit lancer les macros ou non… attention, la batterie va se vider.

Fréquence de rafraichissement à 10 minutes

Enfin en déroulant le menu latéral, définissez une zone de géorepérage qui correspond aux coordonnées GPS de votre maison avec un rayon de 250/300m. Ce sera le même critère que nous utiliserons dans le scénario plus bas côté Jeedom.

Définition de la zone de géorepérage de chez vous

Enfin, créez 3 macros différentes pour l’entrée dans la zone, la sortie de la zone et un push à 30 minutes pour forcer l’envoi de votre position.

Le troisième cas a le double intérêt de forcer votre position si jamais elle n’était pas envoyée en sortie de zone et de remonter votre position si vous souhaitez la partager à votre famille ou l’afficher dans des designs. L’entrée est plutôt bien gérée car nous utilisons plusieurs conditions pour la présence (clé, wifi, GPS).

Je vous donne quelques astuces bien éprouvées après plusieurs années à utiliser ce principe :

  • dans mon cas, l’arrivée étant “loin” de la maison, je suis forcément hors Wifi… j’ajoute donc cette contrainte de déconnexion du Wifi quelque soit le scénario ! Nous le verrons plus bas, mais j’ai un scénario côté Jeedom qui force ma présence GPS à la maison si le téléphone est sur le Wifi ce qui est logique ! Le wifi n’aura jamais 300m de portée !
  • j’utilise à la fois la zone GPS ou le geofence que permet Google (options expérimentales) en tant que déclencheur.
  • pour l’entrée dans la zone maison, j’envoie le push par l’API en local LAN HTTP (sur l’adresse locale IP de Jeedom 192.168…) ou distant WAN HTTPS (par mon domaine/sous-domaine) car il se peut que le temps que le téléphone se réveille, j’ai accroché le Wifi ! Donc l’envoi d’une adresse WAN ne marchera pas. Et encore, nous le verrons, ce n’est pas bien grave car votre présence sera vue par les clés ou le Wifi…
 https://SOUSDOMAINE.DOMAINE.ovh:443/plugins/geoloc/core/api/jeeGeoloc.php?apikey=APIGEOLOC&id=#ID_CMD#&value=%LOCN

Premier scénario, celui de l’entrée. Petite astuce pour passer le push API utiliser Telegram depuis votre Jeedom pour récupérer l’adresse complète…

Les déclencheurs sont les entrées de zone, les actions sont :

  • j’active le data, si jamais il n’était pas activé ;
  • j’active le GPS (idem) ;
  • je patiente 10 secondes (1 à 3 secondes est intéressant pour stabiliser l’information GPS). Ici ce 10 secondes correspond au délai de 300m pour ouvrir le portail en automatisme. Car je veux qu’il s’ouvre quand j’arrive et pas avant.
  • je force la mise à jour de l’emplacement, c’est ce qui va nous permettre de récupérer l’information %LOCN qui est la position du téléphone !
  • enfin, j’envoie un push HTTP (sans navigateur pour éviter des ouvertures d’application intempestives et paramètres d’encodage d’URL activé) avec le format donné par le plugin c’est tout. N’oubliez pas de remplacer :
    • #CMD_ID# par l’objet dynamique correspondant à votre téléphone dans le plugin GEOLOC ;
    • %LOCN est à remplacer en cliquant sur le … et en choisissant “*Location – lat., long.”
  • comme indiqué plus haut, j’ajoute la contrainte que le Wifi doit être déconnecté de mon réseau Wifi de la maison.
Macro d’entrée dans la zone de la maison

Dans le même principe, le scénario de sortie. La seule différence est l’attente de 15 secondes et l’envoi uniquement par le WAN car si je suis en dehors de la maison, je ne suis nécessairement pas sur le Wifi !

Macro de sortie de la zone de la maison

De même avec la troisième macro qui envoie la position du téléphone toutes les 30 minutes :

Macro de rafraichissement hors maison

A cet instant, vous avez 3 macros qu’il faut penser à activer (petit interrupteur en première page et sur la page macro). Vous pouvez tester vos macros (menu … sur la page de la macro) pour voir si votre information de présence remonte bien dans Jeedom. Soit tester les actions (en esquivant les déclencheurs) ou tester la macro (en tenant compte des déclencheurs).

Quelques informations :

  • si jamais la remontée de la position GPS ne marche pas, tester l’URL directement dans votre navigateur de téléphone en envoyant de fausses coordonnées et regardez le log du plugin.
  • vérifiez si cela vient du plugin en activant le log sur le plugin (le plugin reçoit l’information du téléphone) ou si Macrodroid ne se réveille pas. Activez la journalisation de la macro (même menu que précédemment) et sur la première page de Macrodroid, utilisez le journal Système pour savoir ce qu’il se passe côté Macrodroid.
  • prenez le temps de régler vos distances et timing sur les macros ! Ce sont mes réglages, pas les vôtres.
  • ce debug est long et certainement pas évident à distance. Bon nombre de souci que vous rencontrez sont plus liés au fait que les personnes ne maîtrisent pas Android et ce qu’elles veulent faire par Jeedom. Je peux aider, mais comme je l’ai déjà expliqué le temps libre que j’ai je préfère le passer à rédiger. Passez par le forum Jeedom si nécessaire !
  • je ne fais que partager ma méthode. Il en existe plein : Domowidget, Geoloc, Tasker, iOS, etc.
  • quand vous avez quelquechose qui tourne pensez à sauvegarder vos macros par Exporter/Importer et sortir le fichier sur un PC ou votre NAS.

Maintenant que nous avons un téléphone qui remonte sa position, j’ai fait le choix de transformer sa présence pour mieux la gérer et la tracer dans le temps si j’ai le besoin. La plupart des plugins vous permet d’avoir cette information directement (comme iOS par exemple), mais j’aime bien le faire moi-même…

Pour savoir quand la position a été remontée dernièrement, je passe par un petit scénario qui update cette information dans une variable que je peux afficher sur mes designs. Utile pour savoir si l’information est récente notamment quand quelqu’un est à l’extérieur. Pour rappel, si je suis chez moi, il n’y a pas de refresh de position (puisque la condition est que je dois être déconnecté du Wifi).

Dernière mise à jour de position

Le scénario associé se déclenche sur un changement de l’objet Téléphone dynamique de Geoloc (l’ID qui sert au push des macros). Il met à jour un interrupteur ON/OFF de présence dans la zone GPS en fonction (voir plus bas) :

Remontée d’informations de la distance

Notez que j’utilise la même distance que sur Macrodroid. Ce scénario est utile pour savoir quand le push a eu lieu…

Pour éviter les faux positifs (le GPS étant instable entre les murs), si mon téléphone est sur le Wifi, je force sa présence GPS à la maison (donc au coordonnée de la maison) – plus simple pour les designs. Je déclenche donc ce scénario sur l’information Etat du plugin “PING” ici :

#[Réseau][OnePlus7][Etat]#

Et je force la présence binaire GPS et la mise à jour de l’information de Géolocalisation aux coordonnées de la maison :

Filtrage de la position GPS sur Wifi

J’utilise le plugin script tout simplement pour envoyer un push à Geoloc de ma position, cette dernière étant celle de la maison ! Dis autrement, ce n’est que l’URL de push en LAN que vous utilisez sur votre téléphone avec Macrodroid, sauf que les coordonnées sont celles de la maison.

Script de forçage de la localisation du téléphone aux coordonnées de la maison

La gestion des personnes

Pour résumer nous avons :

  • la présence des clés de maison, voiture ou autre,
  • la présence du téléphone sur le Wifi,
  • la présence du téléphone dans la zone de la maison,
  • nous avons la possibilité de forcer l’absence des clés.

Créons un virtuel par personne. Pour ma part, j’y affecte les véhicules et la possibilité aussi de forcer notre absence, par exemple, si je ne prends pas mes clés ou que je les oublie – idem pour le téléphone !

Design de gestion des personnes
Design approfondi de gestion des personnes

Cela donne ça ! Je suis encore en V3, les informations affichées ne sont que des icônes ON/OFF, voir l’article sur les designs. Tout ayant changé en V4 … peu d’intérêt ! Mais je partage mes utilisations d’icônes si besoin :

  • Présence Bluetooth (tableau vu plus haut) :
<i class="fab fa-bluetooth" style="font-size:20px;color:black;"></i>
  • Toutes les absences sauf cas contraire sont :
<i class="fa fa-times" style="font-size:20px;color:red;"></i>
  • Présence clé maison :
<i class="material-icons" style="font-size:20px;color:black;">vpn_key</i>
  • Présence GPS zone maison :
<i class="material-icons" style="font-size:20px;color:black;">location_on</i>
  • Absence GPS zone maison :
<i class="material-icons" style="font-size:20px;color:red;">location_off</i>
  • Présence moto :
<i class="fas fa-motorcycle" style="font-size:20px;color:black;"></i>
  • Présence voiture :
<i class="fa fa-car" style="font-size:20px;color:black;"></i>
  • Présence Wifi :
<i class="material-icons" style="font-size:20px;color:black;">signal_wifi_4_bar</i>
  • Absence Wifi :
<i class="material-icons" style="font-size:20px;color:red;">signal_wifi_off</i>

Pour les personnes ou voitures, ce sont des images que j’ai modifiées. J’ai partagé le fichier où tout est présent dans l’article du design. Vous avez la source PFI (Photofiltre pour faire vos images si nécessaire en activant ou non le masque ON/OFF).

Construisons alors nos virtuels associés, un peu lourd, mais c’est toujours pareil !

Virtuel de présence d’une personne
  • je stocke la distance du téléphone de la maison (ici elle est masquée) mais historisée,
  • je gère la présence comme étant un OU des différents indicateurs de présence (Wifi OU GPS OU Clé Maison) mais pour pouvoir forcer mon absence je fais un NON-ET (AND + !) avec l’absence forcée.
    Si tout est parti (donc tout à 0) : 0 ou 0 ou 0 ET NON(1) donnera 0 absent.
    Si un device est parti (donc au moins à 0) le “OU” permettra de garder le 1.
    Si un device est au moins présent on revient dans le cas précédent, on repasse à 1.
    De même, si le forçage est activé, il l’emporte sur n’importe quelle présence d’un device.
(#[Personnes][Benjamin][Nut Clé]# OU #[Personnes][Benjamin][Tél Geofencing]# OU #[Personnes][Benjamin][Tél Wifi]#) AND !(#[Personnes][Benjamin][Absent forcé]#)
  • l’interrupteur de forçage ON/OFF comme pour le NUT (voir plus haut) avec le ON, le OFF et l’information binaire “Absent Forcé” ;
  • la présence de ma clé de maison (présence du NUT mis en forme) ;
  • la présence de ma clé de voiture (idem) ;
  • la présence de ma clé de moto (idem) ;
  • l’interrupteur de présence dans la zone GPS maison du téléphone – celui que je pilotais plus haut (pour ceux qui ont lu ! :D) avec le ON, le OFF et l’information binaire “Tél Geofencing” ;
  • le signal des clés de voiture et de maison (que je n’affiche pas) ;
  • enfin, le dernier refresh d’activité de la personne par la variable LastChangeBenjamin.

Faites de mêmes pour les autres personnes de la maison.

Enfin, côté scénario, sur la présence d’une personne, je profite pour faire quelques actions… à vous de réfléchir sur ce que vous voulez faire.

Dans le cas de mon départ :

  • la non-répétition évite que le scénario se lance indéfiniment jusqu’à ce que l’on change d’état. Oui, on est arrivé une fois ! Idem si on est parti…
  • je loggue en scénario ce qui se passe,
  • je mets à jour la variable d’activité de la personne,
  • je rafraichis le widget de la personne,
  • ainsi que celui de la présence de la maison (voir plus bas),
  • si je m’en vais, j’attends de voir si la maison est vide (instruction wait) et cela me permet de soit dire à celui qui est à la maison (donc la maison n’est pas vide) que je suis bien parti (par TTS). Le cas contraire est géré par l’alarme – à venir dans un article !

Dans le cas de mon arrivée :

  • idem pour la non-répétition,
  • idem pour le log et la variable de mise à jour d’activité,
  • idem pour le rafraichissement des virtuels de maison et de personne,
  • si je suis arrivé il y a moins de 2 minutes, j’ouvre le portail.
StateDuration(#[Personnes][Benjamin][Présence]#) < 120 ET #[Personnes][Benjamin][Présence]# == 1
  • j’attends alors que l’alarme soit désactivée sauf si c’est déjà le cas … si l’alarme n’était pas active dans la minute de mon arrivée donc c’est qu’il y avait quelqu’un à la maison … je l’informe que je suis arrivé par TTS.
StateDuration(#[Sécurité][Contrôle Alarme][Actif]#,0) > 60 ET #[Sécurité][Contrôle Alarme][Actif]# == 0
  • dans le cas où l’alarme n’était pas mise (à défaut c’est géré par la partie alarme), je donne l’état du courrier par SMS (étant lu par la voiture).
  • le dernier SI était vrai sur une installation “lente” à base de PI2 à l’époque… jamais revu !

Déclenché sur ma présence :

#[Personnes][Benjamin][Présence]#

Long scénario pour gérer la présence d’une personne – c’est un exemple !

Scénario de présence / absence d’une personne

L’intérêt du forçage absent/présent

Suite à la remarque d’une personne en commentaire, l’intérêt du forçage qu’il soit pour des clés ou une personne et justement de pouvoir mettre en absent une personne si la situation est voulue ou non. Par exemple, si j’oublie mes clés mais que j’ai pris mon téléphone, je peux forcer depuis mon téléphone (ou madame) mon absence. Rappelez-vous, Domowidget sur Android.

Mieux, un scénario d’interaction (dans le principe du volet) va me le proposer… le voici. J’avais mis en place un scénario à coup de wait et autres qui attendait la disparition des devices et autres. Trop de faux positifs je trouve… J’ai fait le choix de quelque chose de simple. Je vérifie les jours de travail à 9h notre présence ou non…

Pour les autres cas, c’est assez simple. Si l’alarme n’est pas activée, nous ne recevons pas de message. Cela suffit à nous mettre la puce à l’oreille qu’il y a quelque chose qui cloche !

Interaction pour forçage d’absence

De même le forçage des clés permet de gérer un trousseau de clé perdu ou oublié ailleurs… vous l’aurez compris. De même, la partie suivante (cas du bluetooth seul) utilise la même recette. Ce n’est pas parce que quelqu’un de l’extérieur à un NUT qu’il peut désactiver l’alarme et entrer… tout l’intérêt du forçage…

Cas particulier du Bluetooth seul

Pour les voitures ou pour des personnes qui ne possèdent qu’un NUT sans indication de présence autre (GPS, Wifi ou autre), tout est plus simple logiquement… vous l’aurez compris !

Je conserve le virtuel de mis en forme sans créer un “virtuel de la personne” au-dessus. Par contre, je pilote les notifications et autres refreshs par un scénario qui est piloté par l’information de présence du NUT.

Je déconseille fortement l’utilisation d’un seul indicateur de présence. J’ai préféré construire la présence sur un ensemble d’indicateurs. Même si avec le recul, je dois reconnaître que j’ai un seul souci en presque 3 ans, une clé de maison jamais partie.

La présence dans la maison

Nous avons la présence des personnes… il ne reste plus qu’à savoir si la maison est vide ou non. Rien de compliqué en soi ! Une autre manière de la faire, par scénario.

Je commence par créer un interrupteur ON/OFF avec une information binaire … pas très compliqué, vous avez l’habitude !

Virtuel de présence dans la maison

Commandes de ce virtuel :

Absent, Présent et info binaire de présence

Mais pour piloter l’absence ou la présence dans la maison, j’utilise deux scénarios. Logiquement, vous devez mettre en déclencheur de ces deux scénarios toutes les informations de présence que vous avez sur les personnes (j’ai bien écrit personnes).

  • le premier scénario de présence, il suffit qu’une personne soit présente au moins. La fonction OU permet cela. Comme précédemment, la non-répétition permettra d’éviter le lancement du scénario à chaque nouvelle personne arrivée ! En action, j’active l’interrupteur sur PRESENCE.
#[Personnes][Personne 1][Présence]#  == 1 OU #[Personnes][Personne 2][Présence]# == 1 OU #[Personnes][Personne 3][Présence]#  == 1 OU #[Personnes][Personne 4][Présence]#  == 1 OU #[Personnes][Personne 5][Présence]# == 1
Scénario de présence
  • le second scénario d’absence, il faut que toutes les personnes soient parties. La fonction ET permet cela. Comme précédemment, la non-répétition permettra d’éviter le lancement du scénario à chaque personne partie ! En action, j’active l’interrupteur sur ABSENT.
Scénario d’absence

Vous avez donc l’information que votre maison est vide ou non… très pratique pour piloter une alarme par exemple.

Le widget qui m’indique si la maison est vide est celui ci (Présence) :

Présence dans la maison
  • si la maison est vide :
<i class="jeedom2-home" style="font-size:30px;color:red;"></i>
  • s’il y a du monde :
<i class="maison-family24" style="font-size:30px;color:green;"></i>

Comme pour la gestion des personnes, je gère l’absence ou la présence dans la maison sur deux scénarios qui s’activent sur le déclencheur associé :

#[Personnes][Maison][Presence]#

Si la maison est vide :

  • j’éteins les tablettes,
  • j’éteins tous les éclairages,
  • les TV ou autres (si jamais elles étaient ON),
  • je passe la maison en mode absent (voir l’article sur le chauffage et les usages),
  • je ferme le volet si jamais la fermeture est automatique en cas d’absence (hiver pluvieux ou été),
  • ou je le ferme si l’heure du coucher est dépassée (autre cas).

De même si la maison n’est plus vide :

Un des piliers de la domotique. La gestion de la présence et des personnes ! Il vous servira à automatiser des actions de présence, d’absence, votre alarme ou même vos automatismes d’accès – porte/portail/boite aux lettres. Cette version est éprouvée par 3 ans d’utilisation ! Bonne implémentation.

La conclusion

Si vous avez aimé cet article, remerciez-moi en considérant une petite donation financière par Paypal. Inutile de vous dire que pour arriver à cette gestion, j’ai passé beaucoup de temps – je ne pense pas me tromper en disant près d’un an facilement. Et je n’y touche plus car cela tourne ! C’est certainement la chose la plus appréciable et WAF que madame apprécie. Aussi, cela prend du temps de rédiger et de partager ce contenu, sans publicité ! Payez-nous un coup à boire !

Merci !

One thought on “Gestion de la présence

  1. Bonsoir et merci pour ce tuto très détaillé et bien écrit.
    Je vois que vous avez un OnePlus 7 comme moi (pro), est-il rooter ? Car le mien ne l’est pas et ne le sera jamais car dans ce cas mes applications bancaires ne fonctionnent plus. Bref est- ce lié au root ou à la nouvelle politique de Google mais toujours est-il que l’activation et désactivation de la data 3g et de la localisation ne marche pas, ni avec MacroDroid ni avec Tasker. Qu’avez-vous fait pour que cela fonctionne ?
    Merci d’avance et bonne continuation

    1. Re,
      Oui j’avais bien fait ces manipulations, aussi bien pour Tasker que pour Macrodroid.
      Dans les 2 cas, lorsque je veux activer/désactiver, les icônes Data et/ou Localisation apparaissent bien dans la barre de notifications mais rien ne marche.
      Par exemple je désactive la data via une macro Macrodroid (ou Tasker), l’icône se désactive mais j’ai toujours de la data, au contraire lorsqu’elle est coupée, je lance la macro, l’icône s’allume en bleu comme si j’avais appuyer dessus pour activer mais je n’ai pas la data, pareil pour la localisation. D’où mon étonnement que cela fonctionne chez vous sans root.
      J’avais lu je ne sais plus sur quel site, que Google interdisait, pour des raisons de sécurité, l’activation (désactivation) du GPS et de la data 3G/4G par d’autre apps que les siennes.

      PS: J’ai la dernière version d’Oxygen OS 10.0.3 et les mises à jour de sécurité faites

      1. Aucun souci pour ma part. Après, cela n’est pas génant. Vous coupez vos data/GPS habituellement ?
        Je sais que ça marche aussi pour le Wifi car je coupe le wifi pour activer le hotspot de manière automatique et surtout je le réactive quand j’arrive chez moi de manière automatique.
        Peut être tenter Tasker ?

        1. Merci de prendre le temps de tenter de m’aider.
          C’est pareil avec Tasker, les icônes se coupent (ou s’allument) mais les fonctionnalités ne fonctionnent pas.
          Oui je m’en sert (du moins j’aimerais m’en servir), lorsque je me connecte à mon Wifi, couper la data, inversement lorsque je perd mon wifi, connexion via data. Lorsque j’accroche une antenne près de chez moi, activation du GPS pour être plus précis, etc…
          En attendant, j’ai mis une alerte dans les actions et je coupe/remet manuellement.
          Pour info, il n’y a que la date et la localisation qui ne vont pas, tout le reste marche très bien, NFC, Wifi, Bluetooth, etc…

        2. Merci de prendre le temps de tenter de m’aider.
          C’est pareil avec Tasker, les icônes se coupent (ou s’allument) mais les fonctionnalités ne fonctionnent pas.
          Oui je m’en sert (du moins j’aimerais m’en servir), lorsque je me connecte à mon Wifi, couper la data, inversement lorsque je perd mon wifi, connexion via data. Lorsque j’accroche une antenne près de chez moi, activation du GPS pour être plus précis, etc…
          En attendant, j’ai mis une alerte dans les actions et je coupe/remet manuellement.
          Pour info, il n’y a que la data et la localisation qui ne vont pas, tout le reste marche très bien, NFC, Wifi, Bluetooth, etc…

          1. A mes yeux, je contacterai l’auteur de Macrodroid. J’ai déjà échangé avec lui (notamment sur la mise en place des zones GPS/Geofence) et il est réactif.
            Je viens de tester sur mon Oneplus7 ne pose pas ce souci…

      2. Bonsoir.
        Quel tuto bravo c’est super bien écrit et agréable à lire. Petit éclaircissement, Comment gérez vous le faites de partir en famille dans la même voiture?? Car par exemple madame ne prend que son portable quand on part ensemble du coup c’est le GPS et l’absence de Ping qui passerai en absence?
        Merci et bonne soirée

        1. Bonjour,

          Justement c’est tout le but du forçage de l’absence. C’est un interrupteur que j’active (depuis Domowidget) ou qu’elle active quand elle part ou qu’elle désactive quand elle revient.
          Je pensais que c’était clair sur la partie design pour les personnes, je vais mettre à jour l’article. Sur mon domowidget (voir l’article), j’ai des interrupteurs de forçage de présence/absence.
          J’ai aussi mis en place une interaction qui détecte que les clés sont restées à la maison alors que le téléphone est absent qui propose de passer en absent. Idem je vais le partager.
          Pour la peine, j’avais mis aussi l’inverse (oubli du tél de la personne et parti avec les clés, envoi de l’interaction au téléphone de l’autre) mais l’intérêt est très très limité !

          1. Yes merci effectivement j’ai survolé la partie domowidget car je suis sur iOS 🙂 merci des précisions et encore bravo. Bonne journée

          2. Lisez l’article quand même ! 😉

            “J’utilise un interrupteur d’activation du NUT. Très pratique quand des clés sont perdues, prêtées par exemple ou pour interdire l’accès à la maison à quelqu’un par exemple. La commande Nut_off ou Nut_on passe l’information Activation_Nut à 0 ou 1 (binaire).
            Cette autorisation permet grâce à l’opérateur binaire ET de valider ou non la présence du NUT. Si l’autorisation est à 0 alors quelque soit l’état du NUT, il sera vu comme absent.”

            J’ai ajouté un paragraphe sur le forçage en fin d’article pour que ce soit plus clair.

      1. C’est une opération purement logique. Un opérateur ET permet d’inhiber n’importe quel “vrai”.
        Donc si le NUT est là (1) et qu’on le désactive (0), alors il est vu par Jeedom comme un 0 (absent). D’où l’utilisation d’un virtuel de mise en forme. De même pour les personnes. La personne peut être vu présente (car son téléphone, clé ou gps est là) mais si je force son absence par le ET, elle sera vu absente.

        Je ne viens que de paraphraser ce que j’ai écrit plus haut :).

    1. Bonjour, merci.
      Si Apple coupe la carte réseau, cela signifie que le tél ne consomme que du data ?
      Bizarre, j’ai un iphone 8 et je n’ai pas ce phénomène, mais alors pas du tout.
      Pour preuve, c’est mon tél pro. Il est dans un sac depuis hier soir et je ne le réveille (il est en ligne, wifi connecté, allumé mais “en veille”.
      Et pourtant il est bien là :
      https://i.imgur.com/Kk8FXfh.png
      https://i.imgur.com/S3gFA8X.png

      D’ailleurs, j’ai un ami qui utilise la détection par ping sur Iphone et aucun souci (son alarme tourne avec le même principe que le mien car c’est moi qui ait fait la mise en place).

  2. Bonjour,
    pourrais tu nous montrer via un article la gestion de la lumière ?
    histoire d’avoir une idée avec ta gestion présence etc.. les pièces comme le salon, couloir, cuisine ou autre sont délicat a gérer en fonction du mode souhaité…
    Qu’en penses-tu ?

    Merci

    1. Désolé, je n’ai pas ce type de fonction chez moi. Malheureusement c’est un peu la limite d’une maison qui a déjà plus de 10 ans.
      Il faudrait supprimer tous les interrupteurs et passer par des détections de mouvement et gestion luminosité/horaire.

  3. Bonjour,

    Toujours aussi bon de vous lire.

    Petite question bête, quel intérêt de passer par un scénario pour gérer la présence/absence d’occupant dans la maison ? La récupération des statuts directement dans un virtuel vous posait soucis ?

    Autrement, connaissez vous des solutions moins consommatrices de piles que les nuts et autres tag bluetooth à pile ?
    Les seuls solutions (rechargeables ou alimentées par l’auto) que j’ai aperçu son soit hors de prix, soit en DIY et de fait pas très portable.

    Merci,

    1. Bonjour,

      Merci ! Oui, le scénario explique quelques ratés par implémentation directe par virtuel. J’ai préféré. Plus pratique de suivre en log, aucun changement notable (lenteur ou autre).
      Par contre, clairement, en V3 sur 2 ans, j’ai eu des loupés (mais c’était il y a bien longtemps)… libre à vous de choisir l’implémentation soit en virtuel, soit en scénario.

      Enfin pour les NUTs, clairement, mon expérience. La consommation de piles … ce ne sont pas les nuts (sauf si vous avez des mini). En 2 ou 3, clairement, avec de bonnes piles (j’insiste sur bonnes), c’est 6 mois de durée de vie à minima. Toutes les expériences où j’ai eue 1, 3 mois c’était que les piles n’étaient pas à 100%. J’ai mis du temps à le comprendre, car même en achetant des varta ou autres sur Amazon, soit ce sont des copies, soit les conditions de stockage ou l’ancienneté les avait vidées. Astuce, mettez les dans un capteur Xiaomi (si vous avez) pour avoir le niveau de batterie.

      De rien !

  4. Bonjour,
    Tres beau travail ! Je m’interroge sur votre méthode pour afficher plusieurs commandes ON/OFF dans le meme virtuel, s’agit-il d’un widget slider on/off custom ? car on et off code end dur dans le widget et impossible d;’avoir plusieurs commande avec meme nom dans un virtuel . Par exemple pour le tableau de gestion des clefs ( avec les nuts) , est-ce gerer dans un seul virtuel ?
    Merci

    1. Bonjour,

      Il n’y a aucun problème à afficher plusieurs commandes dans un même tableau, que ce soit la commande ON ou la OFF. Il faut juste avoir des noms différents.
      C’est un tableau qui est un virtuel qui lui même appelle plusieurs commandes et informations positionnées dans des cellules (voir positionnement tableau).

      Quelques copies d’écran :
      – le premier tableau qui est un virtuel
      https://i.imgur.com/emyHZNQ.png
      – la vue arrière avec tous les ON/OFF différents (on voit bien plusieurs ON, OFF)
      https://i.imgur.com/ZFJsQxA.png

      Bon confinement !

  5. Bonjour, merci pour cette article une de fois plus très intéressant.
    J’ai créé un virtuel pour la gestion des présences, je n’arrive pas à afficher l’info: “présent depuis le jour ** mois heure”
    j’utilise cette valeur:
    lastChangeStateDuration(#[Maison][Présence Julien][a la maison julien]#, 1)
    Mais l’affichage est en secondes seulement, j’ai vu que vous utilisez une variable pour la fonction lastChangeStateDuration pouvez m’en dire plus?

    Merci

    1. Bonjour,
      Regardez bien l’article. J’utilise une variable que je positionne par le scénario de présence ou absence. Absent depuis le #date#… Ou présent depuis le. Je ne fais pas ce que vous faites. Si vous utilisez un lastbetween c’est à vous de faire la mise en forme.

Laisser un commentaire

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