Déclencher un scénario depuis un horaire déterminé

Bonjour

Par avance merci de votre aide.

Je voudrai que mon scénario se déclenche lorsque l’heure est réglé dans mon widget. Je ne sais pas quoi mettre comme déclencheur.
Mes conditions « SI » fonctionnent la durée aussi.
Je pensais qu’avec #time# mais malgré la doc, je pense que je n’ai pas tout compris.
J’ai pensé à pousser une variable numérique ou binaire quelque part dans un virtuel, mais bon je n’ai pas la logique.


Sc déclencheur

Merci pour votre aide.

Bonjour,

Effectivement, #time# qui ne fait que renvoyer l’heure, n’est pas la bonne méthode.
Il faut utiliser timeop, comme ceci :

A time_op(#[Arrosage][Arrosage auto pelouse][Départ 1:]#,0) FAIRE… rien ???

Où ‹ 0 › peut-être un offset en minute, en plus ou en moins par rapport à l’heure définie (ex : -15 = 15 minutes avant).

Vérifiez aussi votre bloc : après FAIRE, il faut y ajouter les instructions souhaitées qui doivent se déclencher à l’heure dite, là c’est vide (donc il ne se passera… rien).

Merci @DanielJ pour cette explication car je me posais la même question.

@Marcp30 est-ce que tu partagerais stp ton widget concernant les bouton ON OFF ?

1 « J'aime »

Bonjour
Merci, je vais essayer.

Bonjour

Oui c’est ce que je compte faire car j’ai du me débrouiller en compilant des infos sur le forum et la doc.

1 « J'aime »

Re bonjour
Bonjour

J’ai essayé en trifouillant ta piste dans toute les positions et syntaxe mais rien ne fonctionne comme je veux.
Donc j’ai fait un scénario simple pour montrer mon besoin
L’info de l’heure de mon wigdet mis dans le A du scénario pour qu’il le prenne comme référence.
Je pense que je m’y prend comme un pied.
Et du coup je ne sais pas quoi mettre comme déclencheur.



image

Ca, ça ne peut pas marcher !
Je l’ai dit, il faut utiliser la fonction time_op :

time_op(#[Arrosage][Arrosage auto pelouse][Départ 1:]#,0)

Et pas besoin de déclencheur, le bloc dans A…FAIRE [le bloc qui doit s’exécuter] se lancera à l’heure programmée…

Bonjour

J’ai essayé, mais cela ne fonctionne pas, car j’ai l’impression que l’heure est envoyé au moment
ou je la règle sur le widget et après plus rien.
Je regarderai si je ne me suis pas trompé quelque part même si je met time_op(#[Arrosage][Arrosage auto pelouse][Départ 1:]#,0).
J’ai supprimé et refait un scénario plus simple pour voir.

Et lorsque je lance manuellement le scénario à voir le log il vois bien la valeur
mais ne lance pas l’action

Merci pour ta patience.

Il faut mettre comme déclencheur un horaire la nuit (avant la planification la plus matinale) ET tes heures de départ et durée. Ainsi si tu modifies dans la journée un des trucs, ça recalcule l’ensemble

Mettre un remove_inatt en début de scénario pour supprimer les précédents éléments planifiés.

Et ensuite, avant tes 4 A, rajouter les SI qui vont bien

remove_inat
SI programmation== 1 Alors
    SI (Lundi == 1 ET #njour# ==  1 ) OU (mardi == 1 ET #njour == 2) Ou ....  ALORS
        SI État dep 1 == 1 ALORS
            A .....
                  DANS.....
        SI État dep 2 == 1 ALORS
            A .....
                  DANS.....
        SI État dep 3 ==1 ALORS
            A .....
                  DANS.....
        SI État dep 4 == 1 ALORS
            A .....
                  DANS.....
     

Juste vérifier le comportement quand tu appuyeras frénétiquement sur les ±… J’ai peur que ça lance le scénario xx fois

Norbert

Bonjour

Merci

J’essaie ce soir en rentrant. : :raised_back_of_hand:

Est-ce qu’un sleep en début de scénario pourrait aider ici à temporiser?

Je ne pense pas ! tu risques surtout de rater la dernière valeur
le pb, c’est de mettre un slider en déclencheur ou par définition, la valeur change rapidement avant d’arriver à la cible.
Il me semblait qu’il y avait déjà eu des échanges sur ce sujet avec @loic, mais je ne retrouve pas

1 « J'aime »

Bonjour

Oui je pourrais mettre un bouton ou un slider validation pour envoyer au scénario une fois le réglage fait et de déclencher le scénario tôt le matin car une fois tout caler je n’y toucherai casi jamais.

Oui j’ai vu le sujet de @loic mais cela remonte trop
loin et ne correspond plus à priori avec les dernières mise à jour de jeedom et debian 11, quelque syntaxe on évoluées depuis.

Mais j’avais vu également quelqu’un qui proposait de pousser la valeur dans un autre virtuel sous forme de variable, mais je ne retrouve plus l’info.

Merci à tous de vos solutions :kissing_heart:

Bonjour,

Pas d’accord, ça fonctionne bien comme prévu !
Le log montre clairement que lorsque ce scénario est lancé (manuellement dans ce cas), il évalue correctement l’heure du lancement du code associé au bloc A…FAIRE… (à 07h57 donc), puis il programme la tâche (et donc l’action #[Arrosage][Relais arrosage][state on I1]#) à 07h57.
Rien d’anormal donc…

Je pense que le souci est plutôt côté déclencheur en effet, et comment signifier que l’heure affichée est bien celle à prendre en compte.
Comme @ngrataloup l’a souligné, pour qu’un scénario programme des tâches avec un bloc A…FAIRE…, encore faut-il que ce scénario soit lancé avant le premier horaire programmé.

Voici comment j’ai résolu de mon côté ce problème, car j’ai eu aussi à résoudre un cas similaire pour programmer des alarmes-matin.

Côté virtuel

image

Ce que j’ai (similaire donc…):
image

Il y a l’affichage de l’heure programmée, et de 4 boutons +/- pour régler l’heure et les minutes
Une pression sur + ou - augmente/diminue d’une heure ou d’une minute l’heure programmée.

A chaque modification de l’heure (à chaque appui sur une touche +/- donc…), je pour ma part lance un scénario, à partir du menu de configuration avancé de l’action virtuelle associée aux touches +/- :

Notez bien le démarrage en mode sync, et après l’exécution de la commande : c’est tout le secret…
Cela permet de ne lancer ce scénario que lorsque la précédente itération de celui-ci est terminée. Il n’y a pas de lancement en parallèle de multiples sessions de ce scénario (en raison d’appuis trop rapides et/ou quasi-simultanés), qui peut-être une source de confusion.

Ce scénario me permet de mémoriser l’heure de réveil programmé dans une variable (ainsi que d’autres conditions qui sont vérifiées avant de valider cette heure).
A ce stade, j’ai donc une heure stockée dans une variable, et dans le virtuel actualisé par rapport à cette variable.

Il ne reste plus qu’à programmer les tâches à l’heure souhaitée dans le scénario principal :

Déclenchement

  • programmé à xxhxx tous les jours (ça peut-être pendant la nuit, la veille,… et en tous cas avant la première échéance horaire),

Scénario

  • A time_op(variable(heure1),0)
    FAIRE #[Arrosage][Relais arrosage][state on I1]#
    etc…

Voilà, si ça peut inspirer une solution satisfaisante…

Bonjour

Merci j’ai essayé ta solution et cela fonctionne avec l’exécution syn du scénario après
l’action réglage horaire. Merci à tous pour votre aide et en plus je suis un idiot car
J’utilise déjà cette fonction que j’avais mis en place il y à 1 an pour un scénario qui m’envoie la sauvegarde jeedom sur mon NAS et je l’ai zapper aujourd’hui.
Avant de déclarer la solution, je vais finaliser mon scénario et widget et les commandes afin de tout partager.
Question: quelle la différence à utiliser: le "time# me suffirai, non?
Suivant la doc

  • #time# : Heure et minute courantes. Ex : 1715 pour 17h15
    ou
  • time_op(time,value) : Permet de faire des opérations sur le temps, avec time=temps (ex : 1530) et value=valeur à ajouter ou à soustraire en minutes.
    Merci encore à tous :pray:

Super ! :blush:

Pour un humain, pas de différence en effet. #time# ou time_op, on ne ‹ voit › que 1715 dans les deux cas.
Pour la machine, c’est complétement différent.
#time# renvoie donc une valeur, représentant une heure sur deux digits (HH), et des minutes sur deux digits également (MM). Mais à la base, il s’agit d’une valeur réelle fournie par l’horloge temps réel du système qui s’incrémente toutes les millisecondes, et régulièrement recalée via internet (service NTP).
time_op est une fonction qui permet, à partir d’un numérique, de transformer la valeur en question, mile sept cent quinze (1715), en une heure d’horloge temps réel manipulable (les processeurs utilisent rarement le système sexagésimal nativement…), d’effectuer des opérations dessus (+/- x secondes par exemple), et de retourner en sortie la valeur sous la forme d’un nombre représentatif en HHMM.
Voilà pourquoi…

Re boujour

Merci encore, j’ai posté ici mon final https://community.jeedom.com/t/tuto-creation-widget-multi-depart-horaire-par-jour-simple/134993

:clap:

Ok, vu, et merci pour le partage !
Je n’ai pas de doute sur la fait que ça servira certainement à tous ceux qui souhaitent se lancer dans ce type de construction entre designs et virtuels…

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.