Notifications fonction de la condition

Je ne vois vraiment pas d’où ça sort… Y a-t-il un moyen pour trouver à quelle commande correspond un identifiant particulier ?

Bon, j’ai trouvé comment faire pour savoir à quelle commande correspond un ID…
Je zoome la dessus tout à l’heure et je te redis !

Okay. Bon, je n’avais pas compris que les autres équipements notification queue interféraient dans la log dans la mesure où ils ne sont pas alimentés par des messages à délivrer.
J’ai fait le ménage en formulant correctement les tests, et tant qu’à faire je les ai désactivés pour ne laisser actif que celui que nous étudions.

Voilà le paramétrage :

Voilà ce que donne la log :

[2023-09-19 20:51:02]DEBUG : discardExpiredMessages
[2023-09-19 20:51:02]DEBUG : message queue empty
[2023-09-19 20:51:02]DEBUG : checking queue Notification vocale test
[2023-09-19 20:51:02]DEBUG : condition not true: #164# == 1
[2023-09-19 20:51:02]DEBUG : condition not true: #167# == 1
[2023-09-19 20:51:05]DEBUG : locked: Notification vocale test
[2023-09-19 20:51:05]INFO : Added message 'Ça marche mal !' in queue 'Notification vocale test'
[2023-09-19 20:51:05]DEBUG : unlock: Notification vocale test
[2023-09-19 20:51:05]DEBUG : checking queue Notification vocale test
[2023-09-19 20:51:05]DEBUG : condition not true: #164# == 1
[2023-09-19 20:51:05]DEBUG : condition not true: #167# == 1

Dans cet exemple, la deuxième condition ne s’est déclenchée que 1 minute après que la commande soit passée à 1…

J’ai refait le test plusieurs fois et ça donne à peu près la même chose à chaque fois :
La première condition se déclenche correctement dès qu’elle est vraie
La seconde condition se déclenche après un délai pouvant aller jusqu’à 1 minute après qu’elle soit vraie, et seulement si elle est encore vraie, ou ne se déclenche pas du tout (ou alors vraiment plus tard…)

…et quand ça ne se déclenche pas, ça se déclenche tout de suite au prochain message queué, sans qu’aucune condition ne soit vraie…

@+
Bizniouf

Je pense avoir compris ce qu’il se passe suite à tes derniers tests/explications, je me penche la dessus dans la journée et je reviens vers toi.

Merci pour le « nettoyage » de la config qui permet de ne pas être noyé dans l’info, tes tests et ta persévérance, je me rend compte que ca peut être frustrant, ce n’est pas toujours facile de debug ce genre de cas par message mais je pense que ca a été utile :+1:

Nouvelle beta dispo sur le market

Bonsoir @Mips,
Merci pour ta nouvelle version. Je la testerai demain.
Merci à toi pour ton temps et ta persévérance aussi, avec moi qui n’ai pas encore tous les réflexes sur Jeedom :wink:
Le debugage, je sais bien ce que c’est, et c’est bien la moindre des choses que de t’aider à mettre au point une évolution que j’ai appelée de mes voeux et que tu as rapidement réalisée !
@bientôt,
Bizniouf

Bonjour @Mips,

Merci pour ta nouvelle version. C’est pas encore bon car il détecte mal les conditions. Exemple avec ce paramétrage que je n’ai pas changé depuis la dernière fois :

Ce scenario :

…a pour effet d’émettre le message dans la cuisine alors que le plafonnier du bureau n’est pas allumé…

Voilà la log :

[2023-09-21 16:27:35]DEBUG : locked: Notification vocale test
[2023-09-21 16:27:35]INFO : Added message 'Ça marche mal !' in queue 'Notification vocale test'
[2023-09-21 16:27:35]DEBUG : unlock: Notification vocale test
[2023-09-21 16:27:35]DEBUG : checking queue Notification vocale test
[2023-09-21 16:27:35]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:27:35]INFO : start sending message from queue Notification vocale test
[2023-09-21 16:27:35]DEBUG : Sending message: title:'Et voilà'; message:'Ça marche mal !'
[2023-09-21 16:27:35]INFO : Notification envoyée à [Cuisine][Echo Dot][Faire parler Alexa] depuis la file [Communications][Notification vocale test].
[2023-09-21 16:28:02]DEBUG : discardExpiredMessages
[2023-09-21 16:28:02]DEBUG : message queue empty
[2023-09-21 16:28:02]DEBUG : checking queue Notification vocale test
[2023-09-21 16:28:02]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:28:02]DEBUG : message queue empty
[2023-09-21 16:28:02]DEBUG : condition not true: #167# == 1
[2023-09-21 16:28:39]DEBUG : end sending message from queue Notification vocale test
[2023-09-21 16:28:39]DEBUG : condition not true: #167# == 1
[2023-09-21 16:29:03]DEBUG : discardExpiredMessages
[2023-09-21 16:29:03]DEBUG : message queue empty
[2023-09-21 16:29:03]DEBUG : checking queue Notification vocale test
[2023-09-21 16:29:03]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:29:03]DEBUG : message queue empty
[2023-09-21 16:29:03]DEBUG : condition not true: #167# == 1
[2023-09-21 16:30:05]DEBUG : discardExpiredMessages
[2023-09-21 16:30:05]DEBUG : message queue empty
[2023-09-21 16:30:05]DEBUG : checking queue Notification vocale test
[2023-09-21 16:30:05]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:30:05]DEBUG : message queue empty
[2023-09-21 16:30:05]DEBUG : condition not true: #167# == 1
[2023-09-21 16:31:02]DEBUG : discardExpiredMessages
[2023-09-21 16:31:02]DEBUG : message queue empty
[2023-09-21 16:31:02]DEBUG : checking queue Notification vocale test
[2023-09-21 16:31:02]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:31:02]DEBUG : message queue empty
[2023-09-21 16:31:02]DEBUG : condition not true: #167# == 1
[2023-09-21 16:32:03]DEBUG : discardExpiredMessages
[2023-09-21 16:32:03]DEBUG : message queue empty
[2023-09-21 16:32:03]DEBUG : checking queue Notification vocale test
[2023-09-21 16:32:03]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:32:03]DEBUG : message queue empty
[2023-09-21 16:32:03]DEBUG : condition not true: #167# == 1
[2023-09-21 16:33:03]DEBUG : discardExpiredMessages
[2023-09-21 16:33:03]DEBUG : message queue empty
[2023-09-21 16:33:03]DEBUG : checking queue Notification vocale test
[2023-09-21 16:33:03]DEBUG : condition true: #[Bureau][Plafonnier][Etat]# == 1
[2023-09-21 16:33:03]DEBUG : message queue empty
[2023-09-21 16:33:03]DEBUG : condition not true: #167# == 1

…et si je lance le scenario alors que la plafonnier du bureau est allumé ça émet aussi un message dans la cuisine (normal, mais ça veut dire qu’il n’y a pas d’inversion : Que la première condition soit vraie ou fausse, elle génère le déclenchement de la commande…

…sinon accessoirement, j’ai vu que ton plugin se déclenchait toutes les minutes et je ne comprends pas pourquoi…

@+
Bizniouf

Faut pas essayer de taper le nom des équipements à la main, utilises le selecteur à droite du champ:

image

image

« Pafonnier » ou « Plafonnier » ?
normal que le test échoue ou plutôt qu’il soit vrai car une chaine de caractère telle que « #[Bureau][Plafonnier][Etat]# == 1 » c’est toujours « vrai »

du coup ca devait pas aider avant non plus :wink:


edit:

parce qu’on est pas obligé de tester des commandes infos uniquement, on peut faire ce genre de condition: #time#>630 && #time#<2300
du coup si je teste pas chaque minute, cette condition ne sera jamais testée

Po la làaaa… quel idiot je suis !.. Le pb c’est que c’est bien plus rapide à la main… mais sujet à erreurs, effectivement :roll_eyes:

Oui c’est sûr, même si y’avait quand même un schmilblick de ton côté :wink:

Bon, la bonne nouvelle : Ça marche impec ! :+1: :smiling_face:
Merci beaucoup !!!

Ah… je comprends… mais dans ce cas, ne pourrait-ce pas être une option ? Je trouve ça un peu gênant d’avoir un cron toutes les minutes pour rien, surtout que le genre de condition que tu prends pour exemple ne me semble pas devoir être utilisé fréquemment…

Combiné avec une autre condition du genre

#présent dans la chambre# && #time#>630 && #time#<2300

…ok, mais seul ?

@+
Bizniouf

Oui pas forcément seul mais ca ne change rien au fait qu’il faille un cron.

dans ton exemple comment on fait si on était déjà dans la chambre avant 6h30?
Sans cron le message ne partira pas à 6h30.

Exact.
Ceci dit perso je préférerais que ce soit une option (au niveau de la configuration du plugin, du coup…) en pouvant ajuster le cron comme je veux (et donc pas de cron du tout si j’en n’ai pas besoin…)

Non je ne ferai pas d’option.
C’est transparent pour l’utilisateur et sans impact.
Alors qu’avec une option les utilisateurs ne comprendront pas quand il faut l’activer ou pas, beaucoup trop complexe.

Remets les logs sur un niveau warning ou errror et tu ne le verras plus.

Sinon es-tu au courant que le core fait exactement pareil avec tous tes scénarios? Sans vouloir t’empêcher de dormir :stuck_out_tongue_closed_eyes:

Je comprends.

C’est transparent pour l’utilisateur, mais pas sans impact. Ça fait tourner du code toutes les minutes.
Quand j’ai commencé l’info, il y a certes bien longtemps, fallait faire gaffe aux ressources qui étaient très limitées. Je sais bien qu’aujourd’hui ça n’est plus le cas, mais il n’empêche que ça reste un bon réflexe de ne pas charger la mule quand c’est pas nécessaire…

Warf… c’est pas une question de voir ou de ne pas voir. Je ne joue pas à l’autruche :wink:

Non je ne savais pas… C’est pour la même raison, sur les scenarios « provoqués » seulement je suppose ?

Accessoirement, juste pour savoir, parce que je suis un peu têtu et que j’aime bien creuser… est il possible de tuer programmatiquement (autrement qu’avec un remove_inat qui ne concerne qu’un scenario) une tâche dans le moteur de tâche ? Quel effet sur ton plugin si je tue sa tâche ? :face_with_raised_eyebrow:

Sur le principe oui; J’ai aussi eu des cours de methodo, calcul du coup d’une opération tout ca.

Ici on va récupérer au pire 1 ligne dans une db avec un index et faire des opérations en mémoires. C’est insignifiant.
Par contre l’écriture dans un log en mode debug ca coute => pour ca que je te dis d’adapter le loglevel et que tu n’y verras plus rien :wink:

Ca versus devoir maintenir ce code, l’utilisateur qui doit comprendre, des gens comme toi qui l’auront coupé pour « bien faire » mais qui auront oublié et du coup je vais avoir d’autres questions sur community… mon équilibre cout<>bénéfice est facile à établir.

A mon avis tu connais déjà la réponse et je t’invite à ne pas le faire.


Ceci dit tout ca est hors sujet initiale on peut solutionner du coup?

Tu as raison, of course…

En fait, j’ai mal formulé ma question. La réponse est forcément oui. La question aurait dû être « comment fait-on ? » :wink:

Je solutionne. Encore merci à toi
@+
Bizniouf

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