Après m’être inspiré du très bon tuto de Sarakha63, pour mettre à jour les scénarios de réveil depuis Tasker (Android).
Je suis parti dans l’optique de modifier les schedules de mes scénarios du matin (tous différents - Ambiance hue et music) plutôt que de partir sur la mise à jour d’un virtuel. Voici mon bloc Code commenté :
$id = '112,111'; # Les ID des scénarii ciblé séparateur ","
$tags = $scenario->getTags(); #Récupérartion des tags de ce scénario
$montag = $tags['#rev#']; #Affectation du tag rev à la variable => montag doit être au format HH:mm (c'est le format d'export de Tasker qui peut être inclu dans le get http)
$h = substr($montag, 0, 2); #Récupération de l'heure (les 2 premiers caractères)
$m = substr($montag, 3,2); #Récupération des minutes (les 2 caractères après le 3éme digit)
$scenario->setLog($h .' '. $m); #Ecriture des deux nouvelles variables dans le log du scénario
$scenario->setLog('Récupération du tag : ' . $montag); #Ecriture du tag dans le log pour comparaison en cas de debug
$array = explode(",", $id);#Ajout de la string $id dans une variable tableau
foreach ($array as $i) { #Défition de la boucle en fonction du nombre d'ID déclaré
$valeur = $scenario::byId($i); #Affectation de la variable objet $valeur par l'ID dans la boucle
if (is_object($valeur)) { #Vérification de l'objet $valeur
if ($valeur->getMode() != 'schedule') { #et de sont mode de déclenchement
$valeur->setMode('schedule') ; #Passe le mode déclenchement en mode programation
};
$Schedule = $valeur->getSchedule(); #Récupération de la programation existante
$lenStr = strlen($Schedule); # Récupération de la longeur des données Cron
$scenario->setLog('Ancien Cron : ' . $Schedule); #Ecriture de l'ancien Cron
$finStr = substr($Schedule, 4, $lenStr); #Récupérartion des Cron après HH mm (attention si format différent (ex : * * -> bug
$NewSchedule = ($h . ' ' . $m . ' ' . $finStr); #Implémentation du nouveau Cron
$valeur->setSchedule($NewSchedule); #Affectation du nouveau cron au scénario traité dans la boucle
$valeur->save(); #Sauvegarde du scénario traité dans la boucle
$Schedule = $valeur->getSchedule(); #Récupérartion du nouveau cron
$scenario->setLog('Nouveau Cron : ' . $Schedule); #Ecriture du nouveau cron dans la log pour debug
};
};