Mettre une fonction en trigger d'un scénario


#1

Bonjour,

Je débute avec Gladys, et trouve la solution très intéressante.
J’ai réussi à configurer mes SONOFF après quelques difficultés à les flasher.
Maintenant je souhaiterais les piloter via un scénario : “SI heure dans la plage horaire ALORS allumé, SINON éteindre”. Donc assez basique.
A ce jour j’arrive à le faire via de multiples alarmes qui allument puis éteignent --> pas du tout pratique…

J’ai parcouru la documentation pour commencer à me familiariser avec la prog, mais j’ai besoin de votre aide :slight_smile:

  1. la fonction gladys.time.IsInTimeRange semble être ce que je cherche, mais comment l’intégrer en tant que trigger dans un scenario?
    J’ai testé dans un script : ça marche. Mais évidemment il ne s’execute que lorsque déclenché à la main…
  2. Faut-il passer par un module dans ce cas ? Une construction avec cet exemple m’aiderait, les autres modules sont beaucoup plus “complexes” pour moi pour le moment.

Merci à vous par avance !


#2

Tu peux déclencher un script avec un scénario.
C’est pas ce que tu veux faire ?


#3

Non; en fait aujourd’hui j’ai plein d’alarmes à des heures différentes qui m’activent ou désactivent les devices via un scénario à chaque fois.

Or ce que je souhaite, c’est avoir un scénario unique qui ait un trigger “SI heure dans plage horaire ALORS active mes devices” (l’activation pouvant se faire par un script, ça pas de soucis).


#4

Hum… pardon, je ne le figure pas ton problème.
Tu peux décrire exactement ton use case? Sans parler scénario ou script. Juste le comportement que tu veux.


#5

Je crois qu’il veut regrouper toutes ces alarmes dans un script pour ne pas en avoir autant dans la gestion des alarmes de Gladys. Non ?


#6

Pardon, je pensais avoir était plus clair.
Hamtaro, c’est tout à fait ça.

Concrètement aujourd’hui j’ai ça :


Or c’est trop long, et si je veux remodifier une alarme, je dois recommencer…

==> Ce que je cherche, c’est avoir un unique scénario, avec comme déclencheur quelque chose qui serait par exemple la fonction gladys.time.IsInTimeRange(plage) , ce qui serait beaucoup plus court et plus flexible.
Je ne sais pas comment le faire aujourd’hui. J’ai bien réussi à coder la partie fonction dans un script (cf ci-dessous), mais celui-ci devrait être exécuté de manière permanente, ce qui n’est pas le cas.
53

J’espère avoir été plus explicite :slight_smile:


#7

Salut @New,
merci pour ce script, j’en cherchais un pour conditionner mon éclairage et ça fonctionne impec.
Mon test qui peut peut-être répondre à ta recherche était de déclencher le script via un scénario sur alarme toutes les 10 minutes … un peu comme checkUsersPresence.
Tu peux te créer des scripts suivant chaque condition horaire et un scénario qui les lance pour vérification.

Tiboys


#8

Bonjour tout le monde,
Après avoir ajouter la fonction isInTimeRange, et mon idée principale étant de l’intégrer dans les scénarios (la PR est en attente de validation), j’ai ajouter manuellement avec quelques fonctions en plus pour le paramétrages des scénarios.

Si cela peut servir a quelqu’un d’autre, voici le lien pour installer le module directement dans gladys.

Je pense que cela serai plus simple pour faire des scénarios.