pour le plugin sequencing, j’utilise d’un cron de programmation pour lancer les actions (si l’utilisateur le souhaite).
Pour les crons « récurent », si je l’enregistre à 12h05m18s par exemple, il se lancera dans la 1ere minute (12h06m03) puis il appliquera ensuite correctement la fréquence choisie.
Je voudrais éviter ce premier lancement « intempestif ».
Pour ça je lui ai déclaré un setLastRun() à l’heure courante :
Sauf que ca ne fonctionne pas. Non seulement dans le moteur des tâches le « Dernier Lancement » est vide, mais le log avec getLastRun() est vide aussi et je constate bien le déclenchement effectif dans la 1ere minute…
Pour inspiration je suis allée chercher dans le core, par exemple ici :
Salut,
là comme ca je ne vois pas mais sinon, tu créés chaque fois un cron pour chaque équipement selon la config faite du coup?
Perso je fais un peu différemment (et j’ai vu plusieurs plugin faire pareil voila pourquoi): j’ai un cron minute au niveau du plugin (la méthode static cron de base donc) et dans celui-là je check tous les équipements actifs et s’il faut executer leur « refresh »
c’est plus simple à gérer, pas besoin de créer (et surtout supprimer) les cron pour chaque équipement
et du coup je n’ai pas vu ce genre de soucis (mais je n’ai peut-être pas fait attention)
Oui c’est ca, si l’utilisateur veut utiliser la programmation pour cet équipement, je lui set un cron selon la config qu’il veut.
Justement je voulais pas laisser tourner un cron toutes les minutes pour juste checker un déclenchement toutes les semaines ou tous les mois…
Vu que le core propose de mettre ses propres cron, pourquoi s’en priver ?
Je set aussi un cron par action « décalé », mais j’ai pas ce soucis de 1er déclenchement intempestif parce que c’est une programmation à une date/heure donnée :
$delai = strtotime(date('Y-m-d H:i:s', strtotime('+'.$action['action_timer'].' min ' . date('Y-m-d H:i:s')))); // on lui dit de se déclencher dans 'action_timer' min
$cron->setSchedule(cron::convertDateToCron($delai));
Le problème est uniquement pour les crons « récurent ». Ma comprehansion du fonctionnement de Jeedom c’est que chaque minute il check quels cron doivent être exécutés selon leur schedule et leur « lastRun ». Et donc pour un cron qui n’a pas de « lastRun », il est exécuté immédiatement. D’où l’idée de lui setter un lastRun à l’heure courante…
Après c’est pas dramatique comme comportement, mais si je pouvais trouver un moyen de corriger ça, ça serait mieux !
Mouais, de toute facon si c’est pas ton code du plugin qui le fait, ca sera le core qui va aussi check chaque minute quels sont les crons « custom » a exécuter ou pas, donc kifkif comme on dit chez moi