Gestion d'une lumière automatique à l'entrée avec une ampoule miLight [Résolu]

Hello all,

Le titre par de lui même. Le gros soucis que j’ai rencontré est :
A partir du moment ou le capteur de mouvement détecte un mouvement et si la personne reste au même endroit longtemps, il exécutera le script à chaque fois. Comme mon ampoule s’éteint automatiquement au bout de x seconde, il conjugue les setTimeout() ce qui fait un peu disco à la fin.

Voici ma solution qui fonctionne bien :

const idAmpoule = 136 //ID ampoule
const counter = 30000 //30s

//Active l'ampoule miLight
gladys.deviceType.exec({devicetype: idAmpoule, value: true})

//Observe le device généré par gladys et lié à l'ampoule miLight
gladys.deviceType.getById({ id: idAmpoule })
 .then(deviceType => {
     //Test du dernier état enregistré si égale à 0 sinon on ne fait rien
    if(!deviceType.lastValue) {
        setTimeout(() => { //on déclenche un décompte et on éteint l'ampoule
            gladys.deviceType.exec({devicetype: idAmpoule, value: false})
        }, counter)
    }
 })
 .catch(err => { //Récupération des erreurs s'il y en a
     console.error(err)
 })

Le script s’execute lors d’un scénario en relation avec le capteur de mouvement.

Si vous avez des suggestions pour l’améliorer… ?

Pour Gladys v3 j’ai fait un petit module de timer avec quelques options https://github.com/atrovato/gladys-timer

Je l’utilise depuis un moment, il fonctionne plutôt bien.

2 Likes

Wohh la vache ton module @AlexTrovato !!
Comment ce fait il que ce module je ne l’ai pas vu sur le forum avant ?!

Merci bien :slight_smile:

Je ne dis pas tout :wink:
N’hésite pas à remonter des issues en cas de besoins.

Du coup pour comprendre tu fais un scenario sur ton capteur v pour qu’il allume ta lumière w
Si ton capteur passe a 1 tu execute le script y

et se script y a ceci

gladys.modules.timer.deviceTimer({
  // time, duration 
  timeout: 120000,
  // device to activate timer
  provider: {
    deviceTypeId: v, // presence sensor ID
    activeValue: 1 // presence value for activity
  },
  // device to manage
  consumer: {
    deviceTypeId: w, // light ID
    activeValue: 1, // switch light ON
    inactiveValue: 0 // switch light OFF
  }
 });

C’est bien ça ?

ça fais pas double check d’info ?

C’est bien ça :wink:

Du coup, il mettra un minuteur seulement si la lampe n’est pas déjà allumée.

Au premier coup : lampe éteinte => création du minuteur + allume lampe
Au second passage à moins de 2 minutes (120000 ms) : lampe déjà allumée et minuteur existe => mise à jour du minuteur pour recommencer le décompte à zéro (nouvelle attente de 2 minutes

Si tu allume la lumière toi même, pour que tu passe devant le capteur, le minuteur ne sera pas enclenché, car je considère que tu ne veux pas éteindre la lumière automatiquement.

Dans mon cas, j’ai également un capteur de luminosité ‘x’, et je veux allumer la lumière quand je passe uniquement s’il fait trop sombre : j’ajoute une ‘condition’

gladys.modules.timer.deviceTimer({
  // time, duration 
  timeout: 60000,
  // device to activate timer
  provider: {
    deviceTypeId: v, // presence sensor ID
    activeValue: 1 // presence value for activity
  },
  condition: {
    deviceTypeId: x, // luminosity sensor ID
    operator: '>', // operator
    activeValue: 10 // value
  },
  // device to manage
  consumer: {
    deviceTypeId: w, // light ID
    activeValue: 1, // switch light ON
    inactiveValue: 0 // switch light OFF
  }
 });
2 Likes

effectivement il me semble pas mal :slight_smile: !

Bon j’ai fais quelques test c’est cool comme solution :slight_smile: !

en revanche je me suis rendu compte d’une lenteur au niveau déclenchement de scenario (due a Gladys pas au module).

Je passe devant mon capteur, le scenario se déclenche 1 minutes après une idée ?

Sinon nickel pour l’instant ton module

Oui j’ai bien une idée, il y a trop de données dans les tables “events” et “devicestate”,
j’ai du mettre en place une purge régulière afin de ne conserver que les 5 derniers jours de données.

En cherchant “purge” sur le forum, tu pourras trouver différents scripts, sinon je peux également partager les miens.

Trop cool ton plugin et je regrette de ne pas l’avoir trouvé tout de suite. :wink:

Merci en tout cas