Bloc Code de ci de là

Bonjour,
Après plusieurs mois d’investigations et de mise en place.

Je vous propose quelques bloccode utils dans vos scénarios :

  • Tester si un scénario est en cours d’exécution :
$valeur = $scenario::byId("l'id de scénario ciblé");
$monScenar = $valeur->getName();
$Etat= $valeur->running();
if (empty($Etat)){
  $Etat = 0;}
$tags['#actif#'] = $Etat;
$scenario->setTags($tags);
  • Désactiver l’ensemble des Scénarios actifs, après avoir listé et sauvegardé ceux-ci dans une variable tableau (array), pour la réactivation automatique (voir ci-dessous)
$mesScenar=scenario::all();
$tags['#MonIC#'] = count($mesScenar);
$i = 0;
foreach ($mesScenar as $valeur) {  
  $id = $valeur->getId();
  $monScenar = $valeur->getName();
  $etat1 = $valeur->getIsActive();
  $etat2 = $valeur->running();
  if ($etat1 == 1){
    $i = $i+1;
    $array[] = $id;
    $valeur->setIsActive(0);
  	$valeur->save();
    $etat1 = $valeur->getIsActive();
	$scenario->setLog($i." Id : ".$id . " " . $monScenar . " Etat1 " . $etat1 . " Etat2 " . $etat2);}
};
$tags['#MonI#'] = $i;
$scenario->setTags($tags);
$scenario->setData('MonTab', $array);

Faire suivre dans le scénario, la réactivation des quelques scénarios indispensable (même en cas d’absence).

  • Puis réactiver les scénarios présents dans la variable tableau (ici MonTab)
$array = $scenario->getData('MonTab');
$i = 0;
$tags['#MonC#'] = count($array);
foreach ($array as $id) {  
  $valeur = $scenario::byId($id);
  $monScenar = $valeur->getName();
  $valeur->setIsActive(1);
  $valeur->save();
  $etat1 = $valeur->getIsActive();
    $i = $i+1;
	$scenario->setLog($i." Id : ".$id . " " . $monScenar . " Etat : " . $etat1);
};
//$tags['#MonI#'] = $array[1];
$scenario->setTags($tags);
  • Récupérer le nom unique du saint du jour (voir plugin domogeek) → utile pour un TTS matinale.
$value = cmd::byString('#[FreeBox][DomoGeek][Saint du jour]#')->execCmd();
$array = explode(",", $value);
$tags['#fete#'] = $array[0];
$scenario->setTags($tags);

A suivre …

4 « J'aime »

Je n’ai pas regardé dans le détail mais merci pour ce partage :sunglasses:

Bonne initiative !