Scheduler 10 secondes

Bonjour a tous!

J’aimerai faire un scheduler me pernettant d’executer un scenario toutes les 10 secondes.
J’ai fait plein d’essais mais ce qui semble le plus simple c’est d’utiliser un scenario et un bloc CODE qui boucle a l’infini et met une variable alternativement a 0 puis a 1 …
Ensuite utiliser cette variable pour provoquer un scenario.

Voici le petit bout de code php dans un bloc CODE, c’est pas rocket science :slight_smile:

while(1)
 {
 	sleep(10);
  	$myVal = $scenario->getData('GlobalTrigger');
  	if ($myVal == 1) {
    	$scenario->setData('GlobalTrigger', '0');
    } else {
      	$scenario->setData('GlobalTrigger', '1');
    }
 }

J’utilise alors cette variable Jeedom ‹ GlobalTrigger › pour provoquer un scenario.

Est-ce une ‹ bonne › approche ou avez-vous une autre solution?

Merci,

Sebastien

Bonjour,

Franchement je ferais plus « bête »; et du coup moins de risque de problème.

Un scénario exécuté à la minute via jeedom,

  • une boucle de 1 à 5
    • action
    • sleep(10s) (ou wait si il y a certaines conditions qui font stopper le scénario)

Avantage:

  • on reste sur du standard niveau scénario, ca fonctionnera avec toutes les prochaines versions de jeedom.
  • si on veut désactiver le scénario ou autre, dans la minute il ne se relancera plus, seul l’éxécution en cours continue)
  • si ca plante pour quelques raisons que ce soit, ta boucle infinie est morte aussi, ici chaque minute ca se relance.
  • tout dans un seul scénario, c’est beaucoup plus simple pour la maintenance et se rappeler ce qu’on a fait 4 mois plus tard que d’avoir 2 scénarios et une variable (variable qui veut dire un aller-retour à la db, c’est aussi à éviter quand possible)

Merci @Mips,

Je vais essayer ta suggestion.

Sebastien

@Mips , un petit retour de mes tests:
Avec ta proposition, on est effectivement dans le standard Jeedom mais c’est pas precis du tout … l’execution des boucles n’est pas a la seconde et j’ai entre 2 lancements de scenarios parfois jusqu’a 15 secondes d’ecart… Je crois que j’avais deja essaye ceci il y a quelques temps mais que j’avais pas retenu cette solution car pas preceise du tout.

Avec le petit PHP qui tourne en infini c’est super precis … a la seconde.
Si probleme, je peux arreter le scenario et la boucle PHP s’arrete de suite d’apres ce que je constate.
Y a-t-il un risque a faire tourner ceci en prod? (marche super sur mon Dev)

Sebastien

bonjour une autre méthode code
plus précise qu’un sleep

le plugin Time Manager utiliser dkron, un ordonnanceur externe qui marche en récurrence à la seconde
une action récurrente toutes les 10s créer dans Jeedom, va faire une entrée dans l’ordonnanceur qui fera un trigger de jeedom toutes les 10s, en dehors de PHP et de la mécanique Jeedom

Salut @ajja17orange , oui mais cela reste une methode php et le sleep est assez precis pour mon utilisation.

Sebastien

Salut @lunarok ,

J’ai fait l’achat de ton super plugin il y a un temps deja …
Avant j’etais sur un VM sous Virtual Box et il fonctionnait pendant un temps mais le scheduler s’arraitait sans raison.

Je viens de migrer vers une Atlas et je n’ai pas reussi a faire fonctionner ton plugin dessus
Il s’installe OK, pas d’erreur dans les logs, les dependances sont aussi OK.
Et quand je cree un equipement pour une repetition toutes les 10 seconds en appelant un scenario, rien ne se passe.
D’ou mon idee d’utiliser du php dans un bloc CODE.

Edit: Si tu souhaites que je t’envoie des logs ou autre pour debug, je suis partant!

Sebastien.