Scénario choix multiple

Bonjour à tous,

Cette question a surtout un but d’exercice, de défi « comment faire…? » sans faire un scénario de 3 pages.

J’ai installé des capteurs d’ouverture sur plusieurs fenêtres, dans plusieurs pièce.
Mon objectif est de faire un scénario, lorsque j’éteins la tv le soir, qui va me dire, via google home, si j’ai oublié de fermer une fenêtre, et laquelle…ou lesquelles…

Exemple :
tout est fermé : pas de message
1 ouvert : Attention, la fenêtre de la cuisine est ouverte
2 ouverts : Attention, la fenêtre de la cuisine et la fenêtre du salon sont ouvertes

Je l’ai fait pour 3 fenêtres, en imbriquant des SI et cela fonctionne très bien.
Je me pose maintenant la question de « comment faire… » si j’augmente le nombre de capteurs à 5, 6…10…? est ce que vous voyez une façon simple de construire mes phrases ?

Bonne journée à tous :wink:

Hello,
Le plus simple est d’utiliser le plugin Alarme.
Tu crées une alarme avec une zone « TV » avec tous les capteurs que tu veux surveiller et tu définies un mode « TV ».

Lorsque tu éteins TV, tu armes ton alarme en mode TV, tous tes capteurs seront surveillés.

  • il est possible d’envoyer des alertes si des ouvrants sont mal fermés : avec le mot clé #trigger#, tous les ouvrants seront indiqués
  • il est possible d’envoyer plus tard des alertes lorsque les ouvrants mal fermés seront bien fermés.
  • et une fois que tous les ouvrants sont bien fermés, il est possible de désarmer l’alarme automatiquement.

C’est très facile de rajouter des capteurs…

1 « J'aime »

bonjour

à part en passant par une énumération des ouvrants via GENERIC_TYPE ou des commandes de type information d’un virtuel et une boucle en code php, je ne vois pas trop comment paramétrer ça sans ajouter des tonnes de SI à la suite les uns des autres…

personnellement j’ai opté pour la boucle sur un virtuel, car je ne veux pas tester certaines portes qui doivent rester ouvert à l’intérieur de la maison.

1 « J'aime »

Ca ne répondra pas à ta demande d’exercice mais le plugin groupe gratuit pourrait te rendre service.

Hello, une piste qui pourrais t’aider,
https://www.ladomopratique.com/jeedom-scenario-etat-des-ouvrants-et-lumieres/

Cordialement,

Mathieu

1 « J'aime »

Lo,

Tu peux créer un scénario de ce type (cf screen en dessous) dans lequel tu crées deux tag,
Tu incréments tes tags pour à la fin du scénario appeler ton centre de notification et identifier tes ouvrants ouverts ou pas,

Au plaisir, bonne soirée,

1 « J'aime »

Bonjour,

Ca ne réponds pas a ta question, mais si le but, c’est de fermer tous les volets roulants, tous les soirs, et quelques soit la situation, alors pourquoi passer par Google Home pour te prévenir qu’un volet roulant n’est pas fermé ? Tu crées directement un scénario qui ferme les volets après l’extinction de la TV après une certaine heure…

Je pense que c’est pour le fun que tu souhaites avoir un retour vocal de Google Home. Si c’est le cas, tu vas t’apercevoir par la suite, que pour avoir une domotique bien huilé, il faut éviter le fun et se concentrer sur l’essentiel.

Sinon, je pense que la solution avec le plugin Alarme ou le plugin Groupe précédemment énoncé sont une bonne solution.

Merci à tous pour vos retours.

L’idée était de savoir, quand je vais au lit, si les fenêtres sont bien fermés (surtout en été bien sur…).
Mes volets et tout le reste sont déjà automatisé.

Avoir un retour qui m’avertis si une fenêtre est ouverte, lorsque j’éteins la TV, ça, c’était déjà OK.
Le jeu ici, c’était d’avoir la liste de ce qui est resté ouvert, énoncé par Google, en « bon » français : donc avec un « et » à la fin de l’énoncé des différentes fenêtre (sauf s’il n’y en a qu’une bien sur).

En reprenant l’article de m_arth, j’ai réussi a adapter le code pour y parvenir. Maintenant c’est tout bon. Madame adore savoir qu’elle a oublié de fermer la fenêtre de la cuisine, plutôt que de reparcourir toutes les pièces avant d’aller au lit :wink:

// Équipements catégorie security
$cat = eqLogic::ByCategorie('security');
	//On récupère les équipements de la catégorie security
	foreach($cat as $i){
	//On récupère les commandes des équipements security (tableau)
	$cmdtab = cmd::byEqLogicId($i->getId());
		//On cherche les commandes de la catégorie security
		foreach($cmdtab as $cmd){
			//On garde seulement les commandes Ouverture
			if($cmd->getName() == "Etat"){
			//On récupère le nom entier de l'équipement
			$human = $i->getHumanName();
			//On reconstitue la commande avec le nom entier + état
            $cmd = cmd::byString('#' . $human . '[' . $cmd->getName() . ']#');
			//On récupère le statut de la commande.
			$statut = $cmd->execCmd();
            $a=0;
				//On sépare les fenêtres ouvertes 1 et fermées 0
				if ($statut == 1){
					//On affecte la variable messageOpen avec l'objet pour les fenêtres ouvertes.
                  	if (empty($messageOpen)) {
					$messageOpen = substr($human,19,-1);
					} else 
                    {
					//A partir du 2nd élément ouvert j'ajoute les messages les uns après les autres.
					$messageOpen = $messageOpen.', '.substr($human,19,-1);
                    $dernier_message = substr($human,19,-1);
                    $longueur_dernier_message = strlen(substr($human,19,-1))+2;
                    $a=1;
                    }
				} 
			}
		}
	}
//On enlève le dernier éléments, pour ajouter "et" avant de le remettre
if ($a == 1){
  $messageOpen = substr($messageOpen,0,-$longueur_dernier_message);
  $messageOpen = $messageOpen.' et '.$dernier_message;
}
//On formate les messages si les variables ne sont pas vides
if ( !empty($messageOpen)) { $message = $messageOpen.'.'; }
//On log le message pour avoir une trace
$scenario->setLog($message);
//On affecte le message à une variable "Ouvrants" pour pouvoir l'utiliser dans un mail, TTS, SMS
$scenario->setData('Ouvrants',$message);
1 « J'aime »

Merci, mais ce n’est pas mon code, rendons à César ce qui est à César.
:wink:

Donc, merci à Guillaume de Domo Pratique.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.