Syntaxe plus simple pour ma commande

Bonjour,

Dans une condition d’un scénario j’utilise ce test:
#[Appartement 1003][The Cube][Appuis]# == 1002 || #[Appartement 1003][The Cube][Appuis]# == 1003 || #[Appartement 1003][The Cube][Appuis]# == 1004 || #[Appartement 1003][The Cube][Appuis]# == 1005 || #[Appartement 1003][The Cube][Appuis]# == 2001 || #[Appartement 1003][The Cube][Appuis]# == 2003 || #[Appartement 1003][The Cube][Appuis]# == 2004 || #[Appartement 1003][The Cube][Appuis]# == 2006 || #[Appartement 1003][The Cube][Appuis]# == 3001 || #[Appartement 1003][The Cube][Appuis]# == 3002 || #[Appartement 1003][The Cube][Appuis]# == 3005 || #[Appartement 1003][The Cube][Appuis]# == 3006 || #[Appartement 1003][The Cube][Appuis]# == 4001 || #[Appartement 1003][The Cube][Appuis]# == 4002 || #[Appartement 1003][The Cube][Appuis]# == 4005 || #[Appartement 1003][The Cube][Appuis]# == 4006 || #[Appartement 1003][The Cube][Appuis]# == 5001 || #[Appartement 1003][The Cube][Appuis]# == 5003 || #[Appartement 1003][The Cube][Appuis]# == 5004 || #[Appartement 1003][The Cube][Appuis]# == 5006 || #[Appartement 1003][The Cube][Appuis]# == 6002 || #[Appartement 1003][The Cube][Appuis]# == 6003 || #[Appartement 1003][The Cube][Appuis]# == 6004 || #[Appartement 1003][The Cube][Appuis]# == 6005

Est-ce qu’il existe une façon plus courte d’écrire la chose?
Genre:

#[Appartement 1003][The Cube][Appuis]# IN (1002,1003,1004,etc)

(Ici c’est pour détecter la rotation du cube Xiaomi)

Bonne journée
Vive Jeedom :yum:

1 « J'aime »

Je ne sais si le « matches » fonctionne pour le numérique
Si oui, ça simplifierait grandement l’écriture.
Tu pourrais faire ce que tu as écrit avec le « IN » en le remplaçant pas "matches* et séparer les valeurs par des /

bonjour via la fonction code des scénarios ? (language natif de programmation php)

J’ai pensé aux expressions régulières mais j’ai l’impression que ça fait les prendre à l’envers :upside_down_face:

tu mes en variable php l’exec

1003 == id 56;
1004== id 3;

cmd == Appartement 1003][The Cube][Appuis]# récup valeur
action valeur (qui est la variable php)

tu n’as plus d’evaluation.

j’essaierai un truc comme ça.« genre variable dynamiques »
https://www.php.net/manual/fr/language.variables.variable.php#116632

HS
si tu veux savoir en Xémé le temps dans ton scenario code
commence et fini par

$d = date('d-m-Y H:i:s'.substr((string)microtime(), 1, 8).' e');
$scenario->setLog($d); 

exemple poussé 30 lignes de code donnent

[2020-10-30 21:38:02][SCENARIO] 30-10-2020 21:38:02.8177510 Europe/Brussels
[2020-10-30 21:38:02][SCENARIO] sonde : [Salle a manger] température : [19.9] consigne : [20] temp_difftime : [47]
[2020-10-30 21:38:02][SCENARIO] sonde : [Cuisine] température : [20.3] consigne : [20] temp_difftime : [1451]
[2020-10-30 21:38:02][SCENARIO] sonde : [Chambre Ami] température : [15.8] consigne : [12] temp_difftime : [1531]
[2020-10-30 21:38:02][SCENARIO] chaudiere : 0
[2020-10-30 21:38:02][SCENARIO] 30-10-2020 21:38:02.9792180 Europe/Brussels

Tu peux réduire le nombre de test en faisant >= 1002 et <=1005 et aussi de suite pour les autre range (2000,…) avec chaque range entre () séparé par ou bien sûr.

Bonjour,

A tester :
(#[Appartement 1003][The Cube][Appuis]# in ("1002","1003","1004"])

Cela fonctionne chez moi.

Cela fonctionne aussi sous cette forme :
#[Appartement 1003][The Cube][Appuis]# in ['1002', '1003']