Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Le groupe des Helpers est present pour vous aidez, n'hésitez pas à poser des questions ;)

Toute la communauté vous remercie

Date / Heure prochaine exécution dans un virtuel ?!

Réservé à la création de scénarios dans JEEDOM
mkkl
Timide
Messages : 11
Inscription : 08 mai 2015, 11:27

Re: Date / Heure prochaine exécution dans un virtuel ?!

Message par mkkl » 25 févr. 2019, 10:18

pour ma part j'utilise un scenario de type code, qui met à jour des variables qui seront affichées dans un virtuel

Code : Tout sélectionner

    $idScenario="ID_DU_SCENARIO";
    $varName="NOM_DE_LA_VARIABLE";
    
    $Scenario = scenario::byId($idScenario);
    $date = calculateScheduleDate($Scenario, 'd H:i');
    $scenario->setData($varName, $date['nextDate']);

function calculateScheduleDate($s,$format=null) {
  if($format==null){
    $format = 'Y-m-d H:i:s';
  }
  $calculatedDate = array('prevDate' => '', 'nextDate' => '');
  if (is_array($s->getSchedule())) {
    $calculatedDate_tmp = array('prevDate' => '', 'nextDate' => '');
    foreach ($s->getSchedule() as $schedule) {
      try {
        $c = new Cron\CronExpression($schedule, new Cron\FieldFactory);
        $calculatedDate_tmp['prevDate'] = $c->getPreviousRunDate()->format($format);
        $calculatedDate_tmp['nextDate'] = $c->getNextRunDate()->format($format);
      } catch (Exception $exc) {

      } catch (Error $exc) {

      }
      if ($calculatedDate['prevDate'] == '' || strtotime($calculatedDate['prevDate']) < strtotime($calculatedDate_tmp['prevDate'])) {
        $calculatedDate['prevDate'] = $calculatedDate_tmp['prevDate'];
      }
      if ($calculatedDate['nextDate'] == '' || strtotime($calculatedDate['nextDate']) > strtotime($calculatedDate_tmp['nextDate'])) {
        $calculatedDate['nextDate'] = $calculatedDate_tmp['nextDate'];
      }
    }
  } else {
    try {
      $c = new Cron\CronExpression($s->getSchedule(), new Cron\FieldFactory);
      $calculatedDate['prevDate'] = $c->getPreviousRunDate()->format($format);
      $calculatedDate['nextDate'] = $c->getNextRunDate()->format($format);
    } catch (Exception $exc) {

    } catch (Error $exc) {

    }
  }
  return $calculatedDate;
}

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité