Créer une action avec condition

Hello,
Je cherche a créer une action virtuelle avec une condition.
en fait je souhaite que mes volets ne s’ouvrent, via google smarthome, que si quelqu’un est à la maison.
pour cela je suis en train de créer un virtuel avec les commandes up (et position plus tard) de mes volets.
mais je ne saisi pas bien comment le faire, je crois comprendre via plusieurs messages ici même que c’est censé être supporté mais je n’y arrive pas.
si je mets (#[Maison][Présence][Presence]# == 1) ? '#[RDC][Volet cuisine][Up]#' dans mon action ca ne fait rien.
est-ce qu’il y a une doc quelque part sur le fonctionnement de ces tests ternaires, je ne trouve rien de probant?
Merci d’avance pour votre aide

Ça ne fonctionnera pas avec cette méthode.
Si tu souhaites mettre en place une condition d’ouverture, le mieux, ça reste le scénario.
Décrit ton besoin exact plutôt que ce que tu essaies de faire, c’est plus simple pour t’aider.

Norbert

Bonjour,

Je confirme que les expressions ternaire ne fonctionnent pas de cette façon et ne sont donc pas utilisablent pour une action.
Le principe est plutôt applicable à une commande info par exemple pour afficher ok ou ko suivant l’état de commande_test : commande_test == 0 ? ok : ko

Ce que tu veux faire nécessite au mieux d’empêcher l’ouverture des volets en les bloquant et au pire de les refermer dès que l’état du volet n’est plus « en bas ».

La 2eme possibilité se fait par scénario mais évidemment c’est pas l’idéal car le voleur aura le volet ouvert l’espace de plusieurs secondes.

La 1ere solution dépend de ce qui te permet d’ouvrir et fermer les volets.
Avec des Fibaro FGR-223 par exemple il est possible de lui donner un ordre pour qu’ils ne réagissent plus aux commandes RF (donc envoyées par le contrôleur Zwave). Dans ce cas il suffirait d’envoyer cet ordre à tout les modules volet au moment de passer en mode absence (toujours par scénario).

Merci pour vos retours,
je ne souhaite pas désactiver les volets, simplement empêcher google smarthome d’ouvrir un des volets si personne n’est détecté à la maison et je voulais éviter de passer par x scenarios pour cela mais s’il le faut je le ferais, ça sera juste plus lourd à gérer.
je ferais donc des virtuels qui appelleront des scenarios qui exécuteront ou non la commande en se basant sur la condition de présence.
Merci.

Bonjour,

Je pense qu’il faudrait simplement utiliser la config du plugin :wink:
Exemple:

Sinon un test ternaire (3), cela a 3 composantes:
(test) ? (result_if_true) : (result_if_false)

donc il manquait aussi la fin de l’expression :wink:
Mais non, comme déjà dit, cela ne fonctionne pas dans les commandes actions

1 « J'aime »

Bonjour à tous,

Je viens de découvrir grace à vos posts l’existence de « tests ternaires » dont je ne connaissais ni l’existence, ni la syntaxe.
Pouvez vous me donner des références documentaires pour que je puisse voir de quoi il s’agit et ce que ça peut apporter.

Merci par avance.

1 « J'aime »

Ah bha mdr :rofl:

Quand on utilise pas le plugin c’est plus dur d’aider, pas de doute.

Donc merci bien pour la capture :+1:

J’ai déjà donné la syntaxe, pour plus d’aide cherchez sur internet (notamment sur php.net) et vous trouverez des centaines d’explications, ce n’est pas un concept propre à jeedom.

C’est ce qu’on appelle un « sucre syntaxique », en anglais « syntaxic sugar », qui n’est qu’une forme courte, en une ligne, d’une expression qui existe par ailleurs, ici un test.
On peut assigner directement cela à une variable pour récupérer le résultat; c’est plus simple/rapide à lire.

Mode avancé

quand on a bien compris l’opérateur ternaire, il y a le « null coalescing » (que je ne traduirai pas) qui permet d’en fait encore simplifier ce dernier dans certain cas; exemple:

$result = $arr['valeur'] ?? 'aucun';

ok. Merci beaucoup. Je suis en train de me former en PHP, mais je n’avais pas encore rencontré ça§

Merci, je ne connaissais pas cette option.
Mais ça ne m’arrange pas, il n’y a pas que les volets que je pilote via GSH, et j’ai besoin de garder le reste actif pour pouvoir activer à distance ce dont j’ai besoin depuis mon tel via les raccourcis Google home.
je vais faire des scenarios, c’est pas énorme non plus, juste moins rapide.
pour info j’avais testé avec les 3 composantes, vu que la dernière ne me servait a rien j’ai essayé de la supprimer mais ca ne changeait rien.
j’ai pas eu l’occasion de tester, mais l’équivalent bash/ksh ( [test] && echo « ok » || echo « ko » ) peut se passer du || (ou même du &&) donc je m’étais dit que c’était pareil :wink:
Merci pour votre aide à tous en tout cas.

Il suffit de désactiver le virtuel si absence comme ça Google home ne pourra plus le déclencher.
( Action / équipement)

2 « J'aime »

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