- Nom du scénario : Date Absence arret ballon eau chaude - Objet parent : Ballon Eau Chaude - Mode du scénario : provoke - Evènement : #[Maison][Mode Présence][Mode]# CODE (code) // Récupère la valeur actuelle du mode présence $modePresence = cmd::byString('#1251#')->execCmd(); // Log du mode présence log::add('scenario', 'info', "Valeur du mode présence : $modePresence"); // Timestamp de début = maintenant $startTimestamp = time(); /* * ========================= * MODE ABSENCE LONG (Présence = Non) * ========================= */ if ($modePresence == "Non") { // Fin = +21 jours $endTimestamp = $startTimestamp + (21 * 24 * 60 * 60); $modeLabel = 'ABSENCE LONGUE (21 jours)'; /* * ========================= * MODE ABSENCE COURT (Présence = Oui) * ========================= */ } elseif ($modePresence == "Oui") { // Fin = +20 secondes $endTimestamp = $startTimestamp + 20; $modeLabel = 'ABSENCE COURTE (20 secondes)'; } else { log::add('scenario', 'info', "Valeur du mode présence inconnue → aucune action"); return; } // Dates lisibles $startReadable = date('d/m/Y H:i:s', $startTimestamp); $endReadable = date('d/m/Y H:i:s', $endTimestamp); // Stockage scénario (optionnel mais utile) $scenario->setData('away_start_timestamp', $startTimestamp); $scenario->setData('away_end_timestamp', $endTimestamp); $scenario->setData('away_start_readable', $startReadable); $scenario->setData('away_end_readable', $endReadable); // Message attendu par la commande $cmdMessage = "[$startTimestamp,$endTimestamp]"; // Envoi vers le ballon cmd::byString( '#26276#' )->execCmd([ 'message' => $cmdMessage ]); // Logs finaux log::add('scenario', 'info', $modeLabel); log::add('scenario', 'info', "Début : $startReadable ($startTimestamp)"); log::add('scenario', 'info', "Fin : $endReadable ($endTimestamp)"); log::add('scenario', 'info', "Commande envoyée : $cmdMessage");