Thermostat : à quelle heure passer en confort?

Je me suis peut-être mal exprimé, mais c’est bien ce que je veut dire dans mon message.
la nuance c’est que

tu as accès a la plage horaire que tu peut modifier dans l’évenement.
image

En revanche si tu utilise la cmd « Ajouter une date » dans un scénario :

tu peux ajouter seulement une date sans notion d’heure, car celle-ci est déja programmé dans ton événement :

C’est pourquoi, si besoin de toucher les heures par scénario, le seul moyen (pas testé) c’est de passer par un bloc code.

Pas moyen de créer un événement complet (date et heure) avec un scénario dans l’agenda ?

Si mais en utilisant un bloc code.

En dehors de mes compétences
C’est un peu le reproche que je ferai à Jeedom…toujours besoin d’un morceau de code ou de css,

Je post quand même une solution : :wink:

Agenda :

Créer un équipement et un Evènement

image
(1) le nom de l’événement, a retenir car il sera nécessaire pour le scénario


Ne pas activer la case de répétition et choisissez une date de début et fin (antérieur a la date actuelle) :


Ne pas oublier de renseigner l’action de début :

image



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 :
Log et verifications

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)

a placer après le bloc code :

image

1 « J'aime »

Pas de souci avec ça sauf que je ne sais pas coder. :frowning:

Justement, c’est bien pour sa que je propose une solution complète, juste a appliquer.
et si tu bloque quelque part, n’hésite pas a demander.

2 « J'aime »

Merci sur mon téléphone je ne voyais pas tout
Je fais un test demain et te dit
Merci beaucoup

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.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.