Besoin d'aide pour scénario en PHP

Bonjour,

J’ai besoin d’aide pour l’écriture d’un scénario PHP. J’ai une alarme AJAX et je souhaite représenter chaque équipement dans Jeedom pour montrer leur état en fonction des code reçu au travers du plugin siapro

J’ai défini un modèle de Virtuel pour tous mes équipements dont la catégorie est « Sécurité ». Lorsque AJAX envoie un code d’évènement, il transmet l’ID de l’équipement que j’ai mis en info fixe sur mon virtuel.

Ce que je voudrais faire, c’est sélectionner le bon virtuel en fonction de l’info ID, puis pouvoir appeler une commande sur ce virtuel pour mettre à jour ses infos. (que se passe t’il si on tente d’appeler une commande qui n’existe pas sur l’objet et comment gérer çà)

Sinon j’ai penser à une méthode un peu moins générique en sélectionnant le virtuel par on ID en fixe dans le scénario et en récupérant son nom, puis en sélectionnant la bonne commande grâce au nom mais c’est moins propre :slight_smile:

Salut,

Tu peux commencer par jeter un oeil là …

Pour l’appel des commandes qui n’existent pas, c’est à toi de gérer :

  • En appelant que ce qui existe
  • En gérant des exceptions

Hello,

Oui j’ai déjà vu ce lien qui est super pour débuter :+1:

J’arrive bien a récupérer mon objet avec son ID Jeedom

$equipement = eqLogic::byId(126);
$scenario->setLog('nom équipement : ' . $equipement->getName());
$commande_name = '#[Sécurité][' . $equipement->getName() . '][ID_AJAX]#';
$cmd = cmd::byString($commande_name);
$scenario->setLog('valeur : ' . $cmd->execCmd());

Maintenant je voudrais pouvoir le trouver en ne connaissant que l’info ID_AJAX

Si tu n’as pas de correspondance entre l’id Ajax et l’d jeedom il faut que tu fasse une boucle sur toutes les commandes associées à ton virtuel (eqlogic) et que tu compares l’id ajax avec ce que je suppose être le nom (cf ta copie d’écran)

1 « J'aime »

Oui je viens de réussir grâce au post de @fred ici : Presentation rendu tablette en V4 - #11 par fred

// Équipements catégorie security
$cat = eqLogic::ByCategorie('security');

//On récupère les équipements de la catégorie security
foreach($cat as $i)
{
	//On récupère les commandes des équipements security (tableau)
	$cmdtab = cmd::byEqLogicId($i->getId());
  
	//On cherche les commandes de la catégorie security
	foreach($cmdtab as $cmd)
   	{
      	if($cmd->getName() == "ID_AJAX")
        {
          //On récupère le nom entier de l'équipement
			$human = $i->getHumanName();
          //On reconstitue la commande avec le nom entier + l'état
          	$commande_name = '#' . $human . '[' . $cmd->getName() . ']#';
		 	$cmd1 = cmd::byString('#' . $human . '[' . $cmd->getName() . ']#');
          //On récupère le statut de la commande.
			$statut = $cmd1->execCmd();
          //On récupère le nom de l'équipement
			$equipement = $i->getName();
          
          $scenario->setLog('Equipement : ' . $equipement . ' valeur :' . $commande_name . ' ' . $statut);
        }
    }
}

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.