Comment fait-elle?


#1

Salut à tous :slight_smile:

J’ai une petite question sur la logique de Gladys avec le détecteur de porte (Xiaomi),

Quand on rentre il s’enclenche et allume les lumière par exemple, et il mémorise le faite que quelqu’un soit rentré pour éteindre les lumière quand la porte se réouvre (quand il sort).
Mais si quelqu’un d’autre rentre alors que une personne est déjà dedans, il va croire que la première personne est sortie et ça va éteindre les lumières non ? :smile:

Comment Gladys gère ça ?


#2

C’est à toi de définir tes scénarios ! Gladys ne fait rien ! :slight_smile: Donc là dessus c’est ton scénario qui doit penser à ce cas d’usages

Après comme tu le pointe, non un simple capteur d’ouverture de porte ne peut pas statuer de l’occupation d’une pièce. Pour cela il vaut mieux un détecteur de mouvement avec une temporisation, mais même c’est jamais facile de savoir pour ce genre de choses


#3

Oui je sais bien que ça marche avec nos scénario, mais nos scénario dépendent de la puissance de Gladys et de ces accessoires :grinning:, c’était une façon de l’illustrer.
Et ce scénario que j’imagine, personne ne l’a fait ?
La seule façon de faire du coup c’est si le détecteur de mouvement ne détecte aucun mouvement pendant genre 5 min il en conclus qu’il n’y a plus personne ?


#4

En fait tu pointes du doigt l’un des gros challenge du futur de la maison connectée :wink:

Savoir détecter l’occupation d’une maison de manière générale.
Chaque cas est unique, tu prends le cas d’un célibataire dans un studio, ce sera bien différent d’une famille nombreuse dans une maison de 350m²

Je crois qu’il n’y a pas de solution unique.


#5

j’en suis témoin. par exemple ajd, mes gosses sont chez moi alors que gladys pense que la maison est vide car avec ma femme on est au taf.
solution, capteur de présence. mais j’ai un chat donc il faut pas non plus qu’il se déclenche si le chat va dans le salon.
sujet vraiment complexe.


#6

Les détecteur de présence c’est pas non plus parfait. si tu reste sans bouger ( ex: assis sur le canapé) en dehors de la zone X il ne te verra pas


#7

et oui…
même avec une gladys super, il restera toujours(ou pour longtemps en tout cas) des limitations d’usage.
Sinon il reste la solution de pucer les enfants(et la belle-mère qui les gardes) :wink:


#8

J’ai meme déjà eu mon capteur qui capte un mouvement alors qu’il n’y a personne suite à un mouvement de flux d’air (l’air chaud monte dans la mezanine et provoque un courant d’air qui fait bouger un mobile pour enfant)… :slight_smile:

Actuellement, le plus fiable pour ma part c’est la détection du porte clé bluetooth de moi et de ma femme. (les enfants étant trop petit pour être seul dans la maison)


#9

Ouai la seule solution viable c’est de dire manuellement à Gladys quand on est là, genre avec des tags nfc
Edit : Ou bien Gladys qui détecte quand notre téléphone entre dans la zone de la maison


#10

oui mais là aussi, je ne vais pas forcer mes parents et beau-parents à se connecter à mon wifi pour les identifier…
A ce rythme ma maison va être pire que la politique google :wink:


#11

Salut !
Je pense qu’on peux palier a ce problème assez facilement en croissant plusieurs moyen de détection !
Style bluetooth ou NFC plus ton capteur de porte.

Comme ça grâce au capteur de porte elle détecte que quelqu’un rentre et lance alors la détection (bluetooth ou NFC) si elle trouve un utilisateur qui n’était pas dans la pièce elle vérifie si la lumière est allumée et si ce n’est pas le cas elle l’allume !
Ensuite cette personne est assigné à la pièce dans laquelle elle a été détectée et la boucle est a nouveau lancée.
Et quand la dernière personne sors de la pièce elle passe la pièce à l’état vide et éteint donc la lumière ^^

Je sais pas si je me suis bien expliqué :sweat_smile:


#12

Pas mal en effet mais il y toujours le problème des “étrangers” qui ne sont pas détectés.

Sinon le mieux à mon avis c’est de dire vocalement à Gladys “Je sors” ou “Je suis rentré”
Après je sais pas ou en est la reco vocale avec Gladys…

( Pouvoir utiliser un device comme google home et profiter de sa reconnaissance vocale très performante pour Gladys ce serait vraiment sympa )


#13

Je déterre le sujet… Je galère sur le sujet…

J’aimerais faire la “suite” suivante :

  • la porte s’ouvre
  • gladys patiente x minute
  • au therme des x minutes, gladys teste la présence des utilisateurs (portes-clé nut)
  • si l’utilisateur 2 a disparu, notification télégram spécifique, pas de notif si c’est le 1, n°3 pas encore équipé
  • si l’utilisateur 2 est apparu, notification télégram spécifique, pas de notif si c’est l’utilisateur 1, n°3 pas encore équipé
  • si pas de changement (invité qui entre ou qui sort, juste allé cherché le courrier ou les pizza :blush:)
  • idéalement, si USER1 est la, pas de notification d’entrée de USER2, mais toujours notifiaction de sortie

Notification télégram bien sur! (le seul truc qui a pour l’instant l’air de pas trop mal marcher sur mon téléphone)

Je ne veux pas que Gladys teste toutes les 5 minutes, uniquement quand la porte s’ouvre (oui, ma fille peut toujours se barrer par la fenêtre :confused: je sais bien… avec une corde à noeud de draps :frowning: ) De toute façon, la dernière fois, elle est partie sans son porte clé :sleepy: et a sonné pour rentrer…

Je retiens… c’est peut-être la solution :weary:

Pour que ça marche il faudrait que je le fasse avec un bracelet sport BT, ça elle devrait l’avoir tout le temps…


HELP script(s) sur retour ou départ de la maison déclenché par un scénario
#14

Tu as super bien décrit ce que tu voulais.
Je vois rien d’insurmontable à ça, un beau script lancé sur l’ouverture de porte et ça va le faire ! :wink:


#15

Merci!

Donc, je fais un scénario qui à l’ouverture de la porte lance le “script” suivant (faudra que je mette en forme)

Attend 5 minutes 
gladys.house.checkUsersPresence(); //est-ce que je peux ne tester la présence que de un User?
If user 2 partie
then gladys.modules.telegram.notify({text:'USER 2 est partie'},{id:1});
If user 1 absent and user 2 de retour
then gladys.modules.telegram.notify({text:'USER 2 est de retour'},{id:1});

En parallèle, indépendant ou pas, il me faudrait une alarme en fonction d’un emploi du temps :

délais de retour maison 30 minutes, marge de 10 = 40 minutes
passé se délais : 
If user 2 absent 
then gladys.modules.telegram.notify({text:'USER 2 n'est pas toujours pas rentrée'},{id:1}); 
// Idéalement j'aimerais pouvoir lancer ce script à intervalle régulier ex toutes les 5 minutes, et recevoir le nombre de minutes de retard.
// Est-il possible d'envoyer au téléphone de USER2 une requête? (MQTT? Owntracks?) pour connaitre sa position?

(Je rappelle que je suis dans un contexte d’adolescente fugueuse et plus… qui a déjà passé une nuit dehors deux fois :frowning: c’est pas du flicage pour le plaisir :wink: )

Edit, dans le référentiel des scripts j’ai trouvé ça :

// Get the last location of the user
// Location can be tracked with OwnTracks (iOS/Android) or Tasker (Android)
gladys.location.getUser({ id: 1})
    .then((location) => {
        console.log(`User 1 has been last seen at ${location.latitude}, ${location.longitude}`);
    });

J’ai commencé avec ça :

setTimeout(function(){
// ce que vous voulez faire
// tester la présence de l'utilisateur
gladys.house.checkUsersPresence();
// il faut enregistrer le log?
// then ((user) => {
//         console.log(`User ${user.id} est`);
//     });

//fin de ce que vous voulez faire
}, 1000); //1000 = 1s  donc 5 minutes = 60*5*1000=300 000

Si je dé commente then et console log, j’ai des erreur et gladys redémarre


#16

Je trouve des choses intéressantes, mais quoi en faire…

1/ gladys.house.checkUsersPresence(); est-ce que ça cré un évènement? Si oui, j’imagine uniquement en cas de départ ou de retour, si l’état ne change pas, il ne se cré rien (exemple, j’ouvre la porte pour accueillir des amis, la femme de ménage qui n’a pas de badge nut?..)

2/ sur : https://documentation.gladysproject.com/jsdoc/#gladyseventgetbyeventtype je treouve des trucs sympa

gladys.event.get

This function return all events

gladys.event.get(options: [Object], user: [Object]): [Array]<[events]>

avec visiblement un exemple :

var options = {
     user = {id: 1},
     take: 50, //pas besoins, j'ai besoin du dernier
     skip: 0
}
gladys.event.get(options)
     .then(function(events){
         // do something
     })

Il y a aussi :

var type = {
     code: "back-at-home"
}
gladys.eventType.getByCode(type)
     .then(function(eventType){
         // do something
     })
     .catch(function(err){
         // something bad happened ! :/
     });

Dans // do something, c’est peut-être la qu’il faudrait que je fasse en fonction du event retourné?


#17

Sauf que var type c’est le dernier enregistré tout court, pas pour un user défini, est-ce que je peux mettre une variable de user id quelque part?