Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

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 : Google [Bot] et 4 invités