Code pour désactiver un scénario

Bonjour
Dans un code plus général, je désactive un scénario dont voici le code…mais qui ne fonctionne pas!! Merci de votre aide.

// Désactiver le scénario d'alarme avec l'ID 7
$scenario = scenario::byId(7);
if (!is_object($scenario)) {
    log::add('Mois en cours', 'error', 'Scénario non trouvé');
} else {
    $scenario->setEnable(0); // Mettre à 0 pour désactiver le scénario
    log::add('Mois en cours', 'info', 'Scénario désactivé avec succès');
}

Bonjour,

Le scénario fonctionne, mais vous n’avez pas sauvé vos changements.

Merci pour le retour. Mon scénario est bien sauvegardé, mais ce n’est peut-être pas de cela que vous parlez?

pas le scénario modifié, après avoir désactivé il faut le sauver

$scenario->save();
1 « J'aime »

Merci, mais peut-être je ne comprends pas. J’ai rajouté cette ligne à la fin de mon code résultat. Quand je passe par un scénario natif j’ai bien l’information de la liaison des scenario dans le scénario alarme et Mois en cours, mais rien dans le scénario fonctionnant avec le code.

// Désactiver le scénario d'alarme avec l'ID 7
$scenario = scenario::byId(7);
if (!is_object($scenario)) {
    log::add('Mois en cours', 'error', 'Scénario non trouvé');
} else {
    $scenario->setEnable(0); // Mettre à 0 pour désactiver le scénario
    log::add('Mois en cours', 'info', 'Scénario désactivé avec succès');
  $scenario->save();
}

Salut,

La fonction à utiliser n’est pas ->setEnable(0) mais ->setIsActive(0).

Pourquoi le faire par bloc code alors que tout est prévu directement via l’interface des scénarios ?

1 « J'aime »

Merci :grinning: cette fois ça marche. Je fais un code sur le changement de mois qui déclenche une action sur un scénario

:warning: Attention tout de même à l’usage de blocs code sans maitrise du code du core car une erreur peut potentiellement casser ton Jeedom.

D’autant plus que la grande majorité des fonctions sont directement accessibles depuis l’interface des scénarios sans avoir à écrire de code. Tu pourrais programmer ton scénario chaque 1er du mois par exemple.

Je pense que tu as raison et c’est ce que je vais faire et c’est plus simple. j’ai pas assez réfléchi!!! En réalité c’était un entrainement de code partiel. J’ai un cumul infini de différents paramètres d’une production photovoltaïque. J’ai donc des virtuels, quotidien, mois en cours, année en cours et cumul infini. A la fin de chaque mois en cours je souhaite récupérer les valeurs pour les mettre dans un tableau et réinitialiser les données du mois en cours pour repartir sur le mois suivant. Idem pour l’année en cours. Je pensais dans mon code: arrêter le scénario mois en cours, puis extraire les données vers le tableau, puis réinitialiser le virtuel mois en cours et enfin réactiver le scenario mois en cours. Dans un code général ce n’est peut être pas obligatoire car les actions s’enchainent, et dans une succession de scénarios on peut jouer sur le moment de leur déclenchement.

Après dans un scénario on peut très bien mixer les blocs actions et les blocs code par exemple. C’est souvent plus simple de laisser le code aux choses complexes non faisables via l’interface de jeedom et de rester sur le standard sur ce que tu peux faire de cette façon la.

Moi aussi j’avais commencé à faire pas mal de choses via du code et j’y suis revenu :wink: Je mixe les deux quand c’est nécessaire :slight_smile:

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