Bonjour,
Je suis en train de paramétrer Jeedom dans une salle des fêtes. Les réservations se font via le plugin Agenda (ou pourraient se faire via un agenda google classique)
Lors de la présence d’un évènement en cours détecté avec un scénario je bascule automatiquement en mode présence qui ajuste en température de confort la consigne du thermostat. Mais je dois anticiper le chauffage afin d’avoir atteint la température de consigne en début d’évènement.
J’ai tenté d’utiliser la fonction smart-start du plugin thermostat mais je ne parviens pas à l’utiliser probablement suite à un mauvais paramétrage, il me semble complexe. Je gère donc le chauffage via un thermostat « Do It Yourself » à l’aide de scénarios qui fonctionne parfaitement.
Mon objectif à présent est de collecter la date et heure du prochain évènement dans le plugin Agenda à partir de maintenant.
1°) J’ai commencé par tester ce code php dans un scénario :
$id=42; // référence de mon calendrier
$calendar=eqLogic::byId($id);
$scenario->setLog("Calendrier :".$id);
if(isset($calendar))
{
$events=$calendar->getEvents();
} foreach ($events as $event)
{
$scenario->setLog("Evenement ".$event->getName());
}
$scenario->setLog($event->nextOccurrence('start'));
$scenario->setData('VAR_TEST', $event->nextOccurrence('start'));
Qui a pour résultat :
[2023-12-18 22:06:08][SCENARIO] -- Start : Scenario lance manuellement.
[2023-12-18 22:06:08][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-12-18 22:06:08][SCENARIO] Exécution d'un bloc code
[2023-12-18 22:06:08][SCENARIO] Calendrier :42
[2023-12-18 22:06:08][SCENARIO] Evenement Créneau1
[2023-12-18 22:06:08][SCENARIO] Evenement Créneau2
[2023-12-18 22:06:08][SCENARIO] Evenement Créneau3
[2023-12-18 22:06:08][SCENARIO] 2023-12-21 06:30:00
[2023-12-18 22:06:08][SCENARIO] Fin correcte du scénario
Je n’obtiens pas la date et heure pour le prochain evenement de l’agenda mais pour le dernier.
2°) J’ai rajouté la ligne break pour récupérer la première saisie
$id=42; // référence de mon calendrier
$calendar=eqLogic::byId($id);
$scenario->setLog("Calendrier :".$id);
if(isset($calendar))
{
$events=$calendar->getEvents();
} foreach ($events as $event)
{
$scenario->setLog("Evenement ".$event->getName());
Break;
}
$scenario->setLog($event->nextOccurrence('start'));
$scenario->setData('VAR_TEST', $event->nextOccurrence('start'));
j’ai obtenu la date et heure du prochain scénario
[2023-12-18 22:10:04][SCENARIO] -- Start : Scenario lance manuellement.
[2023-12-18 22:10:04][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-12-18 22:10:04][SCENARIO] Exécution d'un bloc code
[2023-12-18 22:10:04][SCENARIO] Calendrier :42
[2023-12-18 22:10:04][SCENARIO] Evenement Créneau1
[2023-12-18 22:10:04][SCENARIO] 2023-12-19 06:30:00
[2023-12-18 22:10:04][SCENARIO] Fin correcte du scénario
3°) En testant avec un évènement dans le passé, le code ci-dessus donne plus satisfaction car je constate que le système prend en compte le premier évènement du calendrier mais pas le prochain évènement à partir de maintenant
Il me collecte le premier évènement du calendrier que j’ai positionné dans le passé pour ce dernier test avec l’impossibilité pour le système de récupérer la date et heure de cet evenement.
[2023-12-18 22:12:51][SCENARIO] -- Start : Scenario lance manuellement.
[2023-12-18 22:12:51][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-12-18 22:12:51][SCENARIO] Exécution d'un bloc code
[2023-12-18 22:12:51][SCENARIO] Calendrier :42
[2023-12-18 22:12:51][SCENARIO] Evenement Créneau1
[2023-12-18 22:12:51][SCENARIO]
[2023-12-18 22:12:51][SCENARIO] Fin correcte du scénario
Pourriez-vous me guider svp pour la mise à jour du code afin de récupérer la date et heure du prochain évènement à partir de maintenant ?
Merciiiiii