Eviter de reprogrammer à nouveau une action Dans x minutes

Bonjour à tous !

Dans mon scénario d’ouverture des volets de Velux, j’ai ajouté une vérification pour ne pas ouvrir si il a gelé. Cela évite d’abîmer les volets !

Si il a gelé, je retente dans 1h.

Le problème est que si je lance plusieurs fois mon script, cela reprogramme à nouveau une tentative d’ouverture dans 1h.

Je peux ajouter un boolean qui vérifie si la reprogrammation à déjà été faite mais je me demandais si il n’y avait une autre méthode.

J’ai essayé de désactiver « Autorise ou non la répétition des actions si… » mais cela ne semble pas fonctionner comme je pensais.

Merci pour votre aide

Salut
Tu peux ajouter dans une action remove_inat
Cela va effacer la programmation en cours du scénario.

Antoine

Bonjour,

je ne comprend pas le problème / la question.

dans ce cas-ci ce n’est pas nécessaire car « reprogrammer » un bloc DANS / A annule automatiquement la programmation précédente

=> donc il n’y aura jamais 2 bloc DANS/A programmés à des heures différentes, ce n’est pas autorisé

2 « J'aime »

Je ne savais pas ça effectivement ! Merci pour la précision.

Je comprends mieux pourquoi je n’ai trouvé qu’une seule tâche dans le moteur de tâche.

Je pensais à tort que cela allait ajouter une nouvelle tâche à chaque fois…

Merci et bonne journée

on coche « solution » du post donnant la solution… => j’ai corrigé

1 « J'aime »

C’est nouveau cette feature de A et DANS ?
Il me semblait qu’il fallait justement utiliser remove_inat pour éviter les doublons ?

non, ce n’est pas nouveau, ca a « toujours » fonctionné comme cela.

le « remove_inat » sert lorsque tons scénario peut « décider » d’annuler un bloc prévu.

exemple basique, scénario pour allumer une pièce sur mouvement:

Déclencheur = la commande mouvement

  • si absent alors DANS 2 minute éteindre
  • sinon (donc présent) alors allumer et annule le bloc DANS (remove_inat)

Ah bah oui évidemment, si tu ne relances pas de DANS il faut annuler le précédent autrement :clown_face:!
Merci pour l’explication !

Salut,

Moi qui suis sur jeedom depuis pas mal d’années, je croyais mais peut être à tort qu’il y a eu un moment où ça ne fonctionnait pas comme ça et que ça à ensuite été corrigé. Mais je pense plus à un bug transitoire que vraiment la feature prévue pour ça.
Dans tous les cas j’ai pris l’habitude de mettre un remonve_inat dès que je fais un scénario qui fait du DANS ou du A. Oui peut être que souvent ça ne sert à rien :wink:

Je ne saurai jamais si c’est une légende urbaine ou si ça à toujours été comme ça depuis l’origine et que c’est moi qui suis dans le faux depuis si longtemps :smiley:

2 « J'aime »

Bonsoir

Tout comme toi, dans la mesure où le DANS gênerait une tâche visible dans de moteur de tâches, j’étais persuadé que relancer un même scénario sans remove_inat créait une nouvelle tâche sans pour autant remplacer la première.
Je viens de vérifier et la tâche initiale est bien substituée par la nouvelle sans avoir utilisé remove_inat.
On en apprend tous les jours :wink:

Je n’ai cherché que sur ce community (et il y en avait un autre avant) mais c’était bien déjà comme ça en 2019 :wink:

2 « J'aime »

Pas du tout !
C’est dans un cas particulier surement parce qu’il peut très bien y avoir plusieurs programmations dans un scenario (rallumer dans 1h puis dans 3h puis dans 8h par ex).
Donc tu peux tout à fait avoir plusieurs inat pour la même cible dans ta base.
Il est donc plus prudent (et ça ne coute rien) d’ajouter l’action remove_inat à ton scénario avant toute reprogrammation.

Si tout a fait!
et non ce n’est pas un cas particulier

Un même bloc DANS / A ne peut pas être programmé deux fois, jamais

S’il y a 4 blocs DANS différents… ce ne sont donc pas les mêmes.
Le remove_inat les annulera tous

1 « J'aime »

Ah bon et ça c’est quoi alors ?..

Différents blocs inat dans le même scénario.

C’est le scenario_element_id qui est interessant et que tu ne montres pas sur ta capture. Bien sur qu’on peut programmer plusieurs blocs A dans le même scénario, ce que disait @Mips c’est qu’un même bloc ne peut pas être programmé plusieurs fois

1 « J'aime »

Ah effectivement, il faut bien s’entendre sur les définitions !
Si tu as un scenario lancé toutes les 10mn avec uniquement une seule action genre si le truc==0 alors « dans » 1h tu mets « on »,
il décalera l’enregistrement (si truc=0 à chaque fois) toutes les 10mn en effaçant l’ancien, il n’y aura donc qu’une seule programmation.

Si dans ton scenario tu as plusieurs actions, par exemple si le truc==0 tu mets « on » dans 1h mais si le truc==1 alors tu mets « on » dans 2h,
dans ce cas et si le truc valait 1 et 10mn plus tard il passe à 2, tu auras 2 enregistrements pour le même scenario_id avec des element_id différents et donc un déclenchement dans 1h ET 2h, or ce n’est pas ce que tu veux puisque la condition a changé, là il faut donc le remove_inat.

Pour faire simple sur cette incompréhension disons qu’un scenario peut avoir autant de programmations que de bloc action dans/à (element_id), s’il n’y en a qu’un seul alors pas besoin du remove_inat.

C’est exactement ce que dit @Mips juste au dessus :

Sauf qu’il faut s’entendre sur le « même bloc » = le scénario ou bien = une action d’un scénario ?
Beaucoup vont entendre qu’on a « un bloc » programmé pour le scenario alors que non il s’agit de « un même bloc element_id DANS / A ».
Nuance importante.

Hello,

Je sais pas mais pour le moment j’ai quand même l’impression qu’il n’y a que toi qui « accroche » sur le sujet et pas vraiment plein de monde :wink:

Dans la doc, la définition d’un bloc A ou DANS est claire.

On peut avoir plein de bloc A/DANS à l’intérieur d’un scénario.

On peut avoir plein d’actions dans un bloc A/DANS et ce que l’on dit ici c’est qu’un bloc A/DANS dénommé blocA sera reprogrammé si le scénario est exécuté à nouveau, la programmation (de l’ensemble des actions de ce bloc là) ne sera pas ajouté sans retirer la précédente programmation.

Idem pour un bloc A/DANS que l’on nommerait blocB ou blocC.

1 « J'aime »