Pour info ma config Jeedom :
Version : 4.2.13
Source : default
Branche : V4-stable
Système : freeboxDelta
Voici mon pb : dans un virtuel j’ai une commande info qui me retourne un nombre sur 4 positions max.
J’ai fait une fonction perso dans « userFunction » pour traiter une mise en forme perso de ce nombre dans un autre virtuel:
Le pb que je rencontre :
Ma fonction très simple elle fait un substr de la variable
public static function perso_MEF($NB) {
return $NB.’ '.substr($NB,1,4);
}
Je souhaite utiliser cette fonction dans une commande info virtuel.
Si j’appel cette fonction en passant un nombre en direct
perso_MEF(‹ 5000 ›) Résultat de la commande info: ‹ 5000 › 5000 OK
Si j’appel la commande avec une autre info virtuel en paramètre ça ne marche pas :
#[Sécurité][Test_fonction_perso][num]# contient 5000
Je crée une commande info virtuel
perso_MEF(#[Sécurité][Test_fonction_perso][num]#) Résultat de la commande info: 5000 3276 KO
Je ne comprends pas comment il peut trouver 3276 au lieu de 5000
Oui effectivement 3276 c’est bien l’ID de la commande.
Je ne comprends pas pourquoi c’est ID qui est traité par le substr alors que en retournant la variable sans substr on a bien la valeur soit 5000.
Merci pour ton aide je sais au moins d’où vient le 3276, mais je ne sais pas comment faire pour recupèrer la valeur avec le substr?
Bonsoir,
au retour de la variable : return $NB. ' ' .substr($NB,1,4); → return #3276#. ' ' .substr(#3276#,1,4); → return #3276#. ' ' .3276; #3276# est interpréter par jeedom comme une commande, il te remplace donc l’id par la valeur a l’affichage, soit : 5000 3276
Si ta fonction est destiné exclusivement a recevoir une commande de type #macomande#, la solution de bison est adapté ou celle-ci : $NB = scenarioExpression::value($NB);
sinon il te faudra vérifier avant si c’est une commande jeedom : if (strpos($NB, '#') !== false) $NB = scenarioExpression::value($NB);