[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) :

2 « J'aime »

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

1 « J'aime »

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.

1 « J'aime »