Aide sur la nouvelle fonction trigger

Bonjour,

Ces fonctions ne sont jamais écrasées.

Ah OK, merci.
J’imaginais qu’il fallait aller modifier le code du core de jeedom, mais du coup j’imagine que ça se fait ailleurs.
[…] recherche dans la doc […]
Du coup je comprends que cette fonction perso est créée dans data/php/user.function.class.php ?
Après modification j’obtiens ça :

require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

class userFunction {

	public static function plop($_arg1 = '') {
		return 'Argument 1 : ' . $_arg1;
	}

  // Ajout de la fonction permettant de récupérer l'ID d'une commande. Peut être utilisé dans #trigger_id# == cmdGetId(#[objet][equipement][commande]#) et maintenir ainsi la mise à jour automatique du code en cas de modification de nom de commande.
	public static function cmdGetId($_cmd) {
		return cmd::byString($_cmd)->getId();
	}
}

Après test ça fonctionne très bien !
Merci @Jeandhom et @Madcow !

2 « J'aime »

Bonjour Aurélien, bonjour à tous
Sauf erreur de ma part, quand vous dite :

dans l’exemple donné :

l’ID change non ?
Donc ça ne fonctionne pas…?

L’autre cas qui reviens souvent, est le remplacement d’un détecteur par un autre (un vieux z-wave par un nouveau Zigbee ou autre, par exemple), là aussi l’ID de la commande change.
L’outil Remplacé fonctionnera donc partout sauf pour les trigger…

N’est-il pas possible, UNIQUEMENT pour cette fonction de garder la fonction trigger() active dans le futur ?
Ou alors que
'[objet][equipement][commande]'
se comporte comme
#[objet][equipement][commande]#
vis à vis de l’outil Remplacement (que l’outil remplacer le détecte et le remplace) ?

Sur le lien de Jeandhom, on voir, qu’il y a un an, Iperenna soulevait déjà ce souci de remplacement :

Ou, sera-t-il obligatoire de faire la technique de Jeandhom ?
Mais, dans ce cas, il est quand même écris


Du coup, il faudrait simplement que Jeedom mette cette fonction dans les prochaines versions (pour que l’utilisateur lambda n’est pas à faire un truc touchy / délicat = casse Jeedom si erreur ?) et l’indiquer cette technique dans la doc, non ?
Moi ça ne m’embête pas, mais perso, je ne suis pas assez calé / confiant pour faire cela sans confirmation.
Si je fais cela, ça fonctionne ?
Avant / par defaut dans Jeedom :

Apres :

Je peux appuyer sur le bouton « Sauvegarder & Fermer » ?

Bon, j’ai sauvegardé et me suis lancé, ça fonctionne très bien
En résumé…
Il faudra juste savoir si (pas d’urgence, mais ça pourrait être chouette de trancher) :

  1. trigger(#[objet][equipement][commande]#)==1 serra effectivement conservé
  2. On utilise maintenant #trigger_id#==cmdGetId(#[objet][equipement][commande]#)
    avec deux possiblilités :
    a. Jeedom SAS implante la fonction perso → rien à faire pour les utilisateur, simplement utilisé la fonction
    b. Tout reste ainsi - > L’utilisateur doit aller dans Réglage / Système / Configuration / >_OS/DB / Editeur de fichier → Bouton Ouvrir / Dossier : Data / PHP / Fichier « user.function.class.php »
    modifier en ajoutant :
// Fonction perso :
//------ Permet de récupérer l'ID du nom humain d'une commande :
 	public static function cmdGetId($_cmd) {
		return cmd::byString($_cmd)->getId();
	}

selon

(plus qu’a copié coller dans la doc… :slight_smile: Oui, oui, c’est ma résolution 2026, savoir faire des PR dans le Github :slight_smile: )

Puis le test :
Capture d’écran 2025-12-15 à 15.20.12
devient :

PS : Pour retrouver ses « trigger » : Outils / Recherche :

2 « J'aime »

Merci Henri. Je vais rester sur la solution 1 qui fonctionne… et on verra la décision de l’équipe Jeedom