Je bute toujours pour écrire des logs dans mon scénario. Ma version de Jeedom est v4.0.61quit tourne sur un RPI3b+
Je suis tombé sur ce topic mais je n’arrive pas à la solution décrite par @Loic
J’ai une fonction appelée dans un scenario qui fonctionne bien sauf que l’instruction : $scenario->setLog($message) me retourne cela dans le log du scenario après son execution :
------------------------------------
[2021-02-23 12:25:39][SCENARIO] Start : Scenario lance manuellement.
[2021-02-23 12:25:39][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-23 12:25:44][SCENARIO] Call to a member function setLog() on null
[2021-02-23 12:25:44][SCENARIO] Fin correcte du scénario
Le log du scénario est paramétré en « Temps Réel ». J’ai également fait quelques essais en paramétrant par « défaut » et en ajoutant $scenario->persistLog() . Le résulat est identique à savoir
Le code de ma fonction est le suivant :
public static function Vérif_Action_TV($Id_Action,$Id_Status,$Nb_Relance_Max,$intervalle_Relance,$Status_TBC){
for ($i = 1; $i <= $Nb_Relance_Max; $i++) {
$cmd = cmd::byId($Id_Action)->execCmd();
sleep($intervalle_Relance);
$value = cmd::byId($Id_Status)->execCmd();
if ($Status_TBC == $value) {
$scenario->setLog('Commande activé après ' . $i. ' Tentatives');
$scenario->persistLog();
break ;
} elseif ($i == $Nb_Relance_Max) {
log::add('user_function', 'error', 'status invalidé après '.$i.' itérations.');
}
}
}
}
Merci !! Hé bien oui , il faut identifier le scenario par son Id !! … et là ça fonctionne.
Ci-dessous le code de cette fonction qui fonctionne avec l’instruction $scenario->setLog qui remonte bien , suivi de $scenario->persistLog() (log du scenario paramétré en « défaut »)
public static function Vérif_Action_TV($Id_Action,$Id_Status,$Nb_Relance_Max,$intervalle_Relance,$Status_TBC,$Id_Scenario){
$scenario = scenario::byId($Id_Scenario);
$nom_Id_Action = cmd::byId($Id_Action)->getHumanName();
for ($i = 1; $i <= $Nb_Relance_Max; $i++) {
$cmd = cmd::byId($Id_Action)->execCmd();
sleep($intervalle_Relance);
$value = cmd::byId($Id_Status)->execCmd();
if ($Status_TBC == $value) {
//log::add('user_function', 'error', 'status validé après '.$i.' itération.');
$scenario->setLog('Commande activé sur '.$nom_Id_Action.' après ' . $i. ' Tentative(s)');
$scenario->persistLog();
break ;
} elseif ($i == $Nb_Relance_Max) {
log::add('user_function', 'error', 'status invalidé après '.$i.' itérations.');
}
}
}
}