Timer générique

Bonjour,

je viens juste partager une petite implémentation que j’ai réalisé (qui peut être améliorée certainement) mais qui m’a permis de résoudre mon problème de timer générique.

Le but est d’avoir un scenario qui permette de définir une durée au bout de laquelle on déclenchera un traitement.
Ce scénario récupère la valeur d’une variable qui sera initialisée à la tempo en secondes (ex mavariable = 10 pour 10 secondes).

A l’appel du scénario on fourni le nom de la variable dans un tag :

Le timer va alors décroitre la valeur de la variable toutes les secondes et s’arrête ensuite.

Il suffit alors d’avoir cette variable en déclencher d’un scénario pour activer un traitement lambda.

Voici le code du scénario timer :

*// Récupère le nom de la variable passée dans le tag timevar*
*// Cette variable doit être utilisée comme déclencheur du scénario de traitement en fin de timer variable(#mavariable#) == 0*
*$tags = $scenario->getTags();*
*$variable = $tags['#timervar#'];*
*$scenario->setLog('var name :'.$variable);*
*// On mémorise la valeur d'origine*
*//$variablebasevalue = $scenario->getData($variable);*
*$scenario->setLog('var value : '.$variable);*

*do {*
*  $scenario->setLog('le nombre est '. $scenario->getData($variable));*
*  $scenario->setData($variable, $scenario->getData($variable) - 1);*
*  sleep(1);*
*  // On boucle autant de fois que nécessaire jusqu'à atteindre 0*
*} while($scenario->getData($variable) > 0);*

voilà, en espérant que ça puisse aider quelques jeedomiens !

Bonsoir,
Merci pour ce partage.
A l’avenir
Merci d’utiliser le code </> pour encadrer vos codes ou logs.
tutoriel cliquez ici

Merci d’utiliser utiliser la bonne catégorie pour qualifier votre sujet.

Bonne journée