J’ai une question qui somme-toute est assez simple à formuler, mais à laquelle je n’arrive pas à trouver de reponses.
J’ai une dizaine d’equipements (des vannes thermostatiques pilotées via zigbeelinker) pour lesquels je souhaite en milieu de nuit (re)pousser une conf standard après que ma femme et mes enfants aient tout tripotés en journée !
du coup, j’imagine une boucle avec les commandes et le nom de l’équipement en paramètre et qui passe sur l’ensemble de mes equipmeents, type:
pour [nomEquipement] dans #[cuisine][vanne]# #[salon][vanne]# #[chambre1]vanne]# …
#[nomEquipement][consigne]# == 17°C
#[nomEquipement][mode]# == manuel
…
fin pour
Mais est-il possible de faire quelquechose comme ceci pour s’eviter de mettre à la suite toutes les commandes pour tous les équipements, avec tous les risques d’erreur et le sdifficultés de maintenance associées ?
Bonjour @mich0111
Merci pour cette proposition, mais le plugin groupe ne gère que les commandes on/off/état, donc valable pour des lumières ou prises, mais c’est tout.
Norbert
Voila, ça devrait donner ça et à poursuivre avec tes autres commandes une le fonctionnement validé.
// Le scénario appelant doit passer un tag baseCommande=[cuisine][vanne]
$tags = $scenario->getTags(); // Récupération des tags
$baseCommande = $tags['#baseCommande#']; // enregistrement d'une variable contenant la base de la commande transmise du scénario appelant
$scenario->setLog('#'.$baseCommande.'[consigne]# à 17°c');
cmd::byString('#'.$baseCommande.'[consigne]#')->event('17'); // Consigne à 17
$scenario->setLog('#'.$baseCommande.'[mode]# en manuel');
cmd::byString('#'.$baseCommande.'[mode]#')->event('manuel'); // Mode en manuel
c’est un peu ce que je fais pour « simuler » un état sur mes volets, puisque je n’ai pas de retour d’état.
Le scénario reçoit 2 infos : le volet et la valeur qu’il doit prendre.
si le volet est ‹ rdc › ou ‹ etage ›, alors je considère que je dois mettre à jour tout un ensemble de volets, donc je créé une liste des volets à maj.
Puis je boucle sur les éléments à mettre à jour avec la valeur attendue.
Grand merci @bison et @tomitomas,
Grce à vos exemple, j’ai écrit ce script … c reste très abstrait pour moi, mais ca à l’air de fonctionner !!!
$baseCommandeMOES = array('[CH Anna][Vanne]','[CH Léonie][Vanne]','[CH Marie][Vanne]','[Cuisine][Vanne]','[Salon][Vanne 1]','[Salon][Vanne 2]','[CH Parents][Vanne]');
$baseCommandeEUROTRONIC = array('[SdB Filles][Vanne]','[SdB Parents][Vanne]','[Hall Entrée][Vanne]','[Hall Chambres][Vanne]');
$modeSaison = cmd::byString('#[Appartement][Chauffage - Saison][Mode]#')->execCmd();
if ( $modeSaison == 'Hiver' ) { // Si mode Hiver
$scenario->setLog('Forcage des valeurs, mode Hiver');
foreach ($baseCommandeMOES as $item) {
$scenario->setLog('Forcage équipement MOES : '.$item);
cmd::byString('#'.$item.'[Mode du système : auto]#')->execCmd(); // En Hiver, forcage du mode auto
cmd::byString('#'.$item.'[Debloquer]#')->execCmd(); // deverouillage de la vanne
cmd::byString('#'.$item.'[Forcer]#')->event('normal'); // Forcage du mode normal (gestion de la consigne plutot que tout ouvert ou tout fermé)
cmd::byString('#'.$item.'[Manuel]#')->execCmd(); // forcage du mode manuel
}
foreach ($baseCommandeEUROTRONIC as $item) {
$scenario->setLog('Forcage équipement EUROTRONIC : '.$item);
cmd::byString('#'.$item.'[Mode du système : auto]#')->execCmd(); // En Hiver, forcage du mode auto
cmd::byString('#'.$item.'[Mode de contrôle]#')->event('2'); // Forcage du mode normal (gestion de la consigne plutot que position de vanne)
}
}
Else {
$scenario->setLog('Forcage des valeurs, mode Eté');
foreach ($baseCommandeMOES as $item) {
$scenario->setLog('Forcage équipement MOES : '.$item);
cmd::byString('#'.$item.'[Mode du système : off]#')->execCmd(); // En Ete, forcage du mode Off
}
foreach ($baseCommandeEUROTRONIC as $item) {
$scenario->setLog('Forcage équipement EUROTRONIC : '.$item);
cmd::byString('#'.$item.'[Mode du système : off]#')->execCmd(); // En Ete, forcage du mode Off
}
}