Nom action dynamique


#1

Bonjour

J’avance dans ma découverte de Snips avec Jeedom et je me posais la question des noms dynamiques.

En effet, j’ai plusieurs pièces dans ma maison et je souhaite éviter si c’est possible, de faire un bloc de scénario ou un binding par pièce.

Par exemple si je demande : “quelle est la température du salon” pouvoir aller chercher [salon][température]

Quelque chose dans ce goût là est-il déjà implanté ou prévu ?

Aussi deuxième petite question, il y a une différence à passer par les scénario jeedom plutôt que les binding ?

Merci pour votre aide.


#2

Je ne sis pas si ça va répondre à ta demande mais tu peux faire quelque chose comme ça par exemple

Dans l’intent jeedom tu fais ceci (Ici pour le TurnOnJeedom)

Et dans le scénario quelque chose comme ça

Comme tu le vois je test quelle pièce est passé en paramètre, si je n’en passe pas alors je récupère l’id du satélite (donc j’ai donner un nom de pièce) de ce fait si je dis “met de la musique” au satélite qui est dans la
cuisine il me met de la musique dans cette pièce, si je suis dans le salon et que je lui dis “met de la musique dans la cuisine” alors la il detecte cuisine et allume bien mon enceinte dans la cuisine et non pas cette du salon.

Perso je fais un scénario par intent complémentaire (TurnOnJeedom et TurnOffJeedom)

Je penses que tu as aussi ta réponse à la 2ème question, tu as plus de possibilité par scénario que par bindings, ceux-ci sont plus limité en action je dirais. De plus une fois que tu as attaché un scénario a l’intent directement, c’est bon tu n’a plus qu’a gérer un seul scénario


#3

Merci d’avoir pris le temps d’expliquer ton utilisation. Effectivement sa répond à ma deuxième question.

Cependant la première question reste en suspens, en effet tu test chaque pièce, j’aimerais que cela soit dynamique.

Par exemple mes équipements sont tous de la forme [piece][sonde][température] du coup plutôt que de dire :

  • si salon alors: [salon][sonde][température]
  • si cuisine alors: [cuisine][sonde][température]
    etc…

J’aimerais que sa soit dynamique genre [{#}][sonde][température] avec {#} = house_room mais cette notation fonctionne pas.


#4

Oui en effet mais la c’est plutôt côté jeedom qu’il faut voir, si il est possible de récupérer quelque chose a passer

As tu essayer dans un scenario (comme dans mon exemple, d’appeller quelque chose comme ca

#[variable(snips_house_room) ][sonde][temperature]#

On ne sait jamais :laughing:


#5

Fonctionne pas malheureusement :frowning:

J’obtiens la bonne commande littéralement parlant mais pas la valeur


#6

Il va peut être falloir passer par un bloc script qui doit pouvoir permettre plus de chose


#7

@Hydro un petit copier coller de la doc jeedom qui en théorie me semble prometeuse :slight_smile:

Bloc Code

Important

Attention les tags ne sont pas disponibles dans un bloc de type code.

Commandes (capteurs et actionneurs):

  • cmd::byString($string); : Retourne l’objet commande correspondant.
  • $string : Lien vers la commande voulue : #[objet][equipement][commande]# (ex : #[Appartement][Alarme][Actif]#)
  • cmd::byId($id); : Retourne l’objet commande correspondant.
  • $id : ID de la commande voulue
  • $cmd->execCmd($options = null); : Exécute la commande et retourne le résultat.
  • $options : Options pour l’exécution de la commande (peut être spécifique au plugin), option de base (sous-type de la commande) : - message : $option = array(‘title’ => ‘titre du message , ‘message’ => ‘Mon message’); - color : $option = array(‘color’ => ‘couleur en hexadécimal’); - slider : $option = array(‘slider’ => ‘valeur voulue de 0 à 100’);

Il doit y avoir moyen de récupérer les infos de snips et d’utiliser cela pour déclancher ce que tu veux, oui c’est un peu plus capilotracter :slight_smile:

Et un petit exemple sur le forum surement plus explicite : https://www.jeedom.com/forum/viewtopic.php?t=20037


#8

Haha merci @Tarlak !!

Voici mon code final si sa intérèsse quelqu’un :

$array = array("salon" => "le");
$piece = $scenario->getTags()['#house_room#'];
$scenario->setLog("la piece est " . $piece);
if(isset($array[$piece])){
    $article = $array[$piece].' '.$piece;
}else{
    $article = "la ".$piece;
}
$action = "#[".$piece."][sonde][Température]#";
$cmd = cmd::byString($action);
$value = $cmd->execCmd();
$scenario->setData("test", $value);
$scenario->setData("article", $article);

On peut même rajouter le nom de la commande en dynamique (température ou humidité)


#9

Bonne nouvelle :+1:

Tu vas pouvoir t’amuser


#10

Une raison pour laquelle tu n’utilises pas ce genre de code ?


#11

Je n’en ai pas l’utilité pour le moment car le seul équipement que j’ai en double c’est mes sonos :yum: