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 :
- Nut Mini 3 = 9€ l’unité
- Clé USB Bluetooth 4.0 BLE = 9€
- Plugin Bluetooth Advertisement = Gratuit
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
- Recherchez Bluetooth Advertisement puis cliquer dessus afin de pouvoir l’installer
- Il ne reste plus qu’a cliquer sur Installer stable et c’est parti !
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 :
- Installation des dépendances
- Selection de la clé USB Bluetooth
- (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
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
- Cliquez sur le gros bouton Lancer Scan puis retirez et remettez la pile de votre Nut, il devrait clignoter et être vu par Jeedom.
- Si l’association est bonne, vous devriez etre redirigé automatiquement sur la page de configuration de votre Nut, comme l’image ci-dessous
Ci-dessous, la page des commandes disponible pour le Nut
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.
- vBLE-Ginette (Utilisé en mode texte)
- vBLE-Maxime (Utilisé en mode texte)
- 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
- Nom du scénario : Présence - Objet parent : Maison - Mode du scénario : provoke - Evènement : #[Maison][BLE-Ginette][Present]# - Evènement : #[Maison][BLE-Maxime][Present]# SI #[Maison][BLE-Ginette][Present]# == 0 ET #[Maison][BLE-Maxime][Present]# == 0 ALORS (variable) Affectation de la variable : vPresenceGlobale à 0 SINON (variable) Affectation de la variable : vPresenceGlobale à 1 SI #[Maison][BLE-Ginette][Present]# == 0 ALORS (variable) Affectation de la variable : vBLE-Ginette à Absent depuis #sjour# #jour# #smois# formatTime(#time#) #[Maison][Présence Ginette][Rafraichir]# - Options : Array ( [enable] => 1 ) SINON (variable) Affectation de la variable : vBLE-Ginette à Présent depuis #sjour# #jour# #smois# formatTime(#time#) #[Maison][Présence Ginette][Rafraichir]# - Options : Array ( [enable] => 1 ) SI #[Maison][BLE-Maxime][Present]# == 0 ALORS (variable) Affectation de la variable : vBLE-Maxime à Absent depuis #sjour# #jour# #smois# formatTime(#time#) #[Maison][Présence Maxime][Rafraichir]# - Options : Array ( [enable] => 1 ) SINON (variable) Affectation de la variable : vBLE-Maxime à Présent depuis #sjour# #jour# #smois# formatTime(#time#) #[Maison][Présence Maxime][Rafraichir]# - Options : Array ( [enable] => 1 ) |
Ce qui, visuellement, donne ceci :
Cliquez sur l’image pour l’agrandir
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 »
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
- Nom du scénario : Set_ModePrésent - Objet parent : Maison - Mode du scénario : provoke - Evènement : #variable(vPresenceGlobale)# SI variable(vPresenceGlobale) == 1 ALORS SI #[Maison][Mode][Mode]# == "Présent" OU #[Maison][Mode][Mode]# == "Nuit" ALORS SINON #[Maison][Mode][Présent]# - Options : Array ( [enable] => 1 ) #[IT][Slack - Maxime][Slack_Jeedom]# - Options : Array ( [enable] => 1 [title] => [message] => Passage en mode '#[Maison][Mode][Mode]#' ) SINON |
Ce qui, visuellement, donne ceci :
Cliquez sur l’image pour l’agrandir
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é !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
- Nom du scénario : Set_ModeAbsent - Objet parent : Maison - Mode du scénario : schedule - Programmation : * * * * * SI stateDuration(#[Maison][Présence Ginette][Présence]#,1) > 300 ET stateDuration(#[Maison][Présence Maxime][Présence]#,1) > 300 ALORS #[Maison][Mode][Absent]# - Options : Array ( [enable] => 1 ) #[IT][Slack - Maxime][Slack_Jeedom]# - Options : Array ( [enable] => 1 [title] => [message] => BLE - Passage en mode '#[Maison][Mode][Mode]#' ) SINON |
Ce qui, visuellement donne ceci :
Cliquez sur l’image pour l’agrandir
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 !
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 »
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
Hello ! Maxime, fondateur et auteur indépendant de vDays.net. Je travaille dans l’IT depuis 6 ans, après avoir fait 5 ans d’apprentissages. Via ce blog, j’aimerais partager et échanger avec vous sur les nouvelles technologies, notamment sur la virtualisation et VMware. Si vous voulez en savoir plus sur moi, consultez ma page « à propos de moi » ou suivez-moi sur Twitter et LinkedIn.
Juste un mot: GÉNIAL! Merci bcp pour ce tuto 🙂
Avec plaisir ! Si ca peux aider 🙂
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?
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+
Merci Maxime pour ces précisions 🙂
Et bien, ce serait intéressant un article sur tes Notifications!
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 ! 🙂
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
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+
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 🙂
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
En effet, script js pour miner de la cryptomonnaie à notre insu détecté.
Merci pour le tuto, mais pas pour la facon de faire.
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.
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
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
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.
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+
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+
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+
Hello,
Merci pour le tutoriel. Ca fonctionne correctement.
L’histoire du stateDuration avec 1 au lieu de 0 c’est parce que je suppose que Jeedom considère la condition DEPUIS la dernière fois où elle était à 1, donc présent. Comme le statut passe à 0 il est différent de 1 et si ça fait plus de 300 secondes ça active absent.
En gros si on met stateDuration avec 1 c’est la dernière fois ou le statut était à 1 et si on met à 0 l’inverse. D’ou le fait de garder le 1.
Hello,
Merci pour le tutoriel.
L’histoire du stateDuration avec 1 au lieu de 0 c’est parce que je suppose que Jeedom considère la condition DEPUIS la dernière fois où elle était à 1, donc présent. Comme le statut passe à 0 il est différent de 1 et si ça fait plus de 300 secondes ça active absent.
En gros si on met stateDuration avec 1 c’est la dernière fois ou le statut était à 1 et si on met à 0 l’inverse. D’ou le fait de garder le 1.
Bon par contre j’avais le même souci des 5 minutes qui passe automatiquement en mode absent. Même en inversant ca ne fonctionne pas. Du coup j’ai rajouté de la variable un peu partout :
Dans le scénario « global » Présence :
Dans le SI du 2ème bloc j’ai mis ceci #[Maison][NUT Seb][Present]# == 0 ET stateDuration(#[Maison][NUT Seb][Present]#,1) > 60. Cela permet le décrochage du NUT de temps en temps. Pour le 3ème bloc idem avec le NUT de madame.
Dans le scénario Set_ModeAbsent j’ai utilisé la variable que l’on définit au début vPresenceGlobale pour éviter les faux positifs et ça semble être bon. J’ai donc mis dans le SI :
variable(vPresenceGlobale) == 0 ET stateDuration(#[Maison][NUT Seb][Present]#,1) > 300 ET stateDuration(#[Maison][NUT Pavi][Present]#,1) > 300
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
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.
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.
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.
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
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.
* edit
Vous aurez corrigé, je pense c’est avec = et pas 1 : …. ET #[Maison][Ping aaaa][Etat]# == 0 ET #[Maison][Ping bbbb][Etat]# == 0
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
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# …
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 🙂
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+
Bonjour , Super Tuto comme D’habitude
Cependant j’ai un petit soucis que je ne comprend vraiment pas .Comme je n’ai plus de pile dans mon nut je fais pour l’instant avec mon Tel. Admettons que le statut de mon tel soit « Present » , quand je teste l’expression :
stateDuration(#[Appartement][Galaxy S7][Statut]#,1) , il m’affiche 1262>300 donc ok
mais quand je teste : (#[Appartement][Galaxy S7][Statut]#,0) , il m’affiche 1275>300 du coup
mon scenario et toujours en mode absent
Aurait tu une idée d’ou cela pourrait venir stp ?
Hello, merci pour ton commentaire.
Dans un premier temps as-tu bien historisé les valeurs du status de ton téléphone ?
Essaye aussi d’inverser le sens de supériorité « < ". Regarde aussi dans les commandes de ton device galaxy s7 que la case "inverser" soit identique a ton NUT (cochée ou décochée, ça dépend des gens)
Tiens moi au courant,
A+
Bonjour,
Bon j’ai vraiment tout essayé et rien a faire c’est toujours pareil. j’ai meme essayé sur le statut d’un virtuel
et c’est toujours pareil ! On est bien d’accord que quand mon tel est présent ,l’expression
stateDuration(#[Appartement][Galaxy S7][Statut]#,0) , dois me retourner -1 ? alors que moi il me retourne par exemple 600 . Je doit avoir un problème avec ma commande stateDuration
Du coup je me répond tout seul , ca peut aider d’autre personnes qui comme moi ce casse la tête sur ce scenario qui n’est en fait pas fonctionnel en l’état. En effet la fonction stateDuration ne prend qu’un seul argument (cf:forum jeedom et la doc :: https://jeedom.github.io/core/fr_FR/sce … chor-1-7-4) du coup ca veut dire qu’on ne peut pas mettre 0 ou 1 après une commande (ex :stateDuration(#[Appartement][Galaxy S7][Statut]#,0).Pour ce faire il faut utiliser la fonction lastStateDuration qui elle permet de prendre en charge commande et valeur .
Salut Dubarry,
Je te remercie pur ton retour. C’est tout de même etrange car ça fonctionne très bien chez moi, cependant je me rappel avoir eu quelques galères au moment de la mise en place. Peut-etre que la commande a évolulée depuis je ne sais pas. Pour info je suis actuellement en version 3.1.7 et tout est OK.
Je vais revoir ce scénario chez moi et adapter le tuto le cas échéant.
salut, merci pour ce tuto est ce que tu utilises encore se senario ?
moi j’ai un soucis j’utilise mon smartphone pour la présence en wifi et avec la commande :
stateDuration(#[Maison][Presence Nico][Présence]# ,1) > 300
Si le wifi est allumer ou éteins l’alarme s’active au bous de 5 minutes.
As tu une idées ? merci
Salut. Oui toujours, est-ce que ton téléphone ne couperais pas le wifi par hasrd au bout de quelques minutes de veille ?
Elle s’active toujours au bout du même moment ?
Bonjour Maxime,
Très beau tuto mais cependant je bloque au moment de la création des 3 variables vBLE-Ginette (Utilisé en mode texte), vBLE-Maxime (Utilisé en mode texte), vPresenceGlobale (Utilisé en mode binaire. J’ai chercher un peu sur la toile et sur le forum, j’ai bien trouvé comment mettre des variables dans un scénario mais pas trouvé comment créer juste les variables, j’ai chercher sur mon Jeedom et je ne trouve pas non plus et malheureusement le seul lien dans google qui s’appelle « Créer une variable en dehors d’un scénario – Forum Communauté Jeedom » pointe sur un lien qui n’est plus disponible sur le forum (https://www.jeedom.com/forum/viewtopic.php?t=34748). du coup je bute et j’aurais besoin d’un peu d’aide.
Merci d’avance à toi.
Hello iPapy !
Alors en effet tu as deux possibilités pour créer des variables. Soit tu les mets dans un scénario et si elles n’existent pas alors ça les créera lors de l’execution du scénario. Sinon tu peux les créer toi même en allant dans Outils > Scénarios > Voir variables :
Tu cliques sur Ajouter, ca va t’ajouter une ligne vierge :
Tu rentres le nom de la variable puis sur cliques sur le bouton vert a droite :
A+
Bonsoir Maxime,
Merci pour ta réponse, j’avais effectivement vu la possibilité d’ajouter quelque chose en passant par Outils > Scénarios > Voir variables mais j n’avais rien créer car comme tu parlais de « utilisé en mode texte ou en mode binaire » cela m’avais un peu perturbé, par contre j’ai donc bien créer les 3 variables mais dans la case « valeur » je doit mettre quelque chose car par défaut il n’y a rien ou c’est là que je dois mettre texte et binaire?
Merci d’avance pour ta réponse
Oublie ma question bête Maxime je crois que j’ai trouvé, juste qu’il faut que je comprenne pourquoi ca marche avec le nut de ma fille mais pas avec le mien alors que nous avons le même.
Encore merci pour ton aide qui m’a aidé à mieux comprendre cette histoire de variable et encore bravo pour ton tuto.
Il n’y a aucune question bête. Dans le champs « valeur » il n’y a rien à mettre, c’est le scénario qui va remplir la variable suivant ce que tu as défini dans celui-ci.
Cependant si tu veux tester toi même la réaction à certaines valeurs (ex : présenceglobale = 1 ou 0 tu peux mettre la valeur à la main dans la variable et voir si ca réagit comme tu veux. Ca évite de jouer le scénario en entier si tu ne veux tester qu’une seule partie par exemple.
Bonjour Maxime,
Encore merci pour ton aide, cela fonctionne bien chez moi maintenant, juste un petit souci avec le message « Slack » qui au lieu de me retourner l’état du mode de la maison m’indique BLE – Passage en mode ‘#[Appartement][Modes][Mode]#’.
Est ce que j’aurais oublié quelque chose quelque part?
En tout cas c’est super ton tuto, j’espère que tu auras le temps de nous proposer tout plein de super tuto pour Jeedom 😉
Re- Maxime,
J’ai avancé sur le message envoyé par Slack c’est Ok désormais, c’était juste une petite erreur de syntaxe 😉 mais par contre mon plugins « Mode » ne change pas de statut automatiquement, ou du moins partiellement, que je soit présent ou absent il passe automatiquement en Absent.
J’ai essayer de cocher la case inversé, cela inverse bien le virtuel présence du moins sur l’image avec la coche verte ou rouge mais pas de changement.
J’ai essayé de coché la case inversé sur le nut lui même, là cela change bien la notif present/absent depuis… sur le virtuel mais idem pas de changement concernant mon plugins mode qui reste en absent.
Si je passe mon plugins mode en mode présent a l’aide du bouton « présent » créer, le plugins repasse bien en présent manuellement et si mon nut redeviens absent, le plugins « Mode » redeviens absent au bout du temps prévu mais ne reviens jamais présent même si mon nut est à nouveau présent.
J’ai lu tous les commentaires a la suite de ton tuto, fait différentes modif pour faire des tests mais rien à faire le plugins ne sais pas repasser en mode « Présent » automatiquement quand je rentre chez moi.
Je dois merder je pense quelque part mais je trouve pas la solution malgré les quelques heures que je viens de passer, donc si tu as une idée je suis preneur.
Merci d’avance à toi
Hello, essaye de changer manuellement le status de ta variable ou ton nut qui déclenche le mode absent.
Je prends l’exemple de la variable. Si presenceglobal = 0 alors tu dis de mettre le mode absent, si presenceglobal = 1 alors tu dis de mettre le mode présent. C’est le même principe pour le NUT.
Pour que le mode change il faut faire un scénario avec comme élément déclencheur ta variable. Comme ça a chaque changement de ta variable 1 ou 0 ca lancera le scenario et activera le mode qu’il faut.
Merci maxime pour ta réponse, je regarde cela demain car je travail cette nuit, je te tiens au courant.
Encore merci
Bonjour Maxime,
Je suis désolé de t’embêter à nouveau mais j’ai beau triturer le truc mais ça veux pas, snif, j’ai bien fait comme tu m’as dit mais pas de changement le mode passe absent quand je suis absent, ce qui est normal mais repasse en absent a nouveau en absent quand je suis présent au lieu de passer en présent malgré mes tests en mettant 0 ou 1 dans vPresenceGlobale.
J’ai remarqué deux choses, la première j’ai des différences dans le code du scénario par rapport au tiens, je sais pas si ça viens viens de la version 3.3.19 mais voici ce que moi j’ai:
– Nom du scénario : Set_ModeAbsent
– Objet parent : Appartement
– Mode du scénario : schedule
– Programmation : * * * * *
SI stateDuration(#[Présence][Présence Laura][Présence]#,1) > 300 ET stateDuration(#[Présence][Présence Franck][Présence]#,1) > 300
ALORS
#[Appartement][Modes][Absent]# – Options : {« enable »: »1″, »background »: »0″}
#[Notification et Push][Slack_Jeedom][Envoi Message]# – Options : {« enable »: »1″, »background »: »0″, »title »: » », »message »: »BLE – Passage en mode ‘#[Appartement][Modes][Mode]#' »}
SINON
Ensuite j’ai remarqué que la variable « vPresenceGlobale » ne s’implémente pas dans variable alors que plus tu m’as dit que si elle n’existait pas elle se créerait automatiquement se qui a été d’ailleurs le cas pour les variables vBLE-Laura et vBLE-Franck qui se sont créé automatiquement.
J’ai donc déclarer manuellement dans variable, jusque la pas de souci mais cela ne change rien non plus.
J’ai poussé le vis à tout supprimer et tout recréer rien à faire, si le widget présent/absent fonctionne bien lui, le plugins mode non.
Aurais tu une idée ? Sais tu si il est possible décrire le scénario en mode code directement et si oui comment? Es tu sur la dernière version de Jeedom comme moi et ton code pour les scénario présent et absent est il toujours identique à tes copie d’écran aujourd’hui?
Merci d’avance pour tes réponses et ton aide.
Salut, super tuto.
Par contre, je bloque actuellement sur la partie set presence (ou set absence).
Tu intègres Slack dans le scénar.
A tu un link vers un tuto pour gérer slack par hasard ? Car je ne peux pas avancer du coup. Tu as des items générés par Slack genre [Mode][Mode]# == ‘Présent’ OU #[MAISON][Mode][Mode]# == ‘Nuit’ via [IT][Slack – Maxime][Slack – Jeedom] je ne vois pas ou les créer…
Peux tu m’aiguiller, car je ne trouve rien sur ton site…
Hello,
Désolé pour ce temps de réponse.
J’utilise slack dans le scénario pour me notifier du changement de mode de la maison. Cela n’est pas bloquant pour la mise en place du scénario tu peux t’en passer.
Je n’ai pas fais d’article pour le moment sur la mise en place de Slack et de mes notifications en générale, mais ce pourrait être l’occasion.
A+
Si on se passe de slack, comment fait-on?
Merci
Hello,
Dans ce cas tu peux utiliser les notifications intégrées à Jeedom et son application mobile, utiliser Pushbullet, Telegram etc…
Si tu ne souhaites pas utiliser de notifications alors pas besoin d’ajouter les lignes « Slack » du tuto.
A+
Ok mais alors quand tu marques :
#[Maison][Mode][Absent]#
ou encore :
#[Maison][Mode][Mode]# == « Présent » OU #[Maison][Mode][Mode]# == « Nuit »
#[Maison][Mode][Présence]#
Comment dois-je le ré-inscrire? ya un truc qui m’échappe hmmmm
Il s’agit de deux actions qui se suivent. Du coup tu n’a pas a mettre l’action liée à Slack.
Exemple :
1. #[Maison][Mode][Présent]
2. #[IT][Slack – Maxime][Slack_Jeedom]#
La première action passe la maison en mode Présent
La deuxième action envoi la notification via Slack
Du coup tu as juste besoin d’ecrire la premiere action, la deuxième n’est pas utile si tu ne souhaites pas utiliser Slack.
Si tu souhaites utiliser le système de notification de Jeedom avec ton smartphone par exemple tu peux inscrire un truc du genre (en lieu et place de la deuxième action):
https://i.imgur.com/ey5Ig1t.png
D’accord pas de problème je ne souhaité pas de notification toute façon, par contre, quand tu dis « Du coup tu as juste besoin d’ecrire la première action » c’est-à-dire ?
Il faut qu’avant je crée un nouveau virtuel « Maison » avec 1 info virtuelle pour « Présent » « Nuit » et « Présence »?
C’est la que je suis largué car je ne sais pas d’où cela sort ^^
ah oké j’avais pas compris ça comme ça.
J’obtiens ces « boutons » grace au plugin Mode de Jeedom.
J’ai créé plusieurs modes (Present/Nuit/absent) et pmour faire mode tu peux définir des actions. et dans mon scénario j’utilise ces modes la. Pas besoin de créer de virtuel pour ça, c’est natif avec le plugin.
Ah parfait merci!!
Je ne connaissais pas ce plugin.
Je viens donc de créer via ce plugin 3 modes par contre il faut pour ton scénario leurs mettres des « Actons d’entrée »?
Ou faut juste les créer et c’est fini.
Merci
Dans un premier temps tu peux tester sans action d’entrée. Tu vois comment ca se comporte et ensuite tu ajoute tes actions.
Typiquement dès que tu passes en mode Présent, alors ca joue les actions que tu souhaites (ouverture ovlets, allumage luminaire etc…)
J’ai essayé juste avec l’étape 1 ça fonctionne, j’ai bien mes remontées par contre petit souci pour mon NUT perso le refresh ne fonctionne pas mais pour celui de ma femme ça fonctionne lol, j’ai pas encore compris le pourquoi du comment ^^
le refresh ? C’est à dire ?