Conseils pour amélioration notification programme cumulus

Salut a tous
Je souhaiterai vos conseils pour l amélioration de notification du programme de mon cumulus !
J ai pour le moment fait une condition :
Si température du cumulus => a 55°C et programme cumulus activé alors
Une boucle de 1 a 3 avec de nouveau un Si (afin de m assurer que le programme ne s est pas arrêté entre temps) température du cumulus => a 55°C et programme cumulus activé alors une notification sur Alexa puis un arrêt de 300s
Je préférai que le scénario ne reste pas en fonction pendant 300s pour éviter de surcharger la mémoire de box Atlas !
Auriez vous un conseil pour son amélioration ?

En vous remerciant par avance

Bonne soirée

Bonjour,
Et bien au lieu de mettre un WAIT 300 (qui est bloquant), faites plutôt DANS 5 minutes, FAIRE la suite dans un bloc dédié.
Après c’est difficile de dire mieux, on a que des infos parcellaires…

1 « J'aime »

Bonsoir,

Même réponse que @DanielJ, il faut utiliser un bloc DANS.

Je précise et en profite pour indiquer des axes d’améliorations.

Dans les cas de figure où l’on veut attendre qu’une condition arrive l’idée est de rappeler le scénario toute les X minutes. C’est ce qui correspond à ce que tu as fait de façon intuitive avec la boucle.

Le scenario est nommé X et tu le démarre avec un déclencheur Y comme « programme cumulus activé »

SI condition_vraie
 Faire action
SINON
 Dans 5 demarer scenario X

ça permet donc de vérifier toutes les 5 minutes si une condition passe vraie (comme la température du cumulus qui devient OK) et d’envoyer une alerte quand la température est atteinte.

En guise de remarque et pour t’améliorer :

  • Tu parles de vérifier que la température doit être supérieur ou égale à 55°c hors du vérifie juste si elle est égale.
    Du coup si jamais la température passe de 54 à 56 entre 2 vérifications, tu louperas l’info et ne recevra jamais la notification. Bon pour une température de cumulus il y a peu de chance … mais pour d’autres cas de figure c’est important de mettre #temperature# >= 55

  • Dans les « SI » utilises bien des == pour comparer des valeurs et pas des simples =
    Jeedom est gentil et comprends que tu as voulu faire une comparaison mais dans le langage que Jeedom utilise (PHP), le signe = est utilisé pour assigner une valeur et ne sert donc pas pour comparer 2 éléments.
    Si par hasard un jour tu te mets à utiliser des blocs codes et que tu fait un :

if ($une_variable = 10) {
...
}

Alors non seulement le test sera vrai mais en plus la valeur de $une_variable deviendra 10 et c’est surement pas ce que tu veux

1 « J'aime »

Salut.

Tu n’a pas précisé quels étaient les déclencheurs de ton scénario ?

Je ne comprends pas trop pourquoi tu fais une boucle ?
Tu veux recevoir les notifs 3 fois espacés de 500s ?

Le wait ne sert pas à ce que tu veux faire.

Déja comme l’ont dit plusieurs personnes, si tu attend relativement « longtemps » mieux vaut faire un bloc DANS (qui s’exécutera comme un sous scénario).

Mais pour attendre de façon inconditionnelle c’est sleep qu’il faut utiliser pas wait : wait ça sert à attendre qu’une condition change. Par exemple j’attends que la porte soit fermée avant d’éteindre la lumière et si au bout de 300 secondes elle n’est toujours pas fermée j’éteins quand même.
Si tu veux attendre « juste » 300 secondes fais un sleep, pas un wait sans condition.

Il s’avère que sous jeedom ça marche mais bon quand tu utilises mal une fonction, rien n’exclu que dans 2 ou 3 mises à jour ton scénario qui fonctionnait depuis des années se mette à ne plus marcher.

1 « J'aime »

Merci pour vos retours très constructifs et désolé d avoir été confus dans mes explications !
Mon besoin; chose que j aurai dû vous expliquer dés le début serait d avoir une notification via alexa lorsque la température est au dessus de 55°C (en effet Bison, j avais oublié « > » désolé j avais rectifié mais pas envoyé la bonne capture d écran :upside_down_face:) puis recevoir une autre notif 5 minutes après; ainsi de suite jusqu a l arrêt du programme de chauffe !
Mon déclencheur est la température du cumulus => 55

merci pour cette belle explication
Le souci est que le déclencheur est la température du cumulus => 55 donc une fois atteinte et si le programme est toujours actif alors je vais recevoir sans cesse des notifications…
Je souhaite qu elle soit espacé au minima de 5 minutes ,on m avait déja indiqué qu un sleep supérieur a 3 minutes peut etre néfaste pour la mémoire du jeedom …?
En parlant de bloc code; tu as du lire dans mes pensées :smiley:
J ai un code que l on m avait gentiment passé et que je souhaiterai modifié …Je souhaiterai apprendre et débuter pour modifier ce bloc code en PHP mais je posterai cette demande dans la rubrique spécifiée !
En te remerciant par avance

Si je fais cela; mon scenario attendra bien 5 minutes avant de redémarrer ?

Avec le principe du SINON, oui en effet, mais comme tu n’avais pas trop exprimé ton besoin de répétition de la notification, on avait pas compris ce que tu voulais faire.
Mais c’est pas grave, le principe est de comprendre comment utiliser le DANS pour rappeler le scénario et ensuite tu appliques ça de la bonne façon.

Oui, sauf si ton déclencheur vient déclencher le scénario avant c’est à dire si la température passe à 56°c. Mais c’est un détail donc oui c’est bien comme ça.

Bonjour,
A mon tour d’être OK avec ce que dit @Bison . Mais il a raison sur un point qui risque d’être problématique si la T° change souvent, ou pire si elle est mesurée au 1/10 de degré près : le scénario va programmer une notification verbale à chaque modification de la valeur, pour peu qu’elle soit supérieure à 55°C, certes décalée de 5 minutes, mais qui vont s’enchaîner… Résultat : une belle cacophonie à prévoir.
Je suggère plutôt d’utiliser un flag, c’est plus sûr. Ca donnerai un truc comme ça :

  • Créer une variable flag = 0
  • Déclencheur du scénario : T° >= à 55°C

Le scénario lui-même :

  • SI flag != 1 ALORS
    • SI Commande1 == 1 && variable == 4 […] ALORS [Note : inutile de retester la T° >= à 55°, c’est déjà fait dans le déclencheur]
      • Notification Alexa
      • flag = 1
      • DANS 5 FAIRE
        • flag = 0

Ainsi, le flag est remis à 0 toutes les 5’ et on est sûr qu’il n’y aura pas de notifications d’Alexa pendant cette période. Par contre, dès qu’il repasse à 0 et si la T° est toujours >= à 55°C, dès que celle-ci est modifiée (à la hausse ou à la baisse), il y aura une notification d’ Alexa.
Ca devrait plus correspondre au besoin, non ?

+1 avec @Aurel pour le SLEEP plutôt qu’un WAIT qui attends une condition vraie (tant que ça reste limité à quelques secondes…).

merci pour ton retour
Je ne connais pas le « flag » …?
En effet je souhaiterai que mon scenario ne se déclenche pas a chaque changement de température mais uniquement après 5 minutes si il a déja été déclenché !

Normal, je viens de l’inventer ! :wink:
Sérieusement, c’est le nom que je donne à la variable qui sert d’indicateur (le ‹ flag ›), mais on peut aussi l’appeler titi, toto, ou jesuisdejapasseparla.

En mettant en déclencheur la T°, c’est inévitable qu’il soit exécuté à chaque variation de la T°, mais ce n’est pas gênant en termes de ressources (ça ne va pas plus loin que le 1er test dans mon exemple). Le principe est bien de ne rien faire tant que ‹ flag › n’est pas remis à 0 après 5’.

si je met

En début de scenario; il ne va pas débuter car il sera obligatoirement a 0 pour le premier déclenchement ?

lol j ai pas compris car tu as mis " un flag"…LOL
Un tag ne serait pas plus simple sachant que c est dans le scenario uniquement ?

Ben si.
SI flag est différent de 1 (ce qui est le cas puisqu’à 0 au 1er déclenchement, soit parce qu’il à déjà été remis à 0 avec DANS 5 minutes…, soit parce que la variable a été créée avec cette valeur 0 comme indiqué) ALORS
je notifie,
je met flag à 1,
et dans 5 minutes je le remets à 0.

Voilà…

1 « J'aime »

Non, un tag perdra son existence et donc sa valeur dès que le scénario se sera achevé (sauf erreur de ma part, une instruction DANS…FAIRE reprogramme un thread composé uniquement des instructions précisées dans le bloc).
Un tag ne peut donc pas servir à mémoriser le fait qu’on a déjà notifié.


Merci beaucoup pour vos conseils

ok je pensais qu un tag pouvait être utilisé dans un scenario mais tu as peut être raison qu il est supprimé une fois le scenario achevé !

Ok pour moi, à tester maintenant mais je pense qu’on est bien là…

Juste pour fignoler…

Ce premier test ne sert à rien. C’est en effet le déclencheur, donc si on exécute cette instruction, c’est que la T° est déjà bien >= à 55°C…

1 « J'aime »

D’ailleurs c’est bien >= , et pas => qu’il faut écrire…

1 « J'aime »

en effet je vais la supprimer
j ai plusieurs conditions car plusieurs programme de chauffe selon le si c est le week end ou la semaine; en fin de journee ou la nuit; je peux faire la même chose pour les autres mais avec un variable différent ?