[Tuto] Gestion des poubelles avec agenda sur une icone unique

Bonjour à tous,

Je vous partage la manière dont je gère le rappel de sortie de mes poubelles (rappel la veille de l’évènement).

J’utilise les élements suivants :

Limitation : cela ne fonctionne pas si les 2 poubelles sont à sortir le même jour.


Tout d’abord définir un agenda avec 2 types d’évènement « Poubelle Jaune » / « Poubelle Bleue » : (notez l’ID du calendrier il servira plus tard)

Les évènements sont à planifier à 6:00 (important pour le script) :

Créer un Mode « Poubelle » :


Avec un mode « Aucune » et un Mode pour chaque couleur de poubelle (le nom du mode doit correspondre au nom de l’évènement Agenda sans le "Poubelle ")

Dans la configuration avancée du mode, personnalisez la commande [Mode] avec le widget Icon_Mode :

Définir une icone pour chaque Mode, y compris le mode Aucune

Ensuite tout se passe dans un scénario qui se lance tous les jours à 0h01 du matin :

Voici la partie Code à personnaliser :

  • id du calendrier
  • chemin du [Mode] → ligne 25 : $commande=‹ #[Extérieur][Poubelle][ ›.$EvtName.‹ ]# ›;
    chemin du [Mode] → ligne 38 :$commande=‹ #[Extérieur][Poubelle][Aucune]# ›;
$id=385; //ID du calendrier

$events=[];
$Isevent=0;

$calendar=eqLogic::byId($id);

if(isset($calendar)) {
	$events=$calendar->getEvents();
}

if(isset($events) && is_array($events) && count($events)>0) {
	foreach ($events as $event) {
      $EvtName = str_replace("Poubelle ","",$event->getName());
      $EvtDate = date('Ymd' ,strtotime($event->nextOccurrence('start')));

      $origin = mktime ();
      $target = strtotime($event->nextOccurrence('start'));
      $interval = ($target-$origin)/60/60;
      
      $scenario->setLog(date("d/m/Y - h:i" ,$target).' --> '.$EvtName.' --> '.$origin.'/'.$target.' (Dans '.$interval.' heure(s))');
      
      if($interval <= 30 && $interval > 6)
      {
      	$commande='#[Extérieur][Poubelle]['.$EvtName.']#';
        $cmd = cmd::byString($commande);
        $cmd->execCmd();
        $Isevent = 1;
        
        $scenario->setLog('Changement Mode --> '.$commande);
        $scenario->setData('Poubelle_Couleur', $EvtName);
      }
	}
}

if($Isevent == 0)
{
  $commande='#[Extérieur][Poubelle][Aucune]#';
  $cmd = cmd::byString($commande);
  $cmd->execCmd();
  
  $scenario->setLog('Changement Mode --> Aucune');
  $scenario->setData('Poubelle_Couleur', "Aucune");
}

$scenario->setData('Poubelle_IsEvent', $Isevent);

Vous pouvez ensuite lancer ce que vous voulez en utilisant la condition : variable(Poubelle_IsEvent) == 1 et un bloc A pour définir l’heure d’execution la veille.

Résultat :

  • J’affiche sur ma tablette murale en permanence la veille :
    image

  • Je lance un rappel Telegram à 20h

  • J’affiche sur le Google Hub du salon un rappel à 20h : (Cast d’un design contenant la Commande [Mode] avec zoom x10) :

Merci de ta contribution.

Juste pour info il y a un excellent plugin qui viens de sortir qui fait vraiment bien le job …

le fil est ici: Nouveau plugin : My Bin - #167 par Bison

Effectivement c’est une belle avancée l’arrivée de ce plugin, mais il ne gère pas mes cas de ramassage.

Le planning est très spécifique pour les ramassages les semaines où il y a des jours fériés (fourni par la ville 1 fois par an) :

Ca viendra peut-être dans une version future … :wink:

Ben si pour les cas très spéciaux tu a cette option :wink:

Capture d’écran du 2021-03-10 11-26-42

Oui cela permet de rajouter des jours, mais ne permet pas d’en enlever.

Pour les calendriers tordus, les dates peuvent être ajoutées par scénario.