Beta 4.5 et trigger

Salut à tous,

Après avoir lu tout ce post, j’avoue être totalement paumé :frowning: . Surement un manque de café !!!

Question simple que je me pose :

J’utilise souvent :

		$trigger = $scenario->getRealTrigger();

Aujourd’hui (si je fais la mise à jour de ce matin) cela plante, donc, par quoi ou comment remplacer getRealTrigger ??

Merci d’avance :slight_smile:

Bonjour
La faut relire le code mais c’est à base d’un gettag

Bonjour,

Il ne faut peut être pas retirer cela, car là, l’exemple le plus utilisé n’est plus présent.

Si vous avez trigger(#[cuisine][lumiere][etat]#) == 1 il faut le remplacer par #trigger_name# == '[cuisine][lumiere][etat]'

Soit ZEN, ne pas faire de rétropédalage comme cela sur un coup de tête !
- On est maintenant tous convaincu que c’est une bonne idée ce changement.

1 « J'aime »

Pour l’instant rien ne sera retiré.

Si trigger(#[cuisine][lumiere][etat]#) == 1
est remplacé par
#trigger_name# == ‹ [cuisine][lumiere][etat] › dans un futur lointain (donc suite à suppression des anciennes commandes,

il faut juste trouver une méthode pour que le changement de nom de la commande se répercute dans le scénario. Ce qui là n’est pas le cas.

Ces nouveaux trigger sont très bien, juste à peaufiner, laisser le temps aux gens et plus tard retirer les anciens trucs et tout ira bien.

La fonction trigger( ne sera pas retiré ça permet de pas avoir du soucis si vous changez le nom de la commande

J’ai honte :hot_face:, je crois que j’ai un bug dans la tête, mais j’ai beau regarder la class scenario dans tous les sens, je ne vois pas comment remplacer ce p… de $scenario->getRealTrigger()


Je me répond à moi même pour ceux qui aurait le même problème :

il suffit de remplacer
$scenario->getRealTrigger()
par
$scenario->getTag('trigger')

1 « J'aime »

Je parle de retiré de la documentation.
C’est ce que je crois voir sur le Github / changelog

Changement sur la partie trigger des scénarios : LIEN

  • triggerId() est maintenant deprecated et sera retiré dans les futures mises à jour du core. Si vous avez triggerId() == 587 il faut le remplacer par #trigger_id# == 587
  • triggerValue() est maintenant deprecated et sera retiré dans les futures mises à jour du core. Si vous avez triggerValue() == 10 il faut le remplacer par #trigger_value# == 10
  • #trigger# : Peut être :
    • api si le lancement a été déclenché par l’API,
    • TYPEcmd si le lancement a été déclenché par une commande, avec TYPE remplacé par l’id du plugin (ex virtualCmd),
    • schedule s’il a été lancé par une programmation,
    • user s’il a été lancé manuellement,
    • start pour un lancement au démarrage de Jeedom.
  • #trigger_id# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur de l’id de la commande qui l’a déclenché
  • #trigger_name# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur du nom de la commande (sous forme [objet][équipement][commande])
  • #trigger_value# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur de la commande ayant déclenché le scénario

Donc problème réglé puisque la commande reste et qu’on a le reste.

petite question, on a le username dans #trigger_name# et le user id dans #trigger_id# quand le trigger est « user » ?

Je ne sais pas, je n’ai pas encore eu le temps de tester depuis tout ce débat.

Non rien de tout ça mais de mémoire j’avais passé un pr pour améliorer ça mais je crois ça ajoute juste l’info que c’est un lancement manuel

1 « J'aime »

Je pense qu’il y à beaucoup de prise de tête sur truc qui à venir dans 2 ans d’après ce que j’ai vu.

Après je pense qu’il faut le mettre en place puis le tester et après on peu voir pour améliorer.

Le but de cette communauté c’est l’amélioration continue au lieu de pleurer sur son sort. (Et je vise personne juste état de fait).

Bonjour,

Est-ce qu’il y aura toujours la possibilité de faire via du code cette instruction pour récupérer le lancement d’un scénario ?

$trigger = $scenario->getRealTrigger();
if ($trigger != "scenario") {

J’anticipe un peu pour adapter si besoin pour être compatible le jour de la migration :slight_smile:

Merci Loic pour ton investissement pour Jeedom !

EDIT : Oups, je viens de voir que la question a aussi été posé par @m.georgein
Je sais pas si j’ai tout compris (fin de journée)

Question déjà posée au dessus

1 « J'aime »

Effectivement, dans mon cas, je peux passer un tag lorsque c’est lancé par un scénario et le récupérer. Je vais partir sur cette solution.

Ce contournement doit pouvoir passer et être intégré au core ???

#trigger_id# == maFonctionPersoQuiRetourneIdDeLaCommande(#[cuisine][lumiere][etat]#)

public static function cmdGetId($_cmd) {
		return cmd::byString($_cmd)->getId();
	}

Capture d’écran du 2024-10-02 23-36-07

[2024-10-02 23:35:03][SCENARIO] -- Début : Scenario lance manuellement.
[2024-10-02 23:35:03][SCENARIO] - Exécution du sous-élément de type [condition] : if 7741 == cmdGetId(#[Dev][Dev_Toto][toto]#)
[2024-10-02 23:35:03][SCENARIO] Evaluation de la condition : [7741 == 7741] = Vrai
[2024-10-02 23:35:03][SCENARIO] - Exécution du sous-élément de type [action] : then
[2024-10-02 23:35:03][SCENARIO] Fin correcte du scénario

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