Bonsoir,
Je cherche à identifier dans le centre de messages des messages bien précis et les effacer.
J’ai fait Ajouter une action sur message et j’ai mis démarrer un scénario avec un tag
de ce que j’ai compris sur l’utilisation dans la doc j’ai indiqué en tag : plugin=#plugin# pour avoir le nom du pluging qui est l’objet du message.
Ensuite j’ai créé un scénario pour traiter :
normalement si j’ai bien compris, lorsque le tag plugin sera égal à zigbee les actions qui sont dans le scénario devraient s’exécuter, mais ce n’est pas le cas.
Le résultat reste déséspérement : Je vais évaluer : « defaut » == « zigbee »
Résultat : false
Ma conclusion après plein d’essais et de lectures plus ou moins pédagogiques c’est que je n’ai rien compris et qu’il faut mieux demander de l’aide à ceux qui savent.
Alors help me svp
Je pense avoir déjà fait exactement ce que tu souhaites,
lancement d’un scenario avec en tag le nom du plugin et en fonction du tag, filtrage de messages suivant une chaine de caractère dans ce dernier
Le bonjour du Dimanche,
Merci à vous de vos réponses, je suis en train de tester. @ngrataloup c’est exactement ce que je veux faire, on doit être nombreux à faire ça de toute façon car il y a des messages d’alerte qui arrivent sans influer sur le fonctionnement et qui polluent la lecture des vrais messages d’alerte.
Du coup, je n’avais pas fait d’erreur dans mon interprétation de ma lecture de la doc. Par contre si je comprends bien, le souci viendrais de mon message qui n’est pas considérer comme une erreur par le centre de logs. J’ai donc coché les autres cas d’ajout de message pour voir si ça marche mieux et identifier à quoi il est assimilé.
A suivre …
Hello,
Bon après mes tests et sans avoir rien changé dans les syntaxes que j’avais employé et bien ça marche.
J’ai juste coché tous les cas d’écriture de log pensant que c’était là que ça péchait, ça a marché, je suis donc revenu en arrière en les décochant une par une, pour finalement arriver à ma situation initiale et ça fonctionne toujours
Tant mieux, mais je n’aimes pas quand je ne comprends pas
Un petit truc qui devait être bloqué quelque-part, je ne sais pas.
Au passage de mes tests j’ai compris qu’un tag était volatile contrairement à une variable. On ne peut donc pas le tester après coup, il n’existe qu’au moment où le message apparait.
Bref, merci à vous et bonne semaine à ceux qui bossent
C’est en effet tout l’intérêt du tag
Il n’existe que le temps de l’exécution du scénario appelé. Il est automatiquement supprimé à la fin du déroulement du scénario sans avoir à le gérer. Contrairement à une variable qui reste pour toujours a moins de la supprimer explicitement par une instruction.
Erreur lors de l'exécution du cron Cette action ne peut pas être exécutée pour cet appareil HomeAppliance did not respond to connection initialization requests in time, it might be offline
C’est un copié collé donc à priori pas de point avant Cette
Je modifie avec ta proposition et je test lorsque l’erreur reviendra.
Cordialement
$strings = array(
'Erreur lors de l\'exécution du cron Cette action ne peut pas être exécutée pour cet appareil HomeAppliance did not respond to connection initialization requests in time, it might be offline');
$tags = $scenario->getTags();
$tagPlugin = $tags['#plugin#'];
$msgs = message::byPlugin($tagPlugin);
foreach ($msgs as $msg) {
foreach ($strings as $string) {
$strMsg = str_replace("&"."apos;", "'", $msg->getMessage());
if (stristr($strMsg, $string)) {
message::removeAll($tagPlugin, $msg->getLogicalId());
}
}
}
Pour tester sans supprimer le message et pouvoir faire plusieurs essais,
tu peux remplacer la ligne : message::removeAll($tagPlugin, $msg->getLogicalId());
par la ligne : $scenario->setLog('Message trouvé !');
Bonjour, @Jeandhom tu m’avais mis le doute j’ai donc refais les essais, mais non j’avais bien mis \ et ça ne marche pas dans mon cas, ça interprète quand même le ’
Je refais des essais avec ce que m’a proposé @noodom et je reviens vous dire.
C’est normal que le caractère d’échappement ne suffise pas (voir mon message précédent).
Mon code proposé doit résoudre ton problème Attention il faudra aussi ajouter un traitement pour les guillemets si tu veux gérer des messages en contenant (et sans doute d’autres caractères spéciaux à voir au cas par cas)
Mes respects Mr @noodom
Ca dépasse mes petites compétences de bidouilleur amateur mais ça fonctionne très bien.
Si tu as 5 minutes pour m’expliquer comment tu trouves ce que renvoie le caractère qui pose pb et ce que tu fais dans
parfait
Pour savoir ce que renvoie vraiment le message, il suffit de logger $msg->getMessage() avec un $scenario->setLog()ET de sélectionner log brut pour voir le vrai contenu de la chaîne de caractères.
Tu verras que tu as ' au lieu de '.
Il faut donc transformer tous les ' par ' avec $strMsg = str_replace("&"."apos;", "'", $msg->getMessage());