Bloc code et erreur si commande absente

Bonjour,

J’aurai besoin d’une petite aide pour un scenario.
dans mon scenario, je fais un listing de toutes mes pièce et à partir de celui-ci j’extrais la température de chacun des pièces.

$temperaturePiece = cmd::byString("#" . $objectHumanName . "[Température][Température]#")->execCmd();

mais toutes les pièces n’ont pas de capteur et du coup, pour ces dernière,
je demande au bloc code de m’afficher la température d’un equipement qui n’existe pas et je sors du bloc code avec une erreur :

Commande introuvable : #[SdB filles][Température][Température]# => #[SdB filles][Température][Température]#

Une idée de comment passer outre cette erreur qui me fait sortir du bloc code (en testant au prèalable la présence de l’équipement ?) ou une autre méthode pour extraire en bloc code la température de ma pièce (via des generics type ?) ?

Merci de votre aide

Norbert

Salut,

tu peux entourer ta ligne avec un try / catch

try{
	$temperaturePiece = cmd::byString("#" . $objectHumanName . "[Température][Température]#")->execCmd();
}catch(Exception $e){
  
}
1 « J'aime »

Bonjour,
idem que @kaktusatomik , ou alors tester avant si c’est un « object » :

$temperaturePiece = cmd::byString("#" . $objectHumanName . "[Température][Température]#");
if (is_object($temperaturePiece)) {
  $temperaturePiece = cmd::byString("#" . $objectHumanName . "[Température][Température]#")->execCmd();
}

Avec les générique type, il y a possibilitée aussi, mais il y aura sans doute plus de traitement a faire, en fonction de ce que tu veut y extraire voici un exemple :

$objects = jeeObject::all(); // recherche de toutes les pièces
foreach ($objects as $object) { // boucle sur les pièces
  $name = $object->getName(); // recup du nom de la pièce
  $id = $object->getId(); // recup de l'id de la pièce
  $log = $name . '<br>'; // pour le log
  $temperatures = cmd::byGenericTypeObjectId('TEMPERATURE', $id); // recherche par GenType & pièce
  $i = false; // pour non affichage des pièces sans GenType
  foreach ($temperatures as $temperature) { // boucle sur les GenType
    $value = $temperature->execCmd(); // récup de la valeur
    $log .= "----- Temperature : " . $value . "°C"; // pour le log
    $i = true; // pour affichage des pièces
  }
  if ($i) $scenario->setLog($log); // si la piece contient un GenType -> on affiche le log.
}
3 « J'aime »

merci beaucoup à tous les 2 @Phpvarious et @kaktusatomik !
c’est parfait
Je note dans mes petits papiers la solution d’utilisation des generic type dna sles bloc code … pour sur, ca m’interessera pour d’autres choses

1 « J'aime »

Sans try/catch, ce code va générer une erreur et stopper le scénario.

1 « J'aime »

effectivement le byString est déja encapsuler dans un « throw new Exception » tellement l’habitude de travailler plus avec les id, qui eux ne renvoie pas d’erreur. :wink:

1 « J'aime »

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