Noter aussi l’id de l’agenda il sera aussi nécessaire pour le scénario
Scénario :
Bloc code
$tags = $scenario->getTags(); //récupère la liste des tags
(empty($tags['#id#'])) ? $tags['#id#'] = 0 : null;
(empty($tags['#event#'])) ? $tags['#event#'] = '' : null;
(empty($tags['#start#'])) ? $tags['#start#'] = '' : null;
(empty($tags['#end#'])) ? $tags['#end#'] = '' : null;
$tags['#erreur#'] = 0;
$scenario->setLog('┌─────────────────── DEBUT BLOC CODE ─────────────');
$eqLogic = eqLogic::byId($tags['#id#']);
function dateIsValid($date){
if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/",$date)) return true;
return false;
}
if(is_object($eqLogic)) {
if (!dateIsValid($tags['#start#']) || !dateIsValid($tags['#end#'])) {
$scenario->setLog('| Le Format de date de début ou de fin n\'est pas valide !!!');
$tags['#erreur#'] = 1;
} else {
if ((strtotime($tags['#start#']) + 59) >= strtotime($tags['#end#'])) {
$scenario->setLog('| La date de début d\'évènement ne peut être postérieure ou égale à la date de fin');
$tags['#erreur#'] = 1;
}
else
{
$events = $eqLogic->getEvents();
$occurence = 0;
foreach ($events as $event) {
if ($event->getCmd_param('eventName') == $tags['#event#']) {
$occurence++;
$event->setStartDate($tags['#start#']);
$event->setEndDate($tags['#end#']);
$event->save();
$scenario->setLog('| Modification de l\'évenement portant l\'id ' .$event->getId());
}
}
if ($occurence == 0) {
$scenario->setLog('| L\'évenement "' . $tags['#event#'] . '" n\'a pas été trouvé !');
$tags['#erreur#'] = 1;
}
}
}
}
else {
$scenario->setLog('| Id de l\'équipement invalide !!! ');
$tags['#erreur#'] = 1;
}
$scenario->setTags($tags);
$scenario->setLog('└──────────────────────────────────────────────────────');
Utilisation
Le scénario doit être appelé avec 4 tags
id : id de l’agenda
event : nom de l’événement
start : date/heure du début de l’évènement au format YYYY-MM-DD HH:MM:SS
end : date/heure de fin de l’évènement au format YYYY-MM-DD HH:MM:SS
Evidemment si le scénario est dédié qu’a un seul événement pour un seul agenda, ces tags peuvent être écrit directement dans le scenario avant le bloc code :
Le bloc code contient des logs, ainsi que certaines vérifications :
vérifie si l’id est existant.
vérification du bon format des dates.
vérifie la cohésion des dates (end > start)
vérifie si l’événement existe bien.
Si une de ces vérifications échoue, l’agenda ne sera pas modifié.
Il est aussi possible de récupérer le bon fonctionnement du scénario en vérifiant le tag(erreur)
Merci pour ton aide tout cela marche parfaitement !
J’ai testé sur un agenda, l’événement est créé et le log renseigné. Il faut maintenant que je le mette en place avec le thermostat dans mon contexte mais il n’y a plus aucune difficulté pour ça.
Je pense que ce morceau de code sera utile à d’autre.
Encore merci beaucoup d’avoir pris de ton temps pour m’aider.