Bloc Code - Modification des cron de programmation par un scénario

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
     };
};