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 :
- le plugin Agenda
- le plugin Mode
- le Widget Icon_Mode : https://jealg.github.io/documentation/widget/fr_FR/WIDGET_d_Icon_Mode.html (suivre la notice pour la mise en place)
- le script personnalisé si dessous
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 :
-
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) :