Arreter tout les scenarios d'un groupe de scenario

Non, comme je disai, cela ne marchera pas. Il faut arreter le/les scenario(s) en cours, puis, envoyer un stop à tout les volets …

Mais j’ai compris ce que tu voulais dire :wink:

Arrêter un scénario stop l’exécution du scénario en cours.

Bah j’espère que oui :grinning:

→ Je viens d’essayer et ça marche…

J’ai fait le test aussi :slight_smile:
Ca répond à votre besoin alors :wink:

Hmm il manque la notion de groupe …

Il faut refaire un scenario, qui arrete le(s) scenario(s), ajouter un « stop » pour chaque ouvrant, creer un commande vocal (« arrete les volets » par exemple)

Je pourrais aussi le rajouter en debut de tout les scenarios deja existant pour eviter la problematique d’un lancement (par erreur) de deux scenario qui entrerait en collision (ouvrir tout les volets puis fermer tout les volets)

Le probleme dans tout ca ? le faire … :rofl::rofl::rofl:

Scénario avec script pour arrêter tous les scénarios d’un groupe de scénario

pour arrêter un scenario on peut faire

$scenario = scenario::byId(ID);
$scenario->stop();

en adaptant ce que vous trouverez ici, ça devrait fonctionner.

Oula, c’est pas plus compliqué que la solution précédente ? :rofl:

un scénario qui arrête tous un groupe de scénario :slight_smile:
C’est votre demande non :wink:

Non, la demande était de savoir s’il existait une fonction dans scénario pour piloter un groupe de scénario

=> Cela n’existe pas

Pour pallier à ce manque, il y a plusieurs solutions dont le réglage de scripts, la création d’un scénario qui arrête d’autre scénario, un réglage via les tags, j’imagine qu’on peut faire des truc avec des variables aussi …
Bref

Je trouve que le scénario qui pilote l’arrêt des autres scénario me paraît plus simple à mettre en oeuvre.
Mais il faut avouer que je ne suis pas très à l’aise avec les tag, les scriptes, les variables etc …

Une montée en compétences dans ces domaines me ferai du bien :rofl::rofl::rofl:

Je voulais parler du titre de votre post :slight_smile:

Arreter tout les scenarios d’un groupe de scenario

Pas fait de code depuis longtemps,

mais à priori (pour un groupe du nom VOLET) :

Bloc code dans un scénario « Arrêt des scénarios du groupe VOLET »

$GroupeName = "VOLET";
$scenario->setLog("Groupe : " . $GroupeName);
$Groupes = $scenario::all($GroupeName);

foreach($Groupes as $Groupe)
{
    $Name = $Groupe->getName();
  	$State = $Groupe->getState();
    $scenario->setLog("Scénario: " . $Name . "| Statut = " . $State);
	If ($State != "stop"){
    	$Groupe->stop();
      	$scenario->setLog("Arrêt du scénario");
    }
}

Test ok

3 « J'aime »

J’ai testé le code, en modifiant le nom du groupe « VOLET » en « Volets » (le nom exact de mon groupe)
J’ai une erreur suite au lancement du scenario, mais rien dans les logs

Ce qui est étonnant, c’est que si je laisse le nom « VOLET », ca m’indique "

[2022-12-22 17:24:11][SCENARIO] Exécution d'un bloc code 
[2022-12-22 17:24:11][SCENARIO] Groupe : VOLET
[2022-12-22 17:24:11][SCENARIO] Fin correcte du scénario

Alors la, je suis perdu !


EDIT

Je suis vraiment ***, j’ai mis le fameux scenario en question dans le groupe VOLETS, et du coup, il n’aimait pas! Ce qui en soit parait tellement logique!!!

Du coup, je l’ai sortie du groupe et ça marche parfaitement!
Un grand MERCI à toi @J2B

C’est mieux que de se taper toutes les lignes de commande de scenario (j’en ai 43 !!!)

:muscle:

Si je souhaite lancer le scenarion plutot que de le stoper, dois je changer le « stop » par « start » ?

$GroupeName = "Volets";
$scenario->setLog("Groupe : " . $GroupeName);
$Groupes = $scenario::all($GroupeName);

foreach($Groupes as $Groupe)
{
    $Name = $Groupe->getName();
  	$State = $Groupe->getState();
    $scenario->setLog("Scénario: " . $Name . "| Statut = " . $State);
	If ($State = "stop"){
    	$Groupe->start();
      	$scenario->setLog("Lancement du scénario");
    }
}

SI le scenario = stop, alors « start »
J’ai essayé mais ca marche pas. Des idées?

Start soumet vos scénarios à leurs conditions.
Regardez les logs.

ha, donc ce que vous voulez dire, c’est que START ne lance pas le scenario mais « questionne » les déclencheur ?

Non, start lance bien les scénarios, mais en équivalent d’un lancement manuelle.

S’ils sont soumis à des conditions , exemple : SI nuit == 1, alors le scénario s’arrête ici, si ce n’est pas la nuit (logique).

Il faut regarder le contenu des logs de vos scénarios pour comprendre pourquoi ils ne se comporte pas comme vous l’imaginez.

[2022-12-23 11:54:24][SCENARIO] -- Start : Scenario lance manuellement.
[2022-12-23 11:54:24][SCENARIO] - Exécution du sous-élément de type [action] : code
[2022-12-23 11:54:24][SCENARIO] Exécution d'un bloc code 
[2022-12-23 11:54:24][SCENARIO] Groupe : Alarme
[2022-12-23 11:54:24][SCENARIO] Scénario: ALARME ON| Statut = stop
[2022-12-23 11:54:24][SCENARIO] Call to undefined method scenario::start()
[2022-12-23 11:54:24][SCENARIO] Fin correcte du scénario

en ayant fait ca:

$GroupeName = "Alarme";
$scenario->setLog("Groupe : " . $GroupeName);
$Groupes = $scenario::all($GroupeName);

foreach($Groupes as $Groupe)
{
    $Name = $Groupe->getName();
  	$State = $Groupe->getState();
    $scenario->setLog("Scénario: " . $Name . "| Statut = " . $State);
	If ($State = "stop"){
    	$Groupe->start();
      	$scenario->setLog("Lancement du scénario");
    }
}

L’idée etant de lancer tout les scenarios du groupe alarme

Je ne comprends pas votre envie de faire ainsi. Si tous les scénarios doivent être déclenchés en même temps, pourquoi ne pas avoir un déclencheur commun pour ces scénarios.

C’est une solution oui.
Mais pourquoi mon code ne fonctionne pas ?

Visiblement un erreur dans un bloc code .
Regardez bien le log du scénario.

Oui j’ai bien vue

Call to undefined method scenario::start()