Ajout via scénario d'un 'specific_day'

Relis bien le titre du sujet.
La gestion d’un ‘specific_day’ est faite par le #plugin-mybin.
Ta question est hors sujet ici.

ah ouais mais je suis pas assez dev pour comprendre les subtilités je t’avoue. pas de soucis.
sujet créé dans un autre post. merci qd meme

1 « J'aime »

salut ,je voudrais utliser ce script pour avoir un ramassage toutes les 3 semaines le mardi.j’avoue que je n’y connait rien en code et je ne sais meme pas où le mettre!pouvez vous m’aider?

Le code est à recopier dans un bloc code d’un scénario.
Quel est le jour de ton dernier ramassage ?
Quel est le nom de ton équipement My Bin ?

le mardi,les éboueurs passe q’une seul fois par semaine. pour l’instant je n’ai rien fait dans mybin je ne savais pas si c’etait possible

J’avoue ne pas comprendre ta demande.

excuse moi,je n’ai qu’une seule poubelle qui est relevée que le mardi et je la sort toutes les 3 semaines

Alors : ``

Tu dois pouvoir aussi faire une programmation tous les mardis et interdire les notifications deux mardis sur trois (je n’ai pas testé).

Capture d’écran du 2021-05-15 20-40-43

intdiv(#timestamp#,86400*7)%3 == 0

Suivant les deux mardis à exclure, il faudra remplacer 0 par 1 ou par 2.

Quel est le jour de ton dernier ramassage ? mardi
Quel est le nom de ton équipement My Bin ?poubelle

Plus précisément, la date ?

11 mai 2021

Voila le code à copier dans un bloc code de scénario.

// Une semaine sur N

$maPoubelle = 'poubelle'; //Nom de l'équipement My Bin
$dernierRamassage = '11 may 2021';
$cycleRamassage = 3; // N
$timestamp = strtotime($dernierRamassage) + (intdiv(strtotime("now") - strtotime($dernierRamassage), 7 * 86400 * $cycleRamassage) + 1) * 7 * 86400 * $cycleRamassage;
$dateEncombrants = date('Y-m-d', $timestamp);
$scenario->setLog('Date encombrants : ' . $dateEncombrants);
// ----------------------------------------Ajout du ‘specific_day’----------------------------------------
$mybinLogics = eqLogic::byType('mybin');
foreach($mybinLogics as $mybinLogic) {
  if ($mybinLogic->getName() == $maPoubelle) {
    $scenario->setLog($mybinLogic->getEqType_name() . ' - ' . $mybinLogic->getHumanName() . ' - ' . $mybinLogic->getName());
    $dates = $mybinLogic->getConfiguration()['specific_day'];
    $ajout = true;
    foreach($dates as $date) {
      $scenario->setLog($date['myday']);
      if ($date['myday'] == $dateEncombrants) {
        $ajout = false;
        $scenario->setLog('Pas d\'ajout ' . $date['myday'] . ' date existante');
      }
    }
    $scenario->setLog('------------------------------------------------------------------------------------------');
    if ($ajout) {
      array_push($dates, array("myday" => $dateEncombrants));
      sort($dates);
      foreach($dates as $date) {
        $scenario->setLog($date['myday']);
      }
      $mybinLogic->setConfiguration('specific_day', $dates)->save();
    }
  }
}

Tu pourras déclencher le scénario chaque semaine, le mercredi par exemple.

d’accord je te remercie de ton aide

1 « J'aime »

re ! tu peux m’expliquer ce que le scenario va faire sur le plug in?

Il va ajouter une Date(s) particulière(s) de ramassage.

Capture d’écran du 2021-05-15 21-45-08

ah bah du coup ca n’a pas fonctionné

Peux-tu donner les logs du scénario ?

c’est bon je n’avais pas fait executé :pensive: je suis un boulet !!!

1 « J'aime »

Un exemple hebdomadaire avec plusieurs plages dans l’année.

// Tous les mardis, deuxième quinzaine de mars
// Tous les mardis, première quinzaine de décembre

$maPoubelle = 'Poubelle Rouge'; //Nom de l'équipement My Bin
$nextTuesday = strtotime('next tuesday');
$miMarch = strtotime('15 march');
$endMarch = strtotime('31 march');
$firstDecember = strtotime('1 december');
$miDecember = strtotime('16 december');
$scenario->setLog('Prochain Mardi : ' . date('d/m/Y H:i:s', $nextTuesday));
$scenario->setLog('Mi-mars : ' . date('d/m/Y H:i:s', $miMarch));
$scenario->setLog('Fin mars : ' . date('d/m/Y H:i:s', $endMarch));
$scenario->setLog('Début décembre : ' . date('d/m/Y H:i:s', $firstDecember));
$scenario->setLog('Mi-décembre : ' . date('d/m/Y H:i:s', $miDecember));

$dateRedBin = date('Y-m-d', $nextTuesday);
if (($nextTuesday > $miMarch && $nextTuesday <= $endMarch) || ($nextTuesday >= $firstDecember && $nextTuesday < $miDecember)) {
  $mybinLogics = eqLogic::byType('mybin');
  foreach($mybinLogics as $mybinLogic) {
    if ($mybinLogic->getName() == $maPoubelle) {
      $scenario->setLog($mybinLogic->getEqType_name() . ' - ' . $mybinLogic->getHumanName() . ' - ' . $mybinLogic->getName());
      $dates = $mybinLogic->getConfiguration()['specific_day'];
      $ajout = true;
      foreach($dates as $date) {
        $scenario->setLog($date['myday']);
        if ($date['myday'] == $dateRedBin) {
          $ajout = false;
          $scenario->setLog('Pas d\'ajout ' . $date['myday'] . ' date existante');
        }
      }
      $scenario->setLog('------------------------------------------------------------------------------------------');
      if ($ajout) {
        array_push($dates, array("myday" => $dateRedBin));
        sort($dates);
        foreach($dates as $date) {
          $scenario->setLog($date['myday']);
        }
        $mybinLogic->setConfiguration('specific_day', $dates)->save();
      }
    }
  }  
} else {
  $scenario->setLog('Date hors limite : ' . $dateRedBin);
}
1 « J'aime »