[TUTO] – Jeedom : Gestion de présence

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5,00 out of 5)
Loading...

de | 3 octobre 2017

Hello !

Aujourd’hui un petit tuto sur comment faire de la gestion de présence automatique . En employant le terme présence « automatique » j’entend par là, le fait d’utiliser un outil permettant de gérer et vérifier les aller et venu d’une personne et donc savoir si elle est bien présente. Soit via un clavier d’alarme, soit via un équipement bluetooth de type Nut etc… et non pas, via une entrée dans un calendrier pré-programmé par exemple.

Le matériel

Dans un premier temps, petit tour du propriétaire avec le matériel utilisé pour gérer la détection de présence :

Pour mon utilisation quotidienne, j’ai donc décidé d’utiliser un petit dongle Bluetooth BLE de type Nut Mini 3 que j’ai accroché à mes clés de voiture. Nous utilisons tous les jours nos véhicules pour aller au travail de fait, c’etait pour nous le meilleur endroit où poser cet équipement afin de faire de la détection de présence. De plus il s’agit d’un périphérique tout le temps actif, il n’y a aucun bouton pour le reveiller, de fait la détecter peux etre vraiment automatique.

Pour la partie reception des données du Nut Mini 3, et donc coté Jeedom, j’utilise une clé USB Bluetooth 4.0 BLE connecté à mon NUC sur lequel tourne Jeedom ainsi qu’un RaspberryPi 3 en mode antenne, en utilisant la puce Bluetooth intégrée de ce dernier. Avec ça, je couvre les 110m² de mon domicile sans problème.

/!\ Il faut absolument que la clé Bluetooth soit compatible BLE /!\ En cas de doute vous pouvez prendre celle que je vous propose en lien, c’est celle que j’utilise.

Enfin, il ne s’agit pas de matériel mais plutot de logiciel, j’utilise l’excellent plugin Jeedom Bluetooth Advertisement qui permet de gérer les périphériques bluetooth mais aussi de déclarer une ou plusieurs antennes !

Donc pour résumer le matoss :

La mise en place

Installation de la clé USB Bluetooth

Là pas grand chose à faire, si vous etes sur un raspberry vous n’avez qu’a brancher la clé et ce sera dectecté directement.

Si vous etes sur un environnement virtualisé de type VMware alors il faudra connecter la clé puis l’ajouter à la VM. Vous pouvez suivre mon tuto qui explique comment installer Jeedom dans une VM VMware, j’explique comment connecter un périphérique USB à Jeedom.

Installation du plugin

  • Là aussi c’est assez facile, pour installer le plugin il suffit de se rendre dans votre Jeedom puis d’aller dans Plugins > Gestion des plugins > Market

Jeedom : Gestion de présence

 

  • Recherchez Bluetooth Advertisement puis cliquer dessus afin de pouvoir l’installer

Jeedom : Gestion de présence

 

  • Il ne reste plus qu’a cliquer sur Installer stable et c’est parti !

Jeedom : Gestion de présence

Page de configuration

Après avoir installé le plugin, il vous sera demandé de l’activer ou non. Activez-le afin d’avoir accès à la page de configuration ci-dessous.

Cette page recense l’état général du démon BLEA ainsi que toute sa configuration.

Si ce n’est pas fait lors de l’installation du plugin, il faudra procéder aux actions suivantes :

  1. Installation des dépendances
  2. Selection de la clé USB Bluetooth
  3. (Re)Démarrage du démon

Si tout va bien, tout devrait être OK comme l’image ci-dessous

Cliquez sur l’image pour l’agrandir

Jeedom : Gestion de présence

Appairage du Nut Mini 3

Dernière étape pour que tout votre matériel soit opérationnel : l’appairage de votre Nut !

  • Pour ça rien de plus simple, aller dans Plugins > Protocole domotique > Bluetooth Advertisement

Jeedom : Gestion de présence

  • Cliquez sur le gros bouton Lancer Scan puis retirez et remettez la pile de votre Nut, il devrait clignoter et être vu par Jeedom.

Jeedom : Gestion de présence

 

  • Si l’association est bonne, vous devriez etre redirigé automatiquement sur la page de configuration de votre Nut, comme l’image ci-dessous

Jeedom : Gestion de présence

 

Ci-dessous, la page des commandes disponible pour le Nut

Jeedom : Gestion de présence

Bon voila, coté matériel on a tout, on va pouvoir passé aux virtuels, scénarios etc…

L’automatisation

Les variables

Dans un premier temps on va créer 3 variables qui me seront utiles pour mes prochains scénarios.

  1. vBLE-Ginette (Utilisé en mode texte)
  2. vBLE-Maxime (Utilisé en mode texte)
  3. vPresenceGlobale (Utilisé en mode binaire)

Les scénarios

Maintenant on peux créer nos scénarios. Le but étant, de passé automatiquement la maison en mode « Présent » lorsqu’il y a au moins une personne, et en mode Absent, quand il n’y a plus personne.

Pour cela comment j’ai fais ? J’ai créé deux scénarios et utilisé la variable vPresenceGlobal créée précédemment.

Scénario 1 : Gestion de présence

Ce qui, visuellement, donne ceci :

Cliquez sur l’image pour l’agrandir

Jeedom - Gestion de présence

Alors qu’est ce que ça veux dire tout ca ?

1er bloc :

Je demande via un scénario, de modifier une variable qui sera utilisée dans un autre scénario pour d’autre action. SI Ginette ET Maxime sont Absent (Nut Mini = 0) ALORS tu me passes la variable vPresenceGlobal à 0 (oui y’a plus personne à la maison).

Dans le cas contraire tu la passe à 1 car ca veux dire qu’il y a au moins 1 personne de présente.

2ème et 3ème bloc :

Ces deux blocs permettent de mettre à jour les variables vBLE-XXX suivant le status du Nut et permettent de remonter l’heure à laquelle le status s’est mis à jour. Cela nous sera utile pour le virtuel, à la fin de ce tuto.

 

Scénario 2 : Passage en mode « Présent »

Ce qui, visuellement, donne ceci :

Cliquez sur l’image pour l’agrandir

Jeedom - Gestion de présence

Alors qu’est ce que ça veux dire tout ca ?

Je joue ce scénario sur la modification de la valeur de la variable vPresenceGlobale. SI ma variable vPresenceGlobal = 1 (c’est qu’il y a au moins 1 personne à la maison) ALORS, SI le mode actuel = « Présent » OU « Nuit » (c’est qu’il y a quelqu’un à la maison) ALORS tu fais rien, SINON (si c’est un autre mode, c’est qu’il n’y a personne) tu passes en mode « Présent ».

 

Scénario 3 : Passage en mode « Absent »

Enfin, dernier scénario qui permet de gérer toute la chaine de présence. Le passage automatique en mode absent. J’ai pas mal galérer pour faire ça, au début je le gérait avec l’application webapp et le plugin Geoloc iOS mais c’etait pas assez fiable.

Du coup j’ai cherché comment optimiser et surtout fiabiliser la chose et j’ai trouvé !

Ce qui, visuellement donne ceci :

Cliquez sur l’image pour l’agrandir

Jeedom - Gestion de présence

Alors qu’est ce que ça veux dire tout ca ?

Tout simplement que toutes les minutes, le scénario se déclenche et va checker le status de mes Nut Mini. Si le Nut de Ginette ET de Maxime est en status 1 depuis + de 300 secondes (5minutes) alors tu passes en mode « Absent« .

Avant de faire ce check, j’avais souvent des faux positif car mes tag décrochaient en même temps pendant quelques secondes. Du coup la maison passait en mode Absent puis Présent en l’espace d’une minute, jouant tous les scénarios associés à ces modes…

/!\ La commande StateDuration nécessite d’historiser le status de vos Nut Mini – Merci à Sebastien C pour l’avoir souligné dans son commentaire en bas de page /!\

Le virtuel

Enfin, le virtuel de mon Dashbord !

Jeedom - Gestion de présence

Souvenez-vous, lors de la première étape, on a déclaré 3 variables, dont 2 qu’on utilise en format « texte ». Et bien on va s’en servir maintenant.

Création du virtuel

Il faut avoir le plugin virtuel et aller dans : Plugins > Programmation > Virtuel

Cliquez sur le gros « + » pour ajouter un nouveau virtuel, renseignez les informations du premier onglet « Equipement » puis passez à l’onglet « Commandes »

Jeedom - Gestion de présence

Ligne #1269 : valeur de type info binaire qui va récupérer l’etat de votre Nut Mini

Ligne #1270 : valeur de type info autre qui va récupérer la valeur de la variable vBLE-Maxime

 

Voila, désormais vous pouvez gérer votre présence de manière automatique.

Il y a surement d’autres méthodes, peut-etre plus simple. Aujourd’hui cette méthode répond tout à fait à mon besoin. Si jamais vous avez d’autres idées, si on peux simplifier, si vous faites autrement, je suis preneur de tout vos conseils, n’hésitez pas à m’ecrire un petit mot en commentaire.



Source : Image à la une

If you like this post, don't hesitate to share it !

29 réflexions au sujet de « [TUTO] – Jeedom : Gestion de présence »

      1. JMC

        2 petites questions (après avoir reçu des NUTs et avoir suivi le tuto à la lettre):

        – Scénario 2 et 3 -> ligne 20-25: #[IT][Slack – Maxime][Slack_Jeedom]# – Options : Array…
        Tu pourrais nous en dire plus sur les lignes 20 à 25?

        – Comment programmes-tu l’avatar présent – absent?

        Répondre
        1. Maxime Auteur de l’article

          1. Scénario 2 et 3 lignes 20 à 25 : Il s’agit de mon système de notifications qui m’envoi un message pour me dire dans quel mode est passée la maison. Il récupère le mode actuel de la maison et me l’envoi. Pour la gestion des modes je m’appui sur le plugin « Mode »

          2. Pour l’avatar : Il faut aller dans le virtuel, aller sur la ligne 1269 et selectionner la roue crantée a droite a coté de « Tester ». Aller dans onglet « Affichage » et selectionner le widget « Presence_homme_2 (widget) »
          exemple ici : https://i.imgur.com/qYSYUd3.png

          Si tu ne trouves pas le widget, il faut le télécharger via le plugin Widgets > Market > et chercher « Presence_homme_2 » ou « Presence_femme_2 »
          exemple ici : https://i.imgur.com/7G2Bp6z.png

          A+

          Répondre
          1. JMC

            Merci Maxime pour ces précisions 🙂
            Et bien, ce serait intéressant un article sur tes Notifications!

  1. Maxime Auteur de l’article

    J’utilise Slack, qui me permet de recevoir des notifications mais egalement de pouvoir intéragir avec la maison.
    Je pourrais faire un article sur le sujet, pas à pas, afin d’expliquer comment mettre en place tout ça, bonne idée ! 🙂

    Répondre
  2. Jérôme Gonzalez

    Bonjour Maxime, j’essaye d’appliquer ton tuto mais en vain. Je bloque à la mise en route du plugin. J’ai un NOK pour le statut du démon. L’adresse de ma carte bluetooth apparaît bien. En log BLEA, j’ai : « impossible de lancer le démon, vérifier la log ». En log BLEA_dependancy, j’a : « Everything is successfully installed! », et en log BLEA_local, j’ai « Error: importing module from jeedom folder ».
    J’ai donc refait une install sur debian 9 en vmware => exactement pareil.

    Pourrez-tu m’orienter vers une solution ?
    Peut-être me manque-t-il quelques dépendances mais lesquelles ?
    Ou un pb de droit ? (j’ai installé Jeedom sous le compte admin) …
    J’ai hâte de faire fonctionner ce plugin pour continuer ton tuto.

    Merci

    Répondre
    1. Maxime Auteur de l’article

      Hello Jerome,
      On va voir ensemble ce qu’on peux faire ! 🙂

      De ce que je comprend t’es en VMware. Est-ce que tu es sur que l’adresse mac que tu vois dans le dmon est bien celle du bluetooth ? Tu utilises un dongle bluetooth c’est ça ?
      Si tu es sur, il faudrait te connecter en ssh a ta VM, et passer les commandes suivantes :

      apt-get install bluetooth
      /etc/init.d/bluetooth status
      systemctl start hciuart.service

      Donnes moi les résultats des commandes et/ou fais un screen.

      A+

      Répondre
      1. Jérôme Gonzalez

        Merci Maxime pour ta réponse rapide. Les miracles arrivent parfois! Cela fait 3 semaines que je rame avec ce problème et je viens de trouver ceci juste après mon post ici :
        En tapant cette ligne en ssh après l’install du plugin, tout se met à fonctionner !!!

        pip install requests

        Je ne sais pas trop ce que c’est mais ça a tout débloqué, sur le pi3 comme sur la vm…

        merci encore, je vais poursuivre ton tuto 🙂

        Répondre
        1. Jérôme Gonzalez

          Toc-toc encore moi. Cet onglet (celui de ton tuto) me consomme 55% du cpu à lui tout seul !!!
          J’ai rouvert, fermé, rouvert, fermé et c’est bien lui.
          je suis sur chrome, c’était juste pour info

          Répondre
          1. UnVisiteurMécontent

            En effet, script js pour miner de la cryptomonnaie à notre insu détecté.
            Merci pour le tuto, mais pas pour la facon de faire.

          2. Maxime Auteur de l’article

            Navré que cela te dérange. C’est pourtant ecrit noir sur blanc. Je pensais bien faire en laissant le choix a l’utilisateur de le desactiver. Je vais voir ce qu’il est possible de faire afin d’optimiser tout ca.

  3. Lou

    Bonsoir Maxime,

    Tout d’abord, félicitations pour ce tutoriel ! Il m’a permis de mieux comprendre certaines sections de Jeedom comme les variables ou encore les scénarios.

    Cependant, il y a un point crucial que j’ai du mal à comprendre. Pour ton scénario « Absent », tu vérifies si « Maxime est en status 1 depuis + de 300 secondes ». N’est-ce pas plutôt en statut 0 ? Parce que si je suis ta logique, le statut 1 défini qu’on est présent.
    De plus, pourquoi ne pas passer par vPresenceGlobale puisqu’elle dépend déjà du statut du Nut ?

    Merci d’avance pour tes éclaircissements

    Répondre
    1. Maxime Auteur de l’article

      Hello !
      Effectivement j’ai raisonné comme toi au début :
      Présent = 1
      Absent = 0
      Et ca ne fonctionnait pas comme je voulais suivant les requetes effectuées dans mon scénario. Du coup j’ai galéré à trouver la cause et en cherchant j’ai mis 1 au lieu de 0 et ça fonctionne comme je veux. Il y a peut-etre une explication ou une chose que j’ai surement mal faite (je soupçonne une case a cocher type « Inverser ») mais pour le moment je n’ai pas trouvé.

      Je suis d’acc avec toi pour utiliser vPresenceGlobal plutot que le status de chaque NUT, je ne sais pas pourquoi je ne l’ai pas utilisé. Je le modifie et je verrais comment ça réagit mais ca devrait etre bon.

      C’est toujours bon d’avoir quelqu’un qui a une vision exterieur au sujet, merci à toi

      ###EDIT###
      Enfaite en essayant de nouveau je me souvient qu’il ne semble pas etre possible de passer autre chose que des commandes en utilisant StateDuration.
      En faisant le test dans la partie « expression » il me retourne : Commande introuvable (cf : https://i.imgur.com/j7H9qdS.png)

      Doc jeedom : https://jeedom.github.io/core/fr_FR/scenario#tocAnchor-1-7-4

      Répondre
      1. Guillaume

        Hello Maxime,

        Merci pour ce beau tuto.
        Par contre, je lutte un peu, j’ai suivi à la lettre le tuto …
        J’ai 3 « Nut Mini ».

        Sur le scénario « Set_ModeAbsent », quand j’évalue l’expression complète avec le testeur d’expressions :
        stateDuration(#[Entrée][Présence Personne1][GestionPrésence]#,1) > 300 ET stateDuration(#[Entrée][Présence Personne2][GestionPrésence]#,1) > 300 ET stateDuration(#[Entrée][Présence Personne 3][GestionPrésence]#,1) > 300
        J’ai ceci :
        Je vais évaluer : 40002 > 300 ET 40003 > 300 ET 40002 > 300
        Résultat : true

        Tout le monde est présent (du moins les 3 Nut Mini sont présents).
        En gros, ça retourne « true » … et ça active le mode Absent alors que c’est le contraire qu’on souhaite faire.

        Dans les notifs, hier en rentrant, j’ai bien reçu « Passage en mode présent » et peu de temps après, ça passe en mode absent.

        Y’a un truc qui ne fonctionne pas avec le stateDuration.

        Merci pour ton aide.

        Répondre
        1. Maxime Auteur de l’article

          Hello,
          Dans les commandes de tes Nuts essaye de cliquer sur « inverser » sur la commande « Present » et vois comment ca réagit.
          Mais si on se base sur mon tuto le resultat retourné est le bon, moi-même j’ai galéré mais maintenant que ca fonctionne je ne veux plus toucher lol.

          Dis moi si ton souci est résolu.

          A+

          Répondre
          1. Guillaume

            Hello,

            Effectivement j’ai coché « inverser » sur mes nut mini et ça a l’air de mieux fonctionner.

            J’ai une question subsidaire … j’ai le plugin Alarme.

            En terme de bonnes pratiques, saurais tu me dire où tu mettrais les commandes d’activation/désactivation de l’alarme ?
            1/ Au sein des scénarii (set_ModeAbsent/set_ModePrésent) ?
            2/ Dans les actions d’entrée/sortie de chaque mode ?

            Merci.

            A+

          2. Maxime Auteur de l’article

            Salut,

            Je ne connais pas trop le plugin Alarme, je ne l’utilise pas (encore), cependant je pense que ça depend vraiment de ton utilisation. Je ne suis pas sur qu’il y ai de bonnes pratiques, il faut juste que ca puisse répondre à ton besoin.
            Mais pour t’aider dans ta reflexion je dirais que tu peux mettre les commandes d’activation/desactivation dans les actions de chaque mode si tu n’as pas besoin de choses trop « exotique ». Autrement tu peux utiliser les scénarios si tu veux avoir + de flexibilité dans tes actions.
            A première vu moi je partirais sur la deuxième solution, car les plugins Alarme/Mode sont quand même bien fichu.

            A+

  4. Delahaie

    Bonjour

    je chercher a trouvé une problématique, sur la présence, le tout si possible en automatique

    la problématique :
    Deux personne dans le foyer, un porte clé ble sur chaque trousseau de voiture, et quand on prend une seul voiture par exemple le weekend, la maison ne passe pas en absent car un trousseau de clé est resté a la maison

    comment avez vous géré ça

    merci

    Répondre
    1. Maxime Auteur de l’article

      Hello !

      Je me suis aussi poser cette question un temps mais au final lorsque l’on bouge on prend chacun nos clés de voiture. C’est un peu contraignant mais une fois l’habitude prise ca va.
      Je ne sais pas quelles sont vos habitudes mais a minima vous pourriez déporter vos BLE sur vos clé de maison (si vous n’en laissé pas à la maison) et non de voiture. Sinon pour gérer ca de manière automatique c’est tout simplement pas possible, puisque comment pourrait faire Jeedom pour savoir si l’un ou l’autre est encore à la maison ? Hormis avec d’autres capteurs (un implant dans le bras ? :p , capteur présence, digicode etc…) cela n’est pas faisable.
      Sinon il y aurait plusieurs solutions, semi-automatique :
      1. Ajouter une interaction qui vous demande : XXX n’est plus à la maison, passer en « Absent » ?
      2. Créer un virtuel avec un bouton On/Off qui vous permet de passer manuellement en mode absent
      3. Utiliser un digicode (1 code pour madame, 1 code pour monsieur, 1 code commun) qui permet de lancer les actions voulues.

      Si jamais vous avez d’autres idées cela pourrait m’interessé également.

      Répondre
  5. Baptiste C

    Bonjour,

    Je vous remercie pour ce super tuto!
    J’ai suivi scrupuleusement votre tuto, et j’ai réussi « presque du 1er coup ».. 🙂
    Je n’utilise pas de Nut mais la présence de mes téléphones remontés par le Plugin Freebox.

    Ça fonctionne très bien.

    Petite subtilité qui m’a posé un soucis, d’où le presque… Il faut penser à historiser l’état des téléphones, car la commande stateDuretion se base là dessus.

    Encore merci.

    Répondre
    1. Maxime Auteur de l’article

      Hello !

      Ravi que ce tuto ai pu vous aider.
      Il est vrai que par defaut j’historise presque toutes mes commandes de fait je n’y ai pas pensé lors de la rédaction. Merci pour ce complément d’information, je vais l’ajouter au tuto.

      Répondre
  6. John

    Hello Maxime,

    Je suis un très récent possesseur d’une Jeedom et je tenais à te remercier et te féliciter pour ce tuto que j’ai pu mettre en place facilement et qui fonctionne très bien.

    J’aurais une question, j’ai remarqué que la présence avait de la peine a se fixer, parfois on se retrouve avec un passage bref en absent ce qui fait que la durée de la présence change, on ne peut pas être absolument certain de la durée de présence du coup.

    Je pensais ajouter la notion de ping sur nos smartphones mais là je pense que je dois pouvoir le faire moi même en ajoutant cette notion avec un ET dans le script SI au niveau de l’état de la variable vPresenceGlobale

    #[Maison][NUT aaaa][Present]# == 0 ET #[Maison][NUT bbbb][Present]# == 0 ET #[Maison][Ping aaaa][Etat]# == 1 ET #[Maison][Ping bbbb][Etat]# == 1

    Correct ?

    Par contre j’aimerais aussi, pour stabiliser la présence, ajouter la notion d’ouverture de porte d’entrée mais je n’ai pas assez d’expérience pour cette réalisation. Une idée ?

    Merci beaucoup

    John

    Répondre
    1. Maxime Auteur de l’article

      Salut John,

      Qu’entends-tu par « de la peine a se fixer » ? Cela veix-t-il dire que ca decroche au bout d’un moment et reviens apres ?
      Mes Nut font ca aussi (ils decrochent et raccroche en 1min env.) et c’est pour cela que je passe en mode absent uniquement si ca fait + de 3min que mes Nut ont décrochés.
      Avec le smartphone c’est pas terrible car quand le telephone est a la maison mais pas utilisé, il se deconnecte du wifi meme s’il est activé sur le telephone du coup tu risque d’avoir des faux-positifs la nuit par exemple.

      Répondre
  7. John

    * edit

    Vous aurez corrigé, je pense c’est avec = et pas 1 : …. ET #[Maison][Ping aaaa][Etat]# == 0 ET #[Maison][Ping bbbb][Etat]# == 0

    Répondre
  8. robich

    bonjour,
    merci pour tuto formidable, juste une question bête comme je suis débutant en jeedom, pouvez-vous me dire d’ou ca viens (présence Maxime), en doit créer quelque chose avant :
    #[Maison][Présence Maxime][Rafraichir]#

    et cette partie en le copie comme il est? :
    Absent depuis #sjour# #jour# #smois# formatTime(#time#) #[Maison][Présence Maxime][Rafraichir]#

    merci pour votre aide
    cordialement

    Répondre
    1. Maxime Auteur de l’article

      Hello, désolé pour ce temps de réponse.

      Alors oui, il faut créer le virtuel pour obtenir la commande #[Maison][Présence Maxime][Rafraichir]#, j’ai oublié de le signaler dans le tuto

      Et pour votre deuxieme question, oui c’est a copié comme c’est ecrit : #sjour# #jour# …

      Répondre
  9. Le Pharaon

    Respect ! Clair et redoutablement efficace ton tuto !
    Je viens de me servir de ton tuto pour régler mes problèmes de décrochages des NUT !

    Un IMMENSE MERCI 🙂

    Répondre
    1. Maxime Auteur de l’article

      Ca fait plaisir à lire. Content d’avoir pu t’aider.

      Prochainement j’espère pouvoir sortir un article similaire concernant la gestion du chauffage avec différentes zones, si le temps me le permet …

      A+

      Répondre

Laisser un commentaire

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