Désactiver des Cron d'un scenario via un autre scenario

Bonjour,

J’avais il y a quelques mois posé la même question et j’avais réussi à trouver la solution à mon problème grâce à vous.

Sauf que, aujourd’hui, je me rend compte que ça ne fonctionne plus. La solution de l’époque qui fonctionnait ne fonctionne plus aujourd’hui.

Ci-dessous la discussion :
[Arreter, desactiver, et supprimer les cron d'un groupe de scenario - #12 par alex43_b]

En fait, je vais exposer mon problème :

J’ai un (gros) scénario pour la programmation de mon chauffage. Celui-ci se lance à 1 heure du matin et programme aux heures demandées des modes de chauffage (mode éco/confort, etc.).

J’ai l’abonnement TEMPO chez EDF, et lorsque celui-ci se met à jour pour le lendemain (à 11 heures du matin en général), en fonction de la couleur du jour, ma programmation change, et je souhaite supprimer toutes les tâches qui vont se lancer à heure programmée.

Mes questions sont les suivantes :

  • Pourquoi mon code qui a marché pendant plus de 6 mois ne marche plus maintenant ? Maj, ou autre ?
  • Est-ce qu’il y a une solution simple pour supprimer des cron ?
  • Est-ce qu’il y a une autre solution à envisager à mon problème ?

Concernant la dernière question, j’avais eu des réponses avec l’utilisation de remove_inat. Honnêtement, je n’ai pas tout compris et je n’ai pas trouvé la solution simple à mettre en œuvre. Il aurait bien (dans mes doux rêves) que sur une ligne d’action, en mettant remove_inat, ça ouvre un choix de scénario où l’on souhaite supprimer les cron…

Merci à vous !

remove_inat ne supprimes pas LES crons, il supprime simplement les commandes A et DANS qui sont liées au scénario du même nom. Cela permet s’il se redéclenche, de rafraichir éventuellement les prochaines tâches programmées dans le scénario.

donc si tu utilses des A et DANS, les précédentes programmations doivent sauter si tu ajoute la commande explicite remove_inat dans ton scénario. si ça déclenche d’autres scénarios en cascade, là c’est plus compliqué car s’ils sont en attente eux mêmes, tu ne peux pas les arrêter simplement.

je suppose qu’un bloc de php pourrait faire ce type de job, cependant le plugin thermostat couplé à l’agenda est censé faire tout ça sans prise de tête…

En faite, j’ai trouvé une solution vite fait.
Je pense que c’est pas une solution qu’on pourrait juger de « simple » mais la voici:

Du coup, en mode manuel, je lance le scenario « supr CRON », ca passe ma variablevariable(suprcronchauffage)==1 , ca relance mon scenario chauffage, et du coup en derniere ligne, ca fait mon remove_inat.

J’ai mis un petit delai sur le premiers scenario du coup ma variable repasse a 0.

Bonjour,

Impossible de répondre à ces questions sans voir le ou les scénarios…

Il faut savoir que reprogrammer un bloc DANS ou A annule d’office les crons précédents donc tout ceci me semble fort inutile.
Il suffit de relancer le scénario qui va tout programmer et toutes les programmations précédentes seront annulées et replannifiées

Si je relance simplement mon scénario, ça va relancer mes cron

Je comprend pas ce que tu veux dire :thinking:

- Nom du scénario : Planning chauffage
- Objet parent : Chauffage
- Mode du scénario : all
    - Programmation : 0 1 * * *
    - Evènement : #[EDF][Tempo EDF][Aujourdhui]# matches "/RED/"
    - Evènement : #[EDF][Tempo EDF][Demain]# matches "/RED/"

Chauffage lundi/mardi/jeudi/vendredi ET mercredi/samedi/dimanche

    
    A 500
    FAIRE
         
        SI #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  
        ALORS
         #[Chauffage][Poele Lola][Ecrire température de consigne]# - Options : {"enable":"1","background":"0","slider":"19"}
        SINON
         
        SI #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[EDF][Tempo EDF][Aujourdhui]# == 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Avant TEMPO]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 600
    FAIRE
         
        SI #sjour#=='Lundi' OU #sjour#=='Mardi'  OU #sjour#=='mercredi' OU #sjour#=='Jeudi'  OU #sjour#=='Vendredi'  ET #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle' ET #[Maison][Ephemeride][Jour férié]# == 0 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Confort - 20°C]# - Options : {"enable":"1","background":"0"}
        SINON
         
        SI #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[EDF][Tempo EDF][Aujourdhui]# == 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][TEMPO HP]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 630
    FAIRE
         
        SI #sjour#=='Samedi' OU #sjour#=='Dimanche'  ET #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  OU #[Maison][Ephemeride][Jour férié]# == 1 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Confort - 20°C]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 830
    FAIRE
         
        SI #sjour#=='Lundi' OU #sjour#=='Mardi'  OU #sjour#=='mercredi' OU #sjour#=='Jeudi'  OU #sjour#=='Vendredi'  ET #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[Maison][Ephemeride][Jour férié]# == 0 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Eco - 18°C]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 1130
    FAIRE
         
        SI #sjour#=='Lundi' OU #sjour#=='Mardi'  OU #sjour#=='mercredi' OU #sjour#=='Jeudi'  OU #sjour#=='Vendredi'  ET #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[Maison][Ephemeride][Jour férié]# == 0 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  ET #[EDF][Tempo EDF][Demain]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Confort - 20°C]# - Options : {"enable":"1","background":"0"}
        SINON
         
        SI #[EDF][Tempo EDF][Demain]# matches "/RED/"
        ALORS
         #[Chauffage][Mode Chauffage][Avant TEMPO]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 1300
    FAIRE
         
        SI #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[Maison][Ephemeride][Jour férié]# == 0 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  ET #[EDF][Tempo EDF][Demain]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Eco - 18°C]# - Options : {"enable":"1","background":"0"}
        SINON
         
        SI #[EDF][Tempo EDF][Demain]# matches "/RED/"
        ALORS
         #[Chauffage][Mode Chauffage][Avant TEMPO]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 1730
    FAIRE
         
        SI #sjour#=='Lundi' OU #sjour#=='Mardi'  OU #sjour#=='mercredi' OU #sjour#=='Jeudi'  OU #sjour#=='Vendredi'  ET #[Alarme][1-Systeme alarme][Etat Alarme]#== 'idle'  ET #[Maison][Ephemeride][Jour férié]# == 0 ET #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  ET #[EDF][Tempo EDF][Demain]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Confort - 20°C]# - Options : {"enable":"1","background":"0"}
        SINON
    
    A 2200
    FAIRE
         
        SI #[EDF][Tempo EDF][Aujourdhui]# != 'RED'  ET #[EDF][Tempo EDF][Demain]# != 'RED'  
        ALORS
         #[Chauffage][Mode Chauffage][Nuit]# - Options : {"enable":"1","background":"0"}
        SINON
         
        SI #[EDF][Tempo EDF][Demain]# matches "/RED/"
        ALORS
         #[Chauffage][Mode Chauffage][TEMPO HC]# - Options : {"enable":"1","background":"0"}
        SINON
    
    SI variable(suprcronchauffage)==1
    ALORS
     remove_inat - Options : {"enable":"1","background":"0"}
    SINON

Ben il faut lancer le scenario ave. Un tag ou un declencheur particulier et en debut de scenario tester le tag ou le declencheur et faire en action un remive inat et bien sur bypasser la programmation